npm Scraper: Package Data, Versions, Downloads & Search
Pricing
from $5.00 / 1,000 package or search hits
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
Maintained by CommunityActor 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:
| Mode | What you get |
|---|---|
| Package details | Version, description, licence, repository, author, maintainers, dependency list and counts, Node requirement, deprecation status, tarball size, file count and download total |
| Version history | Every published version with its publish date, dist-tags, pre-release and deprecation flags, licence, size and file count |
| Daily downloads | One row per day, for any period up to 18 months |
| Registry search | npm 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
isDeprecatedand 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/nameis 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
- Choose What to scrape.
- Add Packages by name or npmjs.com link, or write Search queries.
- 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:
| Result | Price |
|---|---|
| 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,modifiedAtandversionCount. - 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.