NPM Package Intelligence Scraper avatar

NPM Package Intelligence Scraper

Pricing

Pay per event

Go to Apify Store
NPM Package Intelligence Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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

FieldDescription
packageNamenpm package name
versioncurrent version from search or latest tag
descriptionpackage description
weeklyDownloadsweekly downloads from npm search
monthlyDownloadsmonthly downloads from npm search
downloadsInPerioddownloads for selected npm downloads period
dependentsnpm search dependent count
licensepackage license
repositoryUrlrepository link when available
maintainerspackage 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

  1. Add search terms to queries, exact packages to packageNames, or both.
  2. Choose mode if you only want search or only exact package enrichment.
  3. Set maxResultsPerQuery and maxItems.
  4. Keep metadata enrichment enabled; turn on downloads enrichment only when you need selected-period download counts.
  5. Run the actor and export the dataset.

Input options

queries

Keyword searches passed to the npm Registry search endpoint. Examples:

  • react ui
  • typescript cli
  • pdf parser

packageNames

Exact package names to enrich. Scoped packages are supported. Examples:

  • react
  • typescript
  • @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 ApifyClient
import os
client = 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 maxItems modest 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-week downloads 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.

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.