npm Packages Search Scraper
Pricing
from $0.07 / 1,000 package results
npm Packages Search Scraper
Search npm packages and export registry metadata, popularity scores, maintainers, repository links, and download counts.
Pricing
from $0.07 / 1,000 package results
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Search npm packages and export public registry metadata, popularity scores, maintainer usernames, repository links, and download-count snapshots. The Actor uses npm's public registry and downloads APIs, so it is fast, browserless, and suitable for scheduled monitoring.
Use it for software supply-chain research, developer ecosystem analysis, DevRel/content planning, dependency shortlist exports, and package popularity reports.
At a glance
- Primary job: Turn npm search terms or known package names into structured package rows.
- Input: A keyword query, direct package names, result limit, and optional download-count enrichment.
- Output: One dataset row per npm package with metadata, links, scores, maintainers, downloads, and status.
- Best for: Package discovery, dependency monitoring, supply-chain shortlist exports, and recurring data snapshots.
Common workflows
- Find packages by topic: Search keywords such as
react,eslint plugin, ordate formattingand export ranked packages. - Monitor known dependencies: Fetch packages such as
react,vite, andtypescripton a schedule and compare download-count snapshots. - Build supply-chain shortlists: Export repository links, maintainer usernames, scores, and popularity metrics before manual review.
- Automate reporting: Send Apify dataset exports to CSV, JSON, Excel, webhooks, API clients, or MCP-compatible AI agents.
Input recipes
- Small smoke test:
query: "react",maxItems: 10,includeDownloads: true. - Known-package monitoring:
packageNames: ["react", "vite", "typescript"],includeDownloads: true. - Supply-chain shortlist:
query: "eslint plugin",maxItems: 100,includeMaintainers: true,dedupe: true.
What data can you extract?
| Field | Description |
|---|---|
packageName | npm package name, including scope when present. |
scope | Scope such as @types, or null for unscoped packages. |
version | Latest package version from npm. |
description, keywords, license | Public package metadata when available. |
publisherUsername, maintainerUsernames | Public npm usernames exposed by registry/search responses. |
weeklyDownloads, monthlyDownloads, downloadsLastMonth | Download metrics from npm search/download APIs. |
dependents | Dependent count when returned by npm search. |
scoreFinal, scorePopularity, scoreQuality, scoreMaintenance, searchScore | npm search ranking and score signals. |
homepageUrl, repositoryUrl, bugsUrl, npmUrl | Useful package links for review and enrichment. |
updatedAt, fetchedAt | Source update time when available and Actor fetch time. |
status, source, errorMessage | Row status and whether it came from search or direct package mode. |
Input configuration
| Setting | JSON key | Use it for | Example |
|---|---|---|---|
| Search query | query | Discover packages by keyword. | react |
| Package names | packageNames | Fetch known packages directly. | ["react", "@types/node"] |
| Maximum package rows | maxItems | Cap saved rows and control spend. | 50 |
| Include download counts | includeDownloads | Enrich each package with npm downloads API counts. | true |
| Download period | downloadPeriod | Choose last-day, last-week, or last-month. | last-month |
| Include maintainers | includeMaintainers | Include public maintainer usernames. | true |
| Deduplicate package names | dedupe | Avoid duplicates across direct and search inputs. | true |
Example input
{"query": "react","maxItems": 10,"includeDownloads": true,"downloadPeriod": "last-month","includeMaintainers": true,"dedupe": true}
Example output
{"packageName": "react","scope": null,"version": "19.1.0","description": "React is a JavaScript library for building user interfaces.","keywords": ["react"],"license": null,"publisherUsername": "fb","maintainerUsernames": ["fb", "react-bot"],"weeklyDownloads": 143867154,"monthlyDownloads": 617430030,"downloadsLastMonth": 617430030,"dependents": 213476,"scoreFinal": 0.95,"repositoryUrl": "https://github.com/facebook/react","npmUrl": "https://www.npmjs.com/package/react","status": "ok","source": "search"}
Pricing
| Tier | Package result price |
|---|---|
| Free | $0.00014087 per successful package row |
| Bronze | $0.0001225 per successful package row |
| Silver | $0.000095547 per successful package row |
| Gold | $0.000073498 per successful package row |
| Platinum | $0.000048998 per successful package row |
| Diamond | $0.000034299 per successful package row |
A run start event is $0.005 per run. Package result pricing is charged for successful npm package metadata rows saved to the dataset.
Tips for best results
- Start small: Use
maxItems: 10until you confirm the fields match your workflow. - Use focused keywords: Specific terms such as
eslint pluginproduce more useful shortlists than broad words likeplugin. - Mix modes carefully: Direct
packageNamesare processed first, then search fills the remainingmaxItems. - Expect nullable fields: Some npm responses omit license, links, dependents, or score fields.
API usage
Node.js:
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor("fetch_cat/npm-packages-search-scraper").call({query: "react",maxItems: 10,includeDownloads: true});console.log(run.defaultDatasetId);
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("fetch_cat/npm-packages-search-scraper").call(run_input={"query": "react","maxItems": 10,"includeDownloads": True,})print(run["defaultDatasetId"])
cURL:
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~npm-packages-search-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"query":"react","maxItems":10,"includeDownloads":true}'
MCP and AI agents
Use this Actor from MCP-compatible tools through the official Apify MCP Server.
$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/npm-packages-search-scraper"
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/npm-packages-search-scraper"}}}
Example prompt: "Run npm Packages Search Scraper for eslint plugin with 25 results and summarize high-popularity packages with repository links."
Limits and caveats
- Public npm only: The Actor does not access private packages, account data, or tokens.
- No tarball analysis: It does not download package tarballs or inspect source files.
- Freshness: npm registry and download-count data can change after a run finishes.
- Rate limits: Public APIs may throttle large or frequent runs; retry logic is bounded.
Legality and responsible use
Process only data that you are allowed to access. Follow npm's terms, Apify's terms, and applicable laws.
Related actors
FAQ
Can I export results?
Yes. Apify datasets support JSON, CSV, Excel, XML, RSS, and API access.
Why are some fields empty?
Some packages do not expose every field publicly. The Actor leaves unavailable fields empty instead of guessing.
Does it support scoped packages?
Yes. Direct package inputs can include scoped names such as @types/node.
Support
Open an issue from the Actor page if a run fails or output looks wrong. Include the run ID or run URL, input JSON, expected output, actual output, and a reproducible public URL such as https://www.npmjs.com/package/react or the exact npm query.