npm Scraper - Packages, Downloads & Maintainer Leads
Pricing
from $3.00 / 1,000 package results
npm Scraper - Packages, Downloads & Maintainer Leads
Scrape the npm registry by keyword or package name. Get version, description, keywords, license, GitHub repo, homepage, weekly/monthly downloads, quality/popularity scores, dependencies and maintainer contact emails as B2B developer leads. No key, no login. Export JSON, CSV, Excel.
Pricing
from $3.00 / 1,000 package results
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
npm Scraper — Packages, Downloads & Maintainer Leads
Search the npm registry by keyword or package name and get a rich, structured record for every package — version, description, keywords, license, GitHub repo, homepage, weekly/monthly downloads, quality & popularity scores, dependencies, and the part other scrapers miss: maintainer contact emails and company domains as ready-to-use B2B developer leads.
No API key, no login, no browser — fast JSON extraction straight from the public npm registry with high reliability.
Why this npm scraper?
The npm registry is the largest software registry in the world, and every package carries publicly published maintainer metadata. This actor merges the search API, the registry detail API, and the downloads API into one clean record — and turns a keyword into a scored lead list of the developers and companies behind the packages.
| Data | Typical scrapers | This actor |
|---|---|---|
| Name, version, description, keywords | ✅ | ✅ |
| GitHub repository + homepage | partial | ✅ |
| Weekly & monthly downloads | ❌ | ✅ |
| Quality / popularity / maintenance scores | ❌ | ✅ |
| Maintainer emails | ❌ | ✅ |
| Company domains (from email addresses) | ❌ | ✅ |
| License, created & last-published dates | ❌ | ✅ opt-in |
| Dependency list + version count | ❌ | ✅ opt-in |
| Deprecation status | ❌ | ✅ opt-in |
| Lead score (0–100) | ❌ | ✅ |
| Monitor mode — only new / updated packages | ❌ | ✅ |
Use cases
- Developer & maintainer lead generation — sell a dev tool, SDK, API, or DevRel service? Search a niche (
stripe,kubernetes,web scraping) and reach package maintainers at their published email, filtered to real company domains. - Developer-tool market research — map every package in a category with downloads, scores, and last-publish dates to size and track a market.
- Supply-chain & dependency intelligence — pull packages, their dependency lists, maintainers, and maintenance health for security and risk analysis.
- Open-source recruiting & partnerships — find the active maintainers behind popular packages by language, topic, or company.
- Package monitoring — schedule recurring runs to watch a keyword for new and freshly-published packages.
How to use
- Sign up for Apify — the free plan is enough to try this actor.
- Open the npm Scraper, enter search queries (or package names), and click Start.
- Watch packages stream into the dataset table.
- Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.
Input
{"searchQueries": ["web scraping", "keywords:cli"],"packageNames": ["express", "@angular/core"],"maxResults": 100,"includeDownloads": true,"includeDetails": true,"includeDependencies": false,"onlyWithEmail": false,"minMonthlyDownloads": 1000,"monitorMode": false}
- searchQueries — keywords; supports npm qualifiers like
keywords:cli,author:sindresorhus,scope:angular. - packageNames — exact package names to fetch directly (always fully detailed).
- maxResults (default 100) — total packages to scrape across all queries.
- includeDownloads (default true) — add last-week and last-month download counts.
- includeDetails (default false) — fetch full registry metadata: license, dates, version count, deprecation, named maintainers, dependency count.
- includeDependencies (default false) — when details are on, output the dependency name list too.
- onlyWithEmail / onlyWithRepository — keep only contactable / source-linked packages.
- minMonthlyDownloads (default 0) — keep only packages above a popularity threshold.
- monitorMode (default false) — output only packages that are new or newly-versioned since the last run.
Output
One record per package (type: "package"):
{"type": "package","name": "got-scraping","version": "4.2.1","description": "HTTP client made for scraping based on got.","keywords": ["scraping", "http", "got", "crawlee"],"npmUrl": "https://www.npmjs.com/package/got-scraping","homepage": "https://github.com/apify/got-scraping#readme","repositoryUrl": "https://github.com/apify/got-scraping","githubRepo": "apify/got-scraping","bugsUrl": "https://github.com/apify/got-scraping/issues","author": { "name": "Apify", "email": "support@apify.com" },"publisher": { "username": "apify-release", "email": "apify-release@apify.com" },"maintainers": [{ "username": "mtrunkat", "email": "marek@apify.com" }],"maintainerEmails": ["support@apify.com", "marek@apify.com"],"maintainerCount": 4,"companyDomains": ["apify.com"],"license": "ISC","createdAt": "2021-03-18T12:00:00.000Z","lastPublishedAt": "2026-05-30T09:14:00.000Z","versionCount": 73,"isDeprecated": false,"dependenciesCount": 7,"weeklyDownloads": 412044,"monthlyDownloads": 1820551,"finalScore": 61,"qualityScore": 78,"popularityScore": 49,"maintenanceScore": 100,"emailFound": true,"leadScore": 88,"searchQuery": "web scraping","scrapedAt": "2026-06-27T12:00:00.000Z"}
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API — start runs, fetch datasets, and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python — official SDKs.
- Schedules — run it daily/weekly with
monitorModeto watch a keyword for new and updated packages, collecting only what changed. - Webhooks — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/npm-scraper').call({searchQueries: ['react components'],maxResults: 200,includeDownloads: true,onlyWithEmail: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} packages & maintainer leads`);
Integrate with any app
Connect the dataset to 5,000+ apps — no code required:
- Make — multi-step automation scenarios.
- Zapier — push new maintainer leads straight into your CRM.
- Slack — get notified when a monitored keyword gains a new package.
- Google Drive / Sheets — auto-export every run to a spreadsheet.
- Airbyte — pipe results into your data warehouse.
- GitHub — trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find popular web-scraping npm packages with a maintainer email and over 100k monthly downloads" and let it run this scraper for you.
More scrapers from scrapesage
Build a complete developer & open-source intelligence stack:
- GitHub Scraper — repos, developers, and contact leads.
- Hugging Face Scraper — models, datasets, spaces, and maker leads.
- Chrome Web Store Scraper — extensions and developer leads.
- WordPress Plugin & Theme Scraper — installs, ratings, and author leads.
- Shopify App Store Scraper — apps, reviews, and developer leads.
- Salesforce AppExchange Scraper — ISV vendor and publisher leads.
- Product Hunt Scraper — launches, makers, and leads.
- Website Contact Scraper — emails, phones, and socials from any website.
Tips
- Best lead quality: turn on
onlyWithEmailand setminMonthlyDownloadsto focus on active, popular packages run by reachable maintainers — then filter thecompanyDomainscolumn for B2B targets. - Search smart: npm qualifiers narrow fast —
keywords:react,author:<username>,scope:<org>, ornot:deprecated. - Cheap vs deep: search results already include maintainer emails and scores, so you get leads without
includeDetails. Add details only when you need license, dates, dependencies, or deprecation. - Recurring monitoring: pair Schedules with
monitorModeto track new and updated packages in a niche without re-paying for unchanged rows.
FAQ
Do I need an npm account or token? No. The actor reads the public npm registry and downloads APIs — no key, account, or login required.
Where do the maintainer emails come from? They are the contact emails npm package authors publish in their own package metadata (maintainers, author, publisher). The actor surfaces and de-duplicates them, and extracts the non-personal company domains from them. Automated/no-reply addresses are filtered out.
Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.
How do I monitor a keyword for new packages? Turn on monitorMode and create a Schedule. Each run outputs only packages that are new or have a new version since the previous run.
A field is null — why? Search results don't include license, dates, dependencies, or deprecation — turn on includeDetails for those. Some packages simply don't link a repository or homepage, have no keywords, or expose no maintainer email. Fields are null only when npm doesn't publish them.
Is scraping npm legal? This actor collects publicly available registry data only. You are responsible for using the data in compliance with applicable laws (GDPR/CCPA for personal data) and npm's terms.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.