npm Registry Scraper
parseforge/npm-registry-scraper
Developer toolsAutomationOther
Searches the npm registry for a keyword and returns each package as a flat row with its name, description, version, weekly downloads, and quality, popularity, and maintenance scores.
- Total users
- 2
- Monthly active
- 1
- Total runs
- 99
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 12 days ago
Overview
npm Registry Scraper
Scrape npm package metadata, download counts, and search results for any keyword, up to a million packages per run. Every package comes with its name, description, version, weekly downloads, and maintenance signals. No API key or rate-limit headaches. Export to CSV, JSON, Excel, or XML.
The npm registry holds every public JavaScript package, but the official search API is rate-limited and the web UI is slow for bulk research. This Actor reads the public registry search endpoint directly, letting you pull package lists by keyword and sort them by popularity, quality, or maintenance. You get a clean dataset of matching packages, ready for analysis.
| Who uses it | What they scrape npm Registry for |
|---|---|
| JavaScript developers | Finding the most popular or best-maintained packages for a task before adding a dependency. |
| DevTool founders | Tracking competitor package growth and weekly download trends over time. |
| Security researchers | Auditing top packages for a keyword to spot abandoned or maliciously named libraries. |
| Open-source maintainers | Benchmarking their own package's popularity and maintenance score against similar libraries. |
What it does
This Actor searches the npm registry for a given keyword and returns each matching package as a flat row with its metadata and download stats.
- ๐ Sort by popularity: rank results by weekly download count to see what the community uses.
- ๐ง Sort by maintenance: prioritize packages that receive frequent updates and have recent commits.
- โญ Sort by quality: surface packages with high code-quality signals like README presence, tests, and linting.
- ๐ฏ Sort by optimal: use npm's own default ranking that balances popularity, quality, and maintenance.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with npm Registry data
๐ Track package trends.
A DevTool founder runs the Actor weekly for 'react' and 'vue' to monitor which ecosystem is gaining more new packages and downloads.
๐ Audit dependency quality.
A security researcher searches for 'authentication' sorted by popularity, then reviews the top 50 packages for unmaintained or typo-squatted libraries.
๐ Benchmark your own package.
An open-source maintainer searches for 'state management' sorted by quality to see where their library ranks and what signals they need to improve.
๐งช Build a package recommendation dataset.
A data scientist collects the top 10,000 packages for 'utility' to train a model that recommends libraries based on download counts and maintenance scores.
Why choose this scraper
| What you get | |
|---|---|
| No API key required | Reads the public registry search, so you skip registration and rate-limit setup. |
| Bulk collection | Pull up to a million package records in one run for large-scale analysis. |
| Fixed flat schema | Every package lands as one row with the same columns, ready for CSV or database import. |
How it compares
No other Store actor targets npm Registry the same way, so the honest comparison is with the alternatives teams actually weigh.
| npm Registry Scraper | Build it in-house | By hand | |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When npm Registry changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |
Configure the run
Drive the Actor with a single search keyword, choose a ranking method, and set a maximum number of packages to collect. The Input tab lists every parameter.
A first run with the defaults:
{
"search": "react",
"sortBy": "popularity",
"maxItems": 10
}
A larger pull:
{
"search": "react",
"sortBy": "popularity",
"maxItems": 200
}
Pricing
Pay-per-result: $0.021 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $2.10 |
| 1,000 results | $21.00 |
| 10,000 results | $210.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the npm Registry Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to npm Registry through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/npm-registry-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting fewer results than my maxItems setting?
The npm registry only returns packages that match your search term. If the keyword is very specific, there may be fewer matching packages. Try a broader search term.
The run failed with a timeout error.
Large searches can take time. Increase the Actor's timeout in the run settings, or reduce the maxItems value to collect fewer packages per run.
Some packages show zero weekly downloads.
This is accurate data from the registry. New or very niche packages often have low or zero download counts for the trailing seven-day window.
I searched for a package name but got unrelated results.
The npm search endpoint matches keywords in package names, descriptions, and keywords. Use a more specific term or the exact package name to narrow results.
The sort order looks wrong for my results.
Sorting is performed by the npm registry endpoint. If results seem off, try a different sort method or check if the packages have enough data for the chosen ranking to be meaningful.
FAQ
| Question | Answer |
|---|---|
| Does this Actor need an npm account or API token? | No. It reads the public npm registry search endpoint, which does not require authentication or an API key. |
| What data fields does each package row include? | Each row includes the package name, description, latest version, weekly download count, and the computed scores for quality, popularity, and maintenance. |
| Can I search for scoped packages like @angular/core? | Yes. Enter the full scoped name or the scope as your search term, and the Actor will return matching scoped packages. |
| How many packages can I collect in one run? | You can set the maximum up to 1,000,000 packages. The actual number returned depends on how many packages match your search term. |
| What does the 'optimal' sort option do? | It uses npm's default search ranking, which combines text relevance, popularity, quality, and maintenance into one score. |
| How are download counts calculated? | The Actor returns the weekly download count as reported by the npm registry, which reflects the number of downloads in the last seven days. |
| Can I filter by package author or license? | The current version searches by keyword and sorts by ranking. Author and license filters are not available in this Actor. |
| What output formats are supported? | You can export your dataset to CSV, JSON, Excel, or XML from the Apify dataset tab. |
| Is this Actor faster than the npm website search? | It is designed for bulk collection and avoids browser overhead, so it retrieves large result sets more efficiently than clicking through paginated web pages. |
| Does this Actor respect npm's rate limits? | It reads the public search endpoint responsibly. For very large runs, the Actor may take longer to complete to stay within fair-use limits. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by npm, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| search required | string | Search term to find npm packages (e.g. 'react', 'typescript', 'express'). | react |
| sortBy | string (4 options) | Ranking method for search results. | popularity |
| maxItems | integer | How many packages to collect per run. | 10 |
Pricing
from $19.00 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| result | Single result in the default dataset. | $0.019 to $0.021 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~npm-registry-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"search": "react",
"sortBy": "popularity",
"maxItems": 3
}' Examples
Input that runs as-is.
{
"search": "react",
"sortBy": "popularity",
"maxItems": 3
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
