npm Packages Search Scraper
parseforge/npms-packages-scraper
Developer toolsAutomationOther
Scrapes npm package search results from npms.io by keyword. Returns each package as a flat row with name, description, version, publisher, and quality, popularity, and maintenance scores.
- Total users
- 2
- Monthly active
- 1
- Total runs
- 44
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 12 days ago
Overview
npm Packages Search Scraper
Scrape npm package search results for any keyword, up to a million packages per run. Every package comes with its name, description, version, publisher, and quality scores. No API key or authentication required. Export to CSV, JSON, Excel, or XML.
The npm registry's official search API limits the number of results and the rate at which you can query it. This reads the public npms.io search endpoint directly, which aggregates and scores packages by quality, popularity, and maintenance. Feed it a package name or keyword like react, express, or csv parser, and it returns each matching package in one consistent flat row.
| Who uses it | What they scrape npm for |
|---|---|
| JavaScript developers | Finding the best-rated package for a specific task before adding a dependency. |
| DevOps engineers | Auditing which packages in a category are actively maintained and secure. |
| Security researchers | Scanning the top search results for a keyword to identify abandoned or vulnerable packages. |
| Technical founders | Analyzing package popularity trends to spot emerging developer tools and libraries. |
What it does
This Actor collects npm packages by search keyword and returns each one as a flat row with its name, description, version, publisher, and computed quality metrics.
- ๐ Keyword search: enter any package name or term, from react to csv parser, and get the top matching packages.
- ๐ Quality scores: each result includes the npms.io quality, popularity, and maintenance scores for quick comparison.
- ๐ฆ Package metadata: name, description, version, publisher, and links are returned in a flat, predictable schema.
- โก High throughput: collect up to a million packages in a single run, limited only by the maxItems you set.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with npm data
๐ Vet a package before installing.
A developer searches for a utility like csv parser, scrapes the top 20 results, and compares their maintenance and quality scores to choose the healthiest dependency.
๐ Monitor ecosystem trends.
A DevRel professional runs a weekly scrape for a keyword like ai or react to track which new libraries are gaining popularity and community traction.
๐ก๏ธ Audit supply chain health.
A security engineer scrapes the top 500 packages for a framework keyword and flags any with low maintenance scores for deeper review.
๐งช Build a package recommendation engine.
A startup founder collects thousands of packages across multiple keywords to seed a dataset that powers an internal tool for suggesting npm libraries.
Why choose this scraper
| What you get | |
|---|---|
| No API key | Uses the public npms.io endpoint, so you can start scraping immediately without registration. |
| Flat output | Every package is a single row with the same columns, ready for spreadsheets and databases. |
| Quality signals | Includes npms scores for quality, popularity, and maintenance to help you pick the right package. |
| Scalable collection | Set maxItems up to 1,000,000 to gather a broad view of the ecosystem for a keyword. |
How it compares
No other Store actor targets npm the same way, so the honest comparison is with the alternatives teams actually weigh.
| npm Packages Search Scraper | Build it in-house | By hand | |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When npm 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 and set a maximum number of packages to collect. The run stops when it reaches your limit or exhausts the available results. The Input tab lists every parameter.
A first run with the defaults:
{
"searchQuery": "react",
"maxItems": 10
}
A larger pull:
{
"searchQuery": "react",
"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 Packages Search 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 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/npms-packages-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results for my search query?
Check that your searchQuery is spelled correctly and is specific enough. Very obscure or misspelled terms may return zero packages from npms.io. Try a broader or related keyword.
The run stopped before reaching my maxItems limit.
This happens when npms.io has no more results for your keyword. The Actor collects every available match, and if that number is smaller than your maxItems, it stops gracefully.
I am getting fewer results than I see on the npms.io website.
The npms.io API may apply different relevance thresholds than its web frontend. Try a more precise keyword or check if the packages you expect are indexed by npms.io.
The Actor is running slowly or timing out.
Reduce your maxItems to a smaller number and run multiple smaller batches. If the issue persists, the npms.io service may be experiencing high load; wait and retry later.
FAQ
| Question | Answer |
|---|---|
| What is npms.io and how is it different from the official npm search? | npms.io is a community project that analyzes npm packages and scores them on quality, popularity, and maintenance. It provides a cleaner search experience than the official registry and is the data source this Actor reads from. |
| Do I need an npm account or API token to use this scraper? | No. This Actor reads from the public npms.io search endpoint, which does not require authentication, an API key, or an npm user account. |
| What data fields does the scraper return for each package? | Each row includes the package name, description, version, publisher username, and the npms scores for quality, popularity, and maintenance, along with direct links to the package page. |
| Can I scrape all npm packages for a keyword, not the first page? | Yes. The Actor paginates through the npms.io search results automatically and will keep collecting until it reaches the maxItems limit you set or there are no more results. |
| How many packages can I scrape in one run? | You can set maxItems up to 1,000,000. The actual number returned depends on how many packages match your search keyword on npms.io. |
| Is this an official npm, Inc. product? | No. This is an unofficial community scraper that reads publicly available data from npms.io. It is not affiliated with or endorsed by npm, Inc. |
| Can I search for scoped packages like @angular/core? | Yes. You can enter scoped package names or partial scopes as your search query, and the Actor will return matching results from npms.io. |
| What output formats are supported? | You can export your dataset in CSV, JSON, Excel, or XML format directly from the Apify platform after the run completes. |
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 |
|---|---|---|---|
| searchQuery required | string | Required. The search term used to find npm packages (for example react, express, csv parser). | react |
| 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~npms-packages-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} 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.
