npm Package Scraper — Downloads, Maintainers & Metadata
Pricing
from $2.30 / 1,000 results
npm Package Scraper — Downloads, Maintainers & Metadata
Scrape npm packages: name, version, description, keywords, license, repository, homepage, dependencies, version count, created/updated dates, monthly downloads, quality/popularity scores and maintainers with emails. Search by keyword or pass package names. For dev market research and lead gen.
Pricing
from $2.30 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
22 days ago
Last modified
Categories
Share
Scrape npm packages at scale: name, version, description, keywords, license, repository, dependencies, version history, created/updated dates, download counts, quality/popularity scores and maintainers with emails. Search by keyword or pass exact package names. Clean JSON/CSV/Excel in seconds. Built for JavaScript ecosystem research, dependency intelligence and developer lead generation.
What This Actor Does
Search the npm registry or pass package names and get one clean record per package:
- Identity — name, latest version, description, keywords, license
- Popularity — download count (day/week/month) and npm's quality, popularity and maintenance scores
- Code — repository, homepage, bugs/issues URL, dependency & dev-dependency counts, published version count
- Timeline — first-published and last-updated dates
- People — last publisher and maintainers with emails — a built-in developer lead layer
Why Use This
- Measure adoption. Download counts and scores for any package or search — rank the ecosystem.
- Dependency & supply-chain intelligence. Licenses, dependencies, versions and update cadence at a glance.
- Developer lead generation. Maintainer emails and publishers for outreach, hiring and partnerships.
- Open and free. Reads the public npm registry and downloads API — no key, no login, no anti-bot.
Quick Start
Run it in the console (no code)
- Add search terms (e.g.
react,csv parser) and/or exact package names. - Keep downloads and registry details on for popularity and maintainer data.
- Set Max packages, click Start, export as JSON, CSV, Excel or HTML.
Rank packages by downloads (Python)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("YOUR_USERNAME/npm-package-scraper").call(run_input={"searchTerms": ["orm"], "downloadPeriod": "last-month", "maxItems": 500,})for p in sorted(client.dataset(run["defaultDatasetId"]).list_items().items, key=lambda x: x.get("downloads") or 0, reverse=True):print(p["downloads"], "·", p["name"], "·", p["version"], "·", p["maintainerEmails"])
Audit specific packages (Python)
run = client.actor("YOUR_USERNAME/npm-package-scraper").call(run_input={"packageNames": ["express", "@babel/core", "lodash"],})
Input Parameters
| Field | Type | Description |
|---|---|---|
searchTerms | array | Keywords to search npm (supports qualifiers like keywords:cli, author:x). |
packageNames | array | Exact package names (e.g. express, @babel/core). |
includeDetails | boolean | Fetch registry data: maintainer emails, repository, dependencies, versions, dates. |
includeDownloads | boolean | Fetch download counts. |
downloadPeriod | string | last-day, last-week or last-month. |
maxItems | integer | Max packages across all searches. 0 = no limit. |
maxPagesPerSearch | integer | Pagination cap per search (250 per page). |
proxyConfiguration | object | Apify Proxy. Datacenter is enough (public API). |
Output
{"name": "express", "version": "5.2.1","description": "Fast, unopinionated, minimalist web framework","keywords": ["express", "framework", "web"], "license": "MIT","downloads": 561397501, "downloadPeriod": "last-month","homepage": "https://expressjs.com/","repository": "https://github.com/expressjs/express","npmUrl": "https://www.npmjs.com/package/express","dependenciesCount": 28, "versionCount": 289,"createdAt": "2010-12-29T...", "modifiedAt": "2026-10-01T...","maintainers": [{"name": "wesleytodd", "email": "wes@wesleytodd.com"}],"maintainerEmails": "wes@wesleytodd.com; npm@jonchurch.com","popularityScore": 0.95, "qualityScore": 0.9, "maintenanceScore": 0.9}
Use Cases
- Ecosystem & adoption research — rank packages by downloads and scores for any niche.
- Dependency & supply-chain intelligence — licenses, dependencies and update cadence.
- Developer lead generation — maintainer emails and publishers for outreach and hiring.
- Competitive & trend analysis — track versions, downloads and maintenance over time.
Tips
downloadPeriodswitches the download window (day/week/month).maintainerEmailsis a flat, ready-to-use lead field;maintainershas the structured list.popularityScore/qualityScore/maintenanceScoreare npm's own 0–1 signals for ranking.- Search qualifiers work in
searchTerms(e.g.keywords:cli,author:sindresorhus). - Schedule it with Apify Schedules to track adoption over time.
Frequently Asked Questions
Do I need an account or key? No. The npm registry and downloads API are public and free — no login, key or anti-bot.
Are maintainer emails included?
Yes — the registry exposes maintainer names and public emails, returned both as a structured list and a flat maintainerEmails field.
Can I get download counts for a custom range?
This Actor supports day, week and month windows via downloadPeriod.
Does it support scoped packages?
Yes — pass names like @babel/core.
What export formats are supported? JSON, CSV, Excel, HTML, or via API — plus Google Sheets, webhooks, Make and Zapier.
Legal & Responsible Use
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by npm, Inc. or GitHub. It reads only public registry data. Maintainer emails are published by the registry — use them responsibly and in line with applicable terms and data-protection laws.