diff --git a/lib/datasource/go/__snapshots__/index.spec.ts.snap b/lib/datasource/go/__snapshots__/index.spec.ts.snap
index 805059866ed926e6962cbf27d121c43fd3bd14c4..88edf444574ea12be64c32cd1eb977f82e7f5511 100644
--- a/lib/datasource/go/__snapshots__/index.spec.ts.snap
+++ b/lib/datasource/go/__snapshots__/index.spec.ts.snap
@@ -54,27 +54,4 @@ Array [
 
 exports[`datasource/go/index getDigest support bitbucket digest 1`] = `"123"`;
 
-exports[`datasource/go/index getDigest support bitbucket digest 2`] = `
-Array [
-  Object {
-    "headers": Object {
-      "accept": "application/json",
-      "accept-encoding": "gzip, deflate, br",
-      "host": "api.bitbucket.org",
-      "user-agent": "RenovateBot/0.0.0-semantic-release (https://github.com/renovatebot/renovate)",
-    },
-    "method": "GET",
-    "url": "https://api.bitbucket.org/2.0/repositories/golang/text",
-  },
-  Object {
-    "headers": Object {
-      "accept": "application/json",
-      "accept-encoding": "gzip, deflate, br",
-      "host": "api.bitbucket.org",
-      "user-agent": "RenovateBot/0.0.0-semantic-release (https://github.com/renovatebot/renovate)",
-    },
-    "method": "GET",
-    "url": "https://api.bitbucket.org/2.0/repositories/golang/text/commits/master",
-  },
-]
-`;
+exports[`datasource/go/index getDigest support bitbucket digest 2`] = `Array []`;
diff --git a/lib/datasource/go/base.ts b/lib/datasource/go/base.ts
index 3b84220bab5f59ed5c538f5a86d4f09df0e8bc76..1dfc69c12f58563061c205958988e906bc85dd5d 100644
--- a/lib/datasource/go/base.ts
+++ b/lib/datasource/go/base.ts
@@ -5,9 +5,9 @@ import * as hostRules from '../../util/host-rules';
 import { Http } from '../../util/http';
 import { regEx } from '../../util/regex';
 import { trimTrailingSlash } from '../../util/url';
+import { BitBucketTagsDatasource } from '../bitbucket-tags';
 import * as github from '../github-tags';
 import { GitlabTagsDatasource } from '../gitlab-tags';
-import { bitbucket } from './common';
 import type { DataSource } from './types';
 
 // TODO: figure out class hierarchy (#10532)
@@ -47,7 +47,7 @@ export class BaseGoDatasource {
       const split = goModule.split('/');
       const lookupName = split[1] + '/' + split[2];
       return {
-        datasource: bitbucket.id,
+        datasource: BitBucketTagsDatasource.id,
         lookupName,
         registryUrl: 'https://bitbucket.org',
       };
diff --git a/lib/datasource/go/common.ts b/lib/datasource/go/common.ts
index 3a81f223c8b39a6cec4178d3eea6fa6229c121ca..335d4ef952aec008cb559f719df81b348e4ee567 100644
--- a/lib/datasource/go/common.ts
+++ b/lib/datasource/go/common.ts
@@ -6,8 +6,6 @@ import { getSourceUrl as gitlabSourceUrl } from '../gitlab-tags/util';
 
 import type { DataSource } from './types';
 
-export const bitbucket = new BitBucketTagsDatasource();
-
 // eslint-disable-next-line typescript-enum/no-enum
 export enum GoproxyFallback {
   WhenNotFoundOrGone = ',',
@@ -26,7 +24,7 @@ export function getSourceUrl(dataSource?: DataSource): string | undefined {
       return gitlabSourceUrl(lookupName, registryUrl);
     }
 
-    if (datasource === bitbucket.id) {
+    if (datasource === BitBucketTagsDatasource.id) {
       return BitBucketTagsDatasource.getSourceUrl(lookupName, registryUrl);
     }
   }
diff --git a/lib/datasource/go/index.spec.ts b/lib/datasource/go/index.spec.ts
index ce2348f934410dc957ca54eeedf81cfb9a47bada..b9020f5b087c183904b3836f0b4978aed8e5b8bd 100644
--- a/lib/datasource/go/index.spec.ts
+++ b/lib/datasource/go/index.spec.ts
@@ -8,12 +8,16 @@ const hostRules = mocked(_hostRules);
 
 const getReleasesDirectMock = jest.fn();
 const getDigestGitlabMock = jest.fn();
+const getDigestBitbucketMock = jest.fn();
 jest.mock('./releases-direct', () => {
   return {
     GoDirectDatasource: jest.fn().mockImplementation(() => ({
       gitlab: {
         getDigest: () => getDigestGitlabMock(),
       },
+      bitbucket: {
+        getDigest: () => getDigestBitbucketMock(),
+      },
       getReleases: () => getReleasesDirectMock(),
     })),
   };
@@ -152,23 +156,7 @@ describe('datasource/go/index', () => {
       expect(httpMock.getTrace()).toMatchSnapshot();
     });
     it('support bitbucket digest', async () => {
-      httpMock
-        .scope('https://api.bitbucket.org')
-        .get('/2.0/repositories/golang/text')
-        .reply(200, { mainbranch: { name: 'master' } });
-      httpMock
-        .scope('https://api.bitbucket.org')
-        .get('/2.0/repositories/golang/text/commits/master')
-        .reply(200, {
-          pagelen: 1,
-          values: [
-            {
-              hash: '123',
-              date: '2020-11-19T09:05:35+00:00',
-            },
-          ],
-          page: 1,
-        });
+      getDigestBitbucketMock.mockResolvedValueOnce('123');
       const res = await datasource.getDigest(
         {
           lookupName: 'bitbucket.org/golang/text',
diff --git a/lib/datasource/go/index.ts b/lib/datasource/go/index.ts
index d7ba8e3bb0265a1f8f14c343f3b1850a2fe596e0..7ae6da45604b333ef0fef43de4e1c0096ccab829 100644
--- a/lib/datasource/go/index.ts
+++ b/lib/datasource/go/index.ts
@@ -1,10 +1,10 @@
 import { cache } from '../../util/cache/package/decorator';
+import { BitBucketTagsDatasource } from '../bitbucket-tags';
 import { Datasource } from '../datasource';
 import * as github from '../github-tags';
 import { GitlabTagsDatasource } from '../gitlab-tags';
 import type { DigestConfig, GetReleasesConfig, ReleaseResult } from '../types';
 import { BaseGoDatasource } from './base';
-import { bitbucket } from './common';
 import { GoDirectDatasource } from './releases-direct';
 import { GoProxyDatasource } from './releases-goproxy';
 
@@ -60,8 +60,8 @@ export class GoDatasource extends Datasource {
       case github.id: {
         return github.getDigest(source, tag);
       }
-      case bitbucket.id: {
-        return bitbucket.getDigest(source, tag);
+      case BitBucketTagsDatasource.id: {
+        return this.direct.bitbucket.getDigest(source, tag);
       }
       case GitlabTagsDatasource.id: {
         return this.direct.gitlab.getDigest(source, tag);
diff --git a/lib/datasource/go/releases-direct.ts b/lib/datasource/go/releases-direct.ts
index bdce22d9ffd973bc06fecac35ad0b4eec06b9a43..71e9089bcf938a52f3eb732f32a74a586130f3f4 100644
--- a/lib/datasource/go/releases-direct.ts
+++ b/lib/datasource/go/releases-direct.ts
@@ -1,21 +1,24 @@
 import { logger } from '../../logger';
 import { cache } from '../../util/cache/package/decorator';
 import { regEx } from '../../util/regex';
+import { BitBucketTagsDatasource } from '../bitbucket-tags';
 import { Datasource } from '../datasource';
 import * as github from '../github-tags';
 import { GitlabTagsDatasource } from '../gitlab-tags';
 import type { DatasourceApi, GetReleasesConfig, ReleaseResult } from '../types';
 import { BaseGoDatasource } from './base';
-import { bitbucket, getSourceUrl } from './common';
+import { getSourceUrl } from './common';
 
 export class GoDirectDatasource extends Datasource {
   static readonly id = 'go-direct';
 
   gitlab: DatasourceApi;
+  bitbucket: DatasourceApi;
 
   constructor() {
     super(GoDirectDatasource.id);
     this.gitlab = new GitlabTagsDatasource();
+    this.bitbucket = new BitBucketTagsDatasource();
   }
 
   /**
@@ -58,8 +61,8 @@ export class GoDirectDatasource extends Datasource {
         res = await this.gitlab.getReleases(source);
         break;
       }
-      case bitbucket.id: {
-        res = await bitbucket.getReleases(source);
+      case BitBucketTagsDatasource.id: {
+        res = await this.bitbucket.getReleases(source);
         break;
       }
       /* istanbul ignore next: can never happen, makes lint happy */