diff --git a/lib/manager/npm/registry.js b/lib/manager/npm/registry.js
index d9e0d08f9818d08b2033d2979f5ece2f96a3e1b4..fb8ae67fdd97c8fef152d88048be660823822ed0 100644
--- a/lib/manager/npm/registry.js
+++ b/lib/manager/npm/registry.js
@@ -94,6 +94,10 @@ async function getDependency(name) {
       logger.info({ err, name }, `Dependency not found`);
       return null;
     }
+    if (err.statusCode >= 500 && err.statusCode < 600) {
+      logger.info({ err }, 'npm registry failure');
+      throw new Error('registry-failure');
+    }
     logger.warn({ err, name }, 'Unknown npm lookup error');
     return null;
   }
diff --git a/test/manager/npm/registry.spec.js b/test/manager/npm/registry.spec.js
index 0d1df746ad9ca7a7c918978a28065f860fda8d6d..a775a16af4aa453dffbffb0e03a0bdeb25176cee 100644
--- a/test/manager/npm/registry.spec.js
+++ b/test/manager/npm/registry.spec.js
@@ -59,6 +59,18 @@ describe('api/npm', () => {
     const res = await npm.getDependency('foobar');
     expect(res).toBeNull();
   });
+  it('should throw error for 5xx', async () => {
+    nock('https://registry.npmjs.org')
+      .get('/foobar')
+      .reply(503);
+    let e;
+    try {
+      await npm.getDependency('foobar');
+    } catch (err) {
+      e = err;
+    }
+    expect(e).toBeDefined();
+  });
   it('should send an authorization header if provided', async () => {
     registryAuthToken.mockImplementation(() => ({
       type: 'Basic',