badges/shields · error · NotFound

not found

Error message

not found

What it means

The Chrome Web Store badge service throws NotFound with message 'not found' when the extension's user count returned by the scraped Chrome Web Store page is null. It means the extension page could not yield a downloads/users figure, typically because the extension does not exist or the page structure lacks the data.

Source

Thrown at services/chrome-web-store/chrome-web-store-users.service.js:34

        parameters: pathParams({
          name: 'storeId',
          example: 'ogffaloegjglncjfehdfplabnoondfjo',
        }),
      },
    },
  }

  static defaultBadgeData = { label: 'users' }

  static transform(users) {
    return String(users.replaceAll(',', ''))
  }

  async handle({ storeId }) {
    const chromeWebStore = await this.fetch({ storeId })
    const downloads = chromeWebStore.users()
    if (downloads == null) {
      throw new NotFound({ prettyMessage: 'not found' })
    }
    return renderDownloadsBadge({
      downloads: this.constructor.transform(downloads),
    })
  }
}

const ChromeWebStoreDownloads = redirector({
  category: 'downloads',
  route: {
    base: 'chrome-web-store/d',
    pattern: ':storeId',
  },
  transformPath: ({ storeId }) => `/chrome-web-store/users/${storeId}`,
  dateAdded: new Date('2019-02-27'),
})

export { ChromeWebStoreDownloads, ChromeWebStoreUsers }

View on GitHub (pinned to 766fd8bc89)

Solutions

  1. Verify the storeId by opening https://chromewebstore.google.com/detail/<storeId> in a browser and confirming the extension exists and shows a user count
  2. Retry later if the Chrome Web Store was temporarily unavailable or its markup changed
  3. Check for trailing whitespace or wrong ID casing in the badge URL
  4. Report to the service maintainers if the live page shows a user count but the badge still returns 'not found'

Example fix

// before
/badge/chrome-web-store/users/invalid-id
// after
/badge/chrome-web-store/users/nkemmklpomlogoijgonofhndcffbppgb
Defensive patterns

Strategy: validation

Validate before calling

const STORE_ID_RE = /^[a-p]{32}$/;
if (!STORE_ID_RE.test(storeId)) throw new Error(`invalid Chrome Web Store storeId: ${storeId}`);

Type guard

function hasUsers(page) { return page != null && typeof page.users === 'function'; }

Try / catch

try {
  const badge = await fetchBadge(`/chrome-web-store/users/${storeId}`);
} catch (e) {
  if (e.status === 404) console.warn(`extension ${storeId} not found or has no user data`);
  else throw e;
}

Prevention

When it happens

Trigger: Calling the chrome-web-store users badge with a storeId whose extension page cannot be scraped or reports no user count; `chromeWebStore.users()` returns null.

Common situations: Typos or invalid storeId formats, unpublished/removed Chrome extensions, region-restricted extensions, or Chrome Web Store layout changes breaking the scraper.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


AI-assisted analysis of badges/shields@766fd8bc89 (2026-08-30). Data as JSON: /api/errors/3471446f3ee8a8f4. Report an issue: GitHub.