NPM Package Intelligence Scraper
Pricing
Pay per event
NPM Package Intelligence Scraper
Search npm packages and enrich them with registry metadata, downloads, maintainers, dependencies, links, and scoring signals.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Find and enrich npm packages from public registry APIs.
What does NPM Package Intelligence Scraper do?
NPM Package Intelligence Scraper searches the public npm Registry and turns package discovery results into clean dataset rows.
It can also enrich exact package names such as react, typescript, or @types/node.
The actor is designed for software teams that need repeatable npm package research without building and maintaining registry API glue code.
Who is it for?
- ๐งโ๐ป Developers comparing package choices for a new project.
- ๐ Supply-chain teams mapping maintainers, licenses, and dependency volume.
- ๐ DevRel teams tracking ecosystems around keywords and frameworks.
- ๐งช Product researchers building package intelligence spreadsheets.
- ๐ค Automation builders that need npm data inside no-code workflows.
Why use this actor?
The npm Registry exposes useful public JSON, but teams still need pagination, enrichment, normalization, and exports. This actor handles those details and stores the output in an Apify dataset ready for CSV, JSON, Excel, API, webhooks, or MCP tools.
Key features
- ๐ Search npm packages by one or more keywords.
- ๐ฆ Enrich exact package names.
- ๐ Include weekly, monthly, and selected-period download counts.
- ๐งพ Extract license, links, publisher, maintainers, and keywords.
- ๐งฎ Add dependency counts, version counts, scores, and TypeScript typings signal.
- โก HTTP-only implementation; no browser or login required.
Data table
| Field | Description |
|---|---|
packageName | npm package name |
version | current version from search or latest tag |
description | package description |
weeklyDownloads | weekly downloads from npm search |
monthlyDownloads | monthly downloads from npm search |
downloadsInPeriod | downloads for selected npm downloads period |
dependents | npm search dependent count |
license | package license |
repositoryUrl | repository link when available |
maintainers | package maintainers |
How much does it cost to scrape npm package intelligence?
This actor uses pay-per-event pricing.
There is a small start charge and a per-package charge for each saved dataset item.
Use maxItems and maxResultsPerQuery to control run size.
For quick tests, keep the default prefill or reduce the limits.
How to use it
- Add search terms to
queries, exact packages topackageNames, or both. - Choose
modeif you only want search or only exact package enrichment. - Set
maxResultsPerQueryandmaxItems. - Keep metadata enrichment enabled; turn on downloads enrichment only when you need selected-period download counts.
- Run the actor and export the dataset.
Input options
queries
Keyword searches passed to the npm Registry search endpoint. Examples:
react uitypescript clipdf parser
packageNames
Exact package names to enrich. Scoped packages are supported. Examples:
reacttypescript@types/node
mode
Choose search, packages, or both.
When both queries and package names are provided, both is the best default.
maxResultsPerQuery
Maximum results requested for each search query. The actor paginates the npm search API when needed.
maxItems
Total cap across all inputs. This protects your budget when you provide many queries.
enrichMetadata
Fetches detailed package documents from registry.npmjs.org/<package>.
Disable it only when you need a faster, search-only export.
enrichDownloads
Fetches selected-period downloads from the npm downloads API. This is useful for trend analysis and ranking, but it is optional because the npm downloads API can rate-limit large batches.
downloadsPeriod
Choose last-day, last-week, or last-month.
Output example
{"packageName": "react","source": "search","searchQuery": "react ui","version": "19.2.7","description": "React is a JavaScript library for building user interfaces.","license": "MIT","weeklyDownloads": 150302852,"monthlyDownloads": 583605358,"downloadsInPeriod": 583605358,"dependents": 212669,"repositoryUrl": "https://github.com/facebook/react","versionsCount": 2500,"dependencyCount": 0,"hasTypes": false,"scrapedAt": "2026-06-24T00:00:00.000Z"}
Common workflows
Package selection research
Search a category such as markdown parser, sort by downloads and maintenance score, then shortlist packages with active repositories and suitable licenses.
Supply-chain review
Enrich a list of packages from package.json and export maintainers, licenses, dependency counts, repositories, and publish dates.
DevRel ecosystem tracking
Run recurring searches for framework or tooling terms and compare output over time.
Competitive intelligence
Track packages around a product category, such as auth, observability, or vector database.
Integrations
- Send dataset rows to Google Sheets using Apify integrations.
- Trigger Slack or email notifications when scheduled runs finish.
- Use the Apify API from CI pipelines to enrich package lists.
- Connect output datasets to data warehouses.
- Use MCP from Claude or other tools for interactive package research.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/npm-package-intelligence-scraper').call({queries: ['typescript cli'],packageNames: ['typescript', '@types/node'],mode: 'both',maxItems: 100});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/npm-package-intelligence-scraper').call(run_input={'queries': ['react ui'],'maxItems': 100,})print(run['defaultDatasetId'])
API usage with cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~npm-package-intelligence-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"queries":["pdf parser"],"maxItems":100}'
MCP usage
Use Apify MCP with this actor enabled:
https://mcp.apify.com/?tools=automation-lab/npm-package-intelligence-scraper
Claude Code setup:
$claude mcp add apify-npm-package-intelligence https://mcp.apify.com/?tools=automation-lab/npm-package-intelligence-scraper
Claude Desktop JSON config:
{"mcpServers": {"apify-npm-package-intelligence": {"url": "https://mcp.apify.com/?tools=automation-lab/npm-package-intelligence-scraper"}}}
Example prompts:
- "Find popular npm packages for markdown parsing and compare licenses."
- "Enrich these package names and return repository links and maintainers."
- "Search npm for TypeScript CLIs and rank by downloads."
Tips for best results
- Use specific queries instead of very broad one-word searches.
- Combine keyword search with exact package names for complete reports.
- Keep
maxItemsmodest for exploratory runs. - Enable metadata enrichment for license and dependency fields.
- Enable downloads enrichment for small, focused batches when selected-period counts are required.
- Use
last-weekdownloads for faster-moving trend snapshots.
Troubleshooting
Why did I get fewer results than requested?
The actor de-duplicates package names across queries and exact package lists. If several queries return the same popular packages, fewer unique rows may be saved.
Why are some fields empty?
Not every npm package declares homepage, repository, bugs, keywords, or TypeScript metadata. The actor leaves unavailable values empty instead of guessing.
Does this need an npm token?
No. The actor uses public npm Registry and downloads endpoints.
Legality and ethical use
This actor collects publicly available package metadata from npm public APIs. Use the data responsibly, respect npm service availability, and avoid excessive run sizes or unnecessary repetition.
Related scrapers
- https://apify.com/automation-lab/npm-vulnerability-checker
- https://apify.com/automation-lab/website-contact-finder
- https://apify.com/automation-lab/github-repository-scraper
FAQ
Can I scrape scoped packages?
Yes.
Use names such as @types/node in packageNames.
Can I schedule monitoring?
Yes. Create an Apify task with your input and schedule it daily, weekly, or monthly.
Can I export CSV?
Yes. Open the dataset and choose CSV, JSON, Excel, or API export.
Can I use this in automation?
Yes. Use Apify webhooks, integrations, API clients, or MCP.
Changelog
- Initial version: npm search, package metadata, downloads enrichment, and normalized package intelligence dataset.