npm Scraper: Package Data, Versions, Downloads & Search avatar

npm Scraper: Package Data, Versions, Downloads & Search

Pricing

from $5.00 / 1,000 package or search hits

Go to Apify Store
npm Scraper: Package Data, Versions, Downloads & Search

npm Scraper: Package Data, Versions, Downloads & Search

Export npm package metadata, full version history with publish dates and deprecations, daily download series and registry search results. Official npm APIs, scoped packages supported, no login.

Pricing

from $5.00 / 1,000 package or search hits

Rating

0.0

(0)

Developer

Alex Burton

Alex Burton

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Export npm registry data to JSON, CSV or Excel. Everything comes from npm's official registry and downloads APIs, so there is no HTML parsing, no login and nothing that breaks when npmjs.com is redesigned.

One Actor, four jobs:

ModeWhat you get
Package detailsVersion, description, licence, repository, author, maintainers, dependency list and counts, Node requirement, deprecation status, tarball size, file count and download total
Version historyEvery published version with its publish date, dist-tags, pre-release and deprecation flags, licence, size and file count
Daily downloadsOne row per day, for any period up to 18 months
Registry searchnpm search results with weekly and monthly downloads, dependents count, publisher, maintainers, licence, repository and npm's relevance score

Why use this one

  • Deprecations are first-class. Every version carries isDeprecated and the maintainer's reason. Auditing a dependency tree for abandoned packages is a single run.
  • Daily download series, not just a total. Most npm tools show one number. This gives you a row per day so you can chart adoption or spot the week a package took off.
  • Scoped packages just work. @scope/name is percent-encoded for you, which is the usual reason a hand-rolled npm script returns 404.
  • Sized for speed. Package details reads npm's small per-version document rather than the full package manifest, which for a popular package is close to a megabyte of version history you did not ask for. Turn on Include publish dates only when you need it.
  • Search rows are ready to rank. Each hit carries weekly and monthly downloads and its dependents count beside npm's relevance score, so you can sort by real adoption instead of search order. (npm no longer computes its old quality, popularity and maintenance sub-scores, so they are not included.)

How to use it

  1. Choose What to scrape.
  2. Add Packages by name or npmjs.com link, or write Search queries.
  3. Click Start, then download the results or pull them through the Apify API.

Example input: audit a dependency list

{
"mode": "packageDetails",
"packages": ["express", "lodash", "request", "@apify/consts"],
"includeDownloads": true
}

Example input: chart a year of adoption

{
"mode": "downloads",
"packages": ["vitest"],
"downloadsStart": "2026-01-01",
"downloadsEnd": "2026-10-01"
}

Example input: find the leading packages in a niche

{
"mode": "search",
"searchQueries": ["pdf generation", "keywords:web-scraping"],
"maxResultsPerSearch": 100
}

Output

Each item carries a type field: package, version, downloads or searchHit.

Package

{
"type": "package",
"registry": "npm",
"name": "express",
"version": "5.3.0",
"description": "Fast, unopinionated, minimalist web framework",
"license": "MIT",
"author": "TJ Holowaychuk",
"repositoryUrl": "https://github.com/expressjs/express",
"dependencyCount": 24,
"nodeRequirement": ">= 18",
"isDeprecated": false,
"unpackedSizeBytes": 213655,
"fileCount": 16,
"downloads": 635513489,
"downloadsPeriod": "2026-09-13..2026-10-12",
"url": "https://www.npmjs.com/package/express"
}

Daily downloads

{ "type": "downloads", "registry": "npm", "name": "express", "day": "2026-09-01", "downloads": 24656639 }

Download date ranges

npm serves at most 18 months of daily download counts per request. A longer span is rejected before the run starts rather than coming back empty — split it into shorter runs.

Pricing

Pay only for results:

ResultPrice
Package or search hit$5.00 per 1,000
Version or download day$1.00 per 1,000

Set a maximum spend per run in the run options and the Actor stops cleanly when it is reached.

Limits to know about

These come from npm's APIs, not from this Actor:

  • Download history goes back 18 months per request, and npm's download data starts in 2015. Longer ranges return an error, so split them into several runs.
  • Download counts are per package, not per version. npm does not publish per-version download numbers.
  • Search results are capped at 5,000 per query by the registry, and relevance ranking is npm's own.
  • Publish dates need the full package document. They are off by default because that document is large; turn on Include publish dates to get createdAt, modifiedAt and versionCount.
  • Private and unpublished packages are not available anonymously and return nothing.

FAQ

Do I need an npm account or token? No. Everything here is public registry data.

Does it handle scoped packages? Yes. Pass @scope/name exactly as you would type it.

Can I watch a package daily? Yes. Create a schedule in Apify Console and connect the dataset to Slack, Google Sheets, Zapier or Make.

Why is versionCount empty? It only appears when Include publish dates is on, because it is read from the full package document.

Feedback

Found a bug or need a field that is missing? Open an issue on the Actor's Issues tab.