PyPI Package Scraper — Metadata, Deps & Downloads avatar

PyPI Package Scraper — Metadata, Deps & Downloads

Pricing

from $2.00 / 1,000 results

Go to Apify Store
PyPI Package Scraper — Metadata, Deps & Downloads

PyPI Package Scraper — Metadata, Deps & Downloads

Look up Python packages on PyPI or discover new/updated ones, with version, author & maintainer emails, license, dependencies, Python requirement, project links and download counts. Keyless. Dependency audit + maintainer leads.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

Look up Python packages on PyPI — or discover newly-added / recently-updated ones — and get rich, structured metadata: version, summary, author & maintainer emails, license, dependencies, Python requirement, project links and download counts. Clean JSON/CSV/Excel.

Keyless, no anti-bot — built for dependency auditing, supply-chain research, package intelligence and maintainer lead generation.


What this Actor does

Give it package names (and/or turn on discovery) and for each package it returns:

  • Core — name, latest version, summary, Python requirement, license, version count.
  • Contacts — author/maintainer name and emails (parsed from PyPI metadata) — great for maintainer outreach.
  • Dependencies — the full requires_dist list and a dependency count.
  • Popularity — downloads in the last day / week / month (via pypistats).
  • Links — homepage, project URLs (docs, source, funding…) and the PyPI page.

Discovery: optionally pull the newest packages and recently-updated packages straight from PyPI's feeds, each enriched with full metadata.


Why use it

  • Audit your dependencies. Drop in a requirements.txt list and get license, Python requirement, dependencies and maintainer for each — perfect for compliance and supply-chain review.
  • Maintainer lead-gen. Author/maintainer emails for developer outreach, sponsorships and devrel.
  • Package research & comparison. Downloads, versions, dependencies and metadata side by side.
  • Track the ecosystem. Discover brand-new and freshly-updated packages as they land.
  • Keyless and fast. No API key, no anti-bot — public PyPI + pypistats endpoints.

The Python sibling of an npm package scraper — same dev-tools + lead-gen value, for the PyPI ecosystem.


Who it's for

  • Security & platform teams auditing dependencies and supply chain.
  • Developer-tool & devrel teams doing maintainer outreach and ecosystem tracking.
  • Analysts & researchers studying the Python package ecosystem.
  • Investors & BD spotting fast-growing packages and projects.

Quick start

Run it in the console (no code)

  1. In Package names, add one per line:

    requests
    django
    fastapi
    numpy
  2. (Optional) enable Discover recently-updated or Discover newest packages.

  3. Keep Include download counts on, click Start, and export as JSON, CSV, Excel or HTML.

Leave everything empty for a demo.

Run it via API (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"packages": ["requests", "django", "fastapi"],
"includeDownloads": True,
}
run = client.actor("YOUR_USERNAME/pypi-package-scraper").call(run_input=run_input)
for p in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{p['package']} {p['version']} — {p['downloadsLastMonth']}/mo — {p['emails']}")

Run it via API (JavaScript)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('YOUR_USERNAME/pypi-package-scraper').call({
packages: ['requests'],
recentlyUpdated: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((p) => console.log(`${p.package}: ${p.dependencyCount} deps, ${p.downloadsLastMonth}/mo`));

Input

FieldTypeDescription
Package namesarrayPyPI package names, one per line. Empty + no discovery = demo.
Discover recently-updatedbooleanPull recently-updated packages from PyPI's RSS feed.
Discover newestbooleanPull brand-new packages from PyPI's RSS feed.
Include download countsbooleanAdd last day/week/month downloads (pypistats). Default on.
Max packagesintegerTotal cap across list + discovery. Default 200.
Speed (parallel lookups)integerPackages at once. Default 8.
Proxy configurationobjectApify Proxy. On by default.

Note on search: PyPI has no public keyword-search API, so this Actor works by package name plus feed-based discovery (newest / recently-updated). To audit a project, paste its dependency list directly.


Output

One record per package:

{
"package": "Flask",
"version": "3.1.3",
"summary": "A simple framework for building complex web applications.",
"authorName": "",
"emails": "contact@palletsprojects.com",
"license": "BSD-3-Clause",
"requiresPython": ">=3.9",
"homePage": "https://flask.palletsprojects.com/",
"projectUrls": "Documentation: ...; Source: ...; Funding: ...",
"keywords": "",
"classifiers": "Programming Language :: Python :: 3; License :: OSI Approved; ...",
"dependencies": "blinker>=1.9.0; click>=8.1.3; itsdangerous>=2.2.0; jinja2>=3.1.2; ...",
"dependencyCount": "6",
"versionCount": "63",
"downloadsLastDay": "4800000",
"downloadsLastWeek": "31000000",
"downloadsLastMonth": "136480505",
"yanked": "false",
"pypiUrl": "https://pypi.org/project/Flask/",
"scrapedAt": "2026-10-10T12:00:00.000Z"
}
FieldDescription
package / version / summaryCore identity.
authorName / emailsAuthor/maintainer name and parsed emails (maintainer leads).
license / requiresPythonLicense and Python requirement.
dependencies / dependencyCountrequires_dist list and count.
versionCountNumber of released versions.
downloadsLastDay/Week/MonthDownload counts from pypistats.
homePage / projectUrls / pypiUrlLinks.
classifiers / keywordsKey trove classifiers and keywords.
yankedWhether the latest version is yanked.
scrapedAtISO timestamp.

Tips & notes

  • Dependency audit. Paste a requirements.txt package list to get license + Python + deps + maintainer for every one.
  • Emails vary. PyPI shows author/maintainer emails when the package provides them (~2/3 of packages); the Actor parses them from the metadata.
  • Discovery enrichment. recentlyUpdated / newestPackages feed the queue, then each package is fully enriched.
  • Downloads. Counts come from pypistats; brand-new packages may not have stats yet.
  • Dedupe. The Actor de-dupes names across your list + discovery automatically.

Frequently asked questions

Do I need an API key? No — public PyPI JSON API + pypistats.

Can I search PyPI by keyword? PyPI has no public keyword-search API. This Actor works by package name plus feed-based discovery (newest / recently-updated). For a project audit, paste its dependency list.

Does it include download counts? Yes — last day/week/month from pypistats (when available).

Can I get maintainer contacts? Yes — author/maintainer emails are parsed from PyPI metadata when present.

Is this good for supply-chain / security? Yes — license, Python requirement, dependencies and version history are exactly what dependency and supply-chain reviews need.


Export & integrate

Results are available as JSON, CSV, Excel, HTML and via the Apify API. Push to Google Sheets, a webhook, Make, Zapier or your database — and schedule runs to track packages over time.

Data from PyPI and pypistats.