diff --git a/lib/datasource/terraform-provider/index.ts b/lib/datasource/terraform-provider/index.ts
index 64be934edfee1bc468a3ec210f42ddd2ad701ed8..1ee32ca991cab68cb8e70997c80ddc01f6faf51b 100644
--- a/lib/datasource/terraform-provider/index.ts
+++ b/lib/datasource/terraform-provider/index.ts
@@ -1,5 +1,6 @@
 import URL from 'url';
 import { logger } from '../../logger';
+import * as packageCache from '../../util/cache/package';
 import { Http } from '../../util/http';
 import { GetReleasesConfig, ReleaseResult } from '../common';
 
@@ -88,6 +89,17 @@ export async function getReleases({
 }: GetReleasesConfig): Promise<ReleaseResult | null> {
   const repository = `hashicorp/${lookupName}`;
 
+  const cacheNamespace = 'terraform-provider';
+  const pkgUrl = `${registryUrl}/${repository}`;
+  const cachedResult = await packageCache.get<ReleaseResult>(
+    cacheNamespace,
+    pkgUrl
+  );
+  // istanbul ignore if
+  if (cachedResult) {
+    return cachedResult;
+  }
+
   logger.debug({ lookupName }, 'terraform-provider.getDependencies()');
   let dep: ReleaseResult = null;
   const registryHost = URL.parse(registryUrl).host;
@@ -96,5 +108,7 @@ export async function getReleases({
   } else if (registryHost === 'releases.hashicorp.com') {
     dep = await queryReleaseBackend(lookupName, registryUrl, repository);
   }
+  const cacheMinutes = 30;
+  await packageCache.set(cacheNamespace, pkgUrl, dep, cacheMinutes);
   return dep;
 }