diff --git a/lib/datasource/packagist/__snapshots__/index.spec.ts.snap b/lib/datasource/packagist/__snapshots__/index.spec.ts.snap
index 5cae6de70ce742ad483b2ff7a73b5e9512fb80ad..fa9942fe84446c6489eb82f35e2b7dca97d482c2 100644
--- a/lib/datasource/packagist/__snapshots__/index.spec.ts.snap
+++ b/lib/datasource/packagist/__snapshots__/index.spec.ts.snap
@@ -374,7 +374,47 @@ Object {
 }
 `;
 
-exports[`datasource/packagist getReleases supports providers packages 1`] = `
+exports[`datasource/packagist getReleases supports provider-includes 1`] = `
+Object {
+  "homepage": "https://wordpress.org/plugins/1beyt/",
+  "name": "wpackagist-plugin/1beyt",
+  "releases": Array [
+    Object {
+      "gitRef": "1.0",
+      "releaseTimestamp": undefined,
+      "version": "1.0",
+    },
+    Object {
+      "gitRef": "1.1",
+      "releaseTimestamp": undefined,
+      "version": "1.1",
+    },
+    Object {
+      "gitRef": "1.4",
+      "releaseTimestamp": undefined,
+      "version": "1.4",
+    },
+    Object {
+      "gitRef": "1.5",
+      "releaseTimestamp": undefined,
+      "version": "1.5",
+    },
+    Object {
+      "gitRef": "1.5.1",
+      "releaseTimestamp": undefined,
+      "version": "1.5.1",
+    },
+    Object {
+      "gitRef": "dev-trunk",
+      "releaseTimestamp": "2018-09-03 21:31:30",
+      "version": "dev-trunk",
+    },
+  ],
+  "sourceUrl": "https://plugins.svn.wordpress.org/1beyt/",
+}
+`;
+
+exports[`datasource/packagist getReleases supports providers 1`] = `
 Object {
   "homepage": "https://wordpress.org/plugins/1beyt/",
   "name": "wpackagist-plugin/1beyt",
diff --git a/lib/datasource/packagist/index.spec.ts b/lib/datasource/packagist/index.spec.ts
index b560d8a3c4624c1613ee732ac34da5e7b9a3c26a..355f976d845f7c1b565d0997fb30af2ff9aabd72 100644
--- a/lib/datasource/packagist/index.spec.ts
+++ b/lib/datasource/packagist/index.spec.ts
@@ -130,7 +130,7 @@ describe('datasource/packagist', () => {
       expect(res).toMatchSnapshot();
       expect(res).not.toBeNull();
     });
-    it('supports providers packages', async () => {
+    it('supports provider-includes', async () => {
       const packagesJson = {
         packages: [],
         'providers-url': '/p/%package%$%hash%.json',
@@ -169,7 +169,7 @@ describe('datasource/packagist', () => {
       expect(res).toMatchSnapshot();
       expect(res).not.toBeNull();
     });
-    it('handles providers packages miss', async () => {
+    it('handles provider-includes miss', async () => {
       const packagesJson = {
         packages: [],
         'providers-url': '/p/%package%$%hash%.json',
@@ -207,6 +207,61 @@ describe('datasource/packagist', () => {
       });
       expect(res).toBeNull();
     });
+    it('supports providers', async () => {
+      const packagesJson = {
+        packages: [],
+        'providers-url': '/p/%package%$%hash%.json',
+        providers: {
+          'wpackagist-plugin/1337-rss-feed-made-for-sharing': {
+            sha256:
+              'e9b6c98c63f99e59440863a044cc80dd9cddbf5c426b05003dba98983b5757de',
+          },
+          'wpackagist-plugin/1beyt': {
+            sha256:
+              'b574a802b5bf20a58c0f027e73aea2a75d23a6f654afc298a8dc467331be316a',
+          },
+        },
+      };
+      got.mockReturnValueOnce({
+        body: packagesJson,
+      });
+      got.mockReturnValueOnce({
+        body: JSON.parse(beytJson),
+      });
+      const res = await packagist.getReleases({
+        ...config,
+        lookupName: 'wpackagist-plugin/1beyt',
+      });
+      expect(res).toMatchSnapshot();
+      expect(res).not.toBeNull();
+    });
+    it('handles providers miss', async () => {
+      const packagesJson = {
+        packages: [],
+        'providers-url': '/p/%package%$%hash%.json',
+        providers: {
+          'wpackagist-plugin/1337-rss-feed-made-for-sharing': {
+            sha256:
+              'e9b6c98c63f99e59440863a044cc80dd9cddbf5c426b05003dba98983b5757de',
+          },
+          'wpackagist-plugin/1beyt': {
+            sha256:
+              'b574a802b5bf20a58c0f027e73aea2a75d23a6f654afc298a8dc467331be316a',
+          },
+        },
+      };
+      got.mockReturnValueOnce({
+        body: packagesJson,
+      });
+      got.mockReturnValueOnce({
+        body: JSON.parse(beytJson),
+      });
+      const res = await packagist.getReleases({
+        ...config,
+        lookupName: 'some/other',
+      });
+      expect(res).toBeNull();
+    });
     it('processes real versioned data', async () => {
       got.mockReturnValueOnce({
         body: JSON.parse(mailchimpJson),
diff --git a/lib/datasource/packagist/index.ts b/lib/datasource/packagist/index.ts
index 843ed725b53a1778ca266c2cec33a912afcc3858..80fd6929d2f1c0d48b72a15eb523942108d605d3 100644
--- a/lib/datasource/packagist/index.ts
+++ b/lib/datasource/packagist/index.ts
@@ -29,6 +29,7 @@ interface PackageMeta {
   includes?: Record<string, { sha256: string }>;
   packages: Record<string, RegistryFile>;
   'provider-includes': Record<string, { sha256: string }>;
+  providers: Record<string, { sha256: string }>;
   'providers-url'?: string;
 }
 
@@ -38,6 +39,7 @@ interface RegistryFile {
 }
 interface RegistryMeta {
   files?: RegistryFile[];
+  providerPackages: Record<string, string>;
   providersUrl?: string;
   includesFiles?: RegistryFile[];
   packages?: Record<string, RegistryFile>;
@@ -48,7 +50,9 @@ async function getRegistryMeta(regUrl: string): Promise<RegistryMeta | null> {
     const url = URL.resolve(regUrl.replace(/\/?$/, '/'), 'packages.json');
     const opts = getHostOpts(url);
     const res = (await http.getJson<PackageMeta>(url, opts)).body;
-    const meta: RegistryMeta = {};
+    const meta: RegistryMeta = {
+      providerPackages: {},
+    };
     meta.packages = res.packages;
     if (res.includes) {
       meta.includesFiles = [];
@@ -60,8 +64,10 @@ async function getRegistryMeta(regUrl: string): Promise<RegistryMeta | null> {
         meta.includesFiles.push(file);
       }
     }
-    if (res['providers-url'] && res['provider-includes']) {
+    if (res['providers-url']) {
       meta.providersUrl = res['providers-url'];
+    }
+    if (res['provider-includes']) {
       meta.files = [];
       for (const [key, val] of Object.entries(res['provider-includes'])) {
         const file = {
@@ -71,6 +77,11 @@ async function getRegistryMeta(regUrl: string): Promise<RegistryMeta | null> {
         meta.files.push(file);
       }
     }
+    if (res.providers) {
+      for (const [key, val] of Object.entries(res.providers)) {
+        meta.providerPackages[key] = val.sha256;
+      }
+    }
     return meta;
   } catch (err) {
     if (err.code === 'ETIMEDOUT') {
@@ -176,8 +187,13 @@ async function getAllPackages(regUrl: string): Promise<AllPackages | null> {
     global.repoCache[`packagist-${regUrl}`] = null;
     return null;
   }
-  const { packages, providersUrl, files, includesFiles } = registryMeta;
-  const providerPackages: Record<string, string> = {};
+  const {
+    packages,
+    providersUrl,
+    files,
+    includesFiles,
+    providerPackages,
+  } = registryMeta;
   if (files) {
     const queue = files.map((file) => (): Promise<PackagistFile> =>
       getPackagistFile(regUrl, file)