Developer Tools

Package Registries API API

The Package Registries API returns npm and PyPI package data as clean JSON.

7 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary package endpoint returns a package's name, latest version, description, license, homepage, repository, keywords, maintainers and dependencies, and you can list versions, pull a specific version, resolve dependencies, read download stats, search and look up a maintainer. It is built for developer tools, dependency dashboards and supply-chain workflows that need normalized npm and PyPI metadata from one endpoint. One ReefAPI key, one shared credit pool, the standard envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/packages/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "registry": "npm",
    "query": "fastapi"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "packages",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 929.8,
    "record_count": 20,
    "bytes": 18608,
    "cache_hit": false,
    "registry": "npm",
    "query": "fastapi",
    "page": 1,
    "page_size": 20,
    "from": 0,
    "next_from": 20,
    "total": 1156,
    "has_more": true
  },
  "data": {
    "results": [
      {
        "registry": "npm",
        "name": "fastapi",
        "version": "0.0.8",
        "description": "A simple CLI utility for quickly creating Express-based servers with a single configuration file",
        "license": "ISC",
        "keywords": [
          "express",
          "api",
          "server"
        ],
        "maintainers": [
          {
            "email": "[trimmed-depth]",
            "username": "[trimmed-depth]"
          }
        ],
        "publisher": {
          "email": "[redacted-email]",
          "username": "timambler"
        },
        "date": "[redacted-phone]T16:12:09.755Z",
        "links": {
          "homepage": "https://github.com/tkambler/fastapi#readme",
          "repository": "git+https://github.com/tkambler/fastapi.git",
          "bugs": "https://github.com/tkambler/fastapi/issues",
          "npm": "https://www.npmjs.com/package/fastapi"
        },
        "score": {
          "final": 928.23816,
          "detail": {
            "popularity": "[trimmed-depth]",
            "quality": "[trimmed-depth]",
            "maintenance": "[trimmed-depth]"
          }
        },
        "search_score": 928.23816,
        "downloads": 2202,
        "flags": {
          "insecure": 0
        }
      },
      {
        "registry": "npm",
        "name": "fastapi-rtk",
        "version": "2.10.2",
        "description": "A React component library for FastAPI in combination with FastAPI React Toolkit backend, built with Mantine, JsonForms, and Zustand.",
        "license": "MIT",
        "keywords": [
          "fastapi",
          "react",
          "component"
        ],
        "maintainers": [
          {
            "email": "[trimmed-depth]",
            "username": "[trimmed-depth]"
          }
        ],
        "publisher": {
          "email": "[redacted-email]",
          "actor": {
            "name": "[trimmed-depth]",
            "type": "[trimmed-depth]",
            "email": "[trimmed-depth]"
          },
          "username": "dtacs"
        },
        "date": "[redacted-phone]T12:54:47.152Z",
        "links": {
          "npm": "https://www.npmjs.com/package/fastapi-rtk"
        },
        "score": {
          "final": 344.55225,
          "detail": {
            "popularity": "[trimmed-depth]",
            "quality": "[trimmed-depth]",
            "maintenance": "[trimmed-depth]"
          }
        },
        "search_score": 344.55225,
        "downloads": 6613,
        "flags": {
          "insecure": 0
        }
      },
      {
        "registry": "npm",
        "name": "@kernlang/fastapi",
        "version": "3.5.1",
        "description": "Kern FastAPI Python backend transpiler",
        "license": "AGPL-3.0",
        "keywords": [
          "kern",
          "llm",
          "fastapi"
        ],
        "maintainers": [
          {
            "email": "[trimmed-depth]",
            "username": "[trimmed-depth]"
          }
        ],
        "publisher": {
          "email": "[redacted-email]",
          "username": "cukasn"
        },
        "date": "[redacted-phone]T21:05:37.659Z",
        "links": {
          "npm": "https://www.npmjs.com/package/@kernlang/fastapi"
        },
        "score": {
          "final": 255.54477,
          "detail": {
            "popularity": "[trimmed-depth]",
            "quality": "[trimmed-depth]",
            "maintenance": "[trimmed-depth]"
          }
        },
        "search_score": 255.54477,
        "downloads": 660,
        "flags": {
          "insecure": 0
        }
      }
    ]
  }
}
Actions

What the Package Registries API API does

ActionDescriptionConcrete use caseKey params
packagefull package metadata (latest version normalized)Ops teams call package to get full package metadata (latest version normalized).registry, name
versionspaginated version list for a packageDeveloper tools call versions to get paginated version list for a package.registry, name, page, page_size
versionsingle version metadataValidation workflows call version to get single version metadata.registry, name, version
dependenciesruntime + dev dependencies for a version (latest if omitted)Data-quality teams call dependencies to get runtime + dev dependencies for a version (latest if omitted).registry, name, version
downloadsdownload statistics (npm: period=last-day|week|month|year; pypi: recent day/week/month)Ops teams call downloads to get download statistics (npm.registry, name, period
searchsearch packages (npm: registry API; pypi: libraries.io→HTML→ranked simple-index+enrich)Developer tools call search to search packages (npm.registry, query, page, page_size, from
maintainermaintainer/author records for a packageValidation workflows call maintainer to get maintainer/author records for a package.registry, name
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/packages/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"registry":"npm","query":"fastapi"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.packages.search with {"registry":"npm","query":"fastapi"}.
Use cases

Who uses this API and why

  • Dependency dashboards call package and versions to track a library's releases and license.
  • Supply-chain tools use dependencies to map a package's full dependency tree.
  • Developer products use downloads and search to rank and compare packages by popularity.
FAQ

Questions developers ask before integrating

What is the Package Registries API API?

Package Registries API API is a ReefAPI endpoint group for package registries api It returns live JSON through POST requests under /packages/v1.

Is the Package Registries API API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Package Registries API calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Package Registries API login or account?

No login to Package Registries API is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Package Registries API data?

The page example is captured from a live package call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Package Registries API API use?

Package Registries API actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Package Registries API from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call packages actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Package Registries API API a Package Registries API scraper?

It is the managed alternative to a DIY Package Registries API scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same package registries api back as clean JSON.

Why does my Package Registries API scraper keep getting blocked?

Most Package Registries API scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / packages

Package Registries API

Package Registries API

base /packages/v17 endpoints
post/packages/v1/package1 credit

full package metadata (latest version normalized)

ParameterAllowed / rangeDescription
registryrequirednpm · pypi · node · nodejs · python · pipWhich package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)
namerequiredExact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.
Try in playground →
post/packages/v1/versions1 credit

paginated version list for a package

ParameterAllowed / rangeDescription
registryrequirednpm · pypi · node · nodejs · python · pipWhich package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)
namerequiredExact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.
page = 1optional1–1-based page number for paginated lists (versions / search).
page_size = 50optional1–250Results per page (1-250, default 50). Larger values are clamped.
Try in playground →
post/packages/v1/version1 credit

single version metadata

ParameterAllowed / rangeDescription
registryrequirednpm · pypi · node · nodejs · python · pipWhich package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)
namerequiredExact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.
versionrequiredExact version string to fetch (e.g. '18.2.0', '2.31.0').
Try in playground →
post/packages/v1/dependencies1 credit

runtime + dev dependencies for a version (latest if omitted)

ParameterAllowed / rangeDescription
registryrequirednpm · pypi · node · nodejs · python · pipWhich package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)
namerequiredExact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.
versionoptionalOptional exact version; omit to use the latest published version.
Try in playground →
post/packages/v1/downloads1 credit

download statistics (npm: period=last-day|week|month|year; pypi: recent day/week/month)

ParameterAllowed / rangeDescription
registryrequirednpm · pypi · node · nodejs · python · pipWhich package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)
namerequiredExact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.
period = last-monthoptionallast-day · last-week · last-month · last-yearnpm download window (rejects unknown values). Ignored for PyPI, which always returns recent last-day/last-week/last-month totals.
Try in playground →
post/packages/v1/maintainer1 credit

maintainer/author records for a package

ParameterAllowed / rangeDescription
registryrequirednpm · pypi · node · nodejs · python · pipWhich package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)
namerequiredExact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.
Try in playground →