npm Scraper - Packages, Downloads & Maintainer Leads
Pricing
from $0.83 / 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 $0.83 / 1,000 package results
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
npm Scraper — Packages, Downloads & Maintainer Leads
Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by npm, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "npm" is referenced only to describe the publicly available website this Actor collects data from.
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, dependent counts, 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 | ❌ | ✅ |
| npm search relevance score | ❌ | ✅ |
| Maintainer emails | ❌ | ✅ |
| Company domains (from email addresses) | ❌ | ✅ |
| License | ❌ | ✅ |
| Dependent count (packages depending on it) | ❌ | ✅ |
| 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, dependent counts, 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: created date, version count, deprecation, named maintainers, dependency count. (License, download counts and dependent counts ship with every search result — you do not need this switch for those.)
- 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,"dependentsCount": 1284,"finalScore": 1802,"emailFound": true,"leadScore": 88,"searchQuery": "web scraping","scrapedAt": "2026-06-27T12:00:00.000Z"}
How much does it cost to scrape npm?
This Actor uses Apify's pay-per-event pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:
- Package result - One npm package: metadata, version, downloads, GitHub repo, scores and maintainer email leads.
- Package details - Full registry enrichment per package: license, created/published dates, version count, dependencies and named maintainers.
The current price of each event is shown on the Pricing tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.
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.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
- Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
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, license, weekly/monthly downloads and dependent counts, so you get full-fat leads without
includeDetails. Add details only when you need created dates, dependencies, version count, 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 created dates, dependencies, version count, 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. qualityScore / popularityScore / maintenanceScore are always null: npm retired its per-package quality scoring and the API now returns a constant placeholder for all three, so this actor emits an honest null rather than a fabricated number — use monthlyDownloads and dependentsCount for popularity, and lastPublishedAt + isDeprecated for maintenance. 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.
Data & lawful use
This Actor reads only what npm publishes to logged-out visitors: it does not log in, use cookies or session tokens, create accounts, or reach anything behind a sign-in. Names, handles, bios and engagement figures are public, but they relate to identifiable people, so treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for research, marketing analytics or B2B prospecting), honour access and deletion requests, and do not use the output for spam or unsolicited messaging.
Under Apify's Standard Actor Contract, which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.
Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by npm, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.
"npm" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official npm product, is not authorised or certified by npm, Inc., and does not distribute npm software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.
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.