PyPI Package Stats Scraper — Downloads, Versions, Dependencies avatar

PyPI Package Stats Scraper — Downloads, Versions, Dependencies

Pricing

from $5.00 / 1,000 packages

Go to Apify Store
PyPI Package Stats Scraper — Downloads, Versions, Dependencies

PyPI Package Stats Scraper — Downloads, Versions, Dependencies

Get download counts, version history, dependencies, license, author, and classifiers for any Python package on PyPI. Bulk-process a list of packages in one run.

Pricing

from $5.00 / 1,000 packages

Rating

0.0

(0)

Developer

Andrew

Andrew

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Get download counts, version history, dependencies, license, author, and classifiers for any Python package on PyPI. Bulk-process a list of packages in one run. No login.

What you get

  • Package name, latest version, summary, long description, license, homepage
  • Author, author email, maintainer, maintainer email, project URLs (docs, source, issues, funding)
  • Full dependency list from requires_dist plus total dependency count
  • Download counts for the last 24 hours, 7 days, and 30 days (all three returned per row)
  • Release count, first release date, last release date, yanked status
  • requires_python, classifiers (Python versions, OS, framework, topic), keywords
  • Direct export to JSON, CSV, Excel, or Google Sheets

Use cases

  • Devtool marketing — track download trends for your Python package vs. competitors
  • Supply-chain audit — list every dependency, version constraint, and license across a set of packages
  • Investment / market research — measure popularity of an open-source Python project
  • Lead generation — pull author and maintainer info for outreach to package authors
  • Internal monitoring — flag yanked releases, deprecated packages, or sudden download drops

How to use

  1. Enter a list of Package names (e.g. requests, numpy, pandas, django, fastapi)
  2. Pick a Download window — Last 24 hours, Last 7 days, or Last 30 days
  3. Set Concurrency if you want to tune throughput (default 10)
  4. Run the actor — one package per row in the Dataset tab

Package names are normalized per PEP 503 (lowercased, with runs of - _ . collapsed to a single -), so Flask-SQLAlchemy, flask_sqlalchemy, and flask.sqlalchemy all resolve to the same package. Packages that don't exist or 404 are still returned as a row with the error field populated, so you never lose track of which inputs failed.

Output format

One package per dataset row — perfect for direct CSV, Excel, or Google Sheets export:

{
"name": "requests",
"pypiUrl": "https://pypi.org/project/requests/",
"description": "Python HTTP for Humans.",
"longDescription": "# Requests\n\nRequests is a simple, yet elegant, HTTP library…",
"latestVersion": "2.32.3",
"license": "Apache-2.0",
"author": "Kenneth Reitz",
"authorEmail": "me@kennethreitz.org",
"maintainer": null,
"maintainerEmail": null,
"homepage": "https://requests.readthedocs.io",
"projectUrls": {
"Documentation": "https://requests.readthedocs.io",
"Source": "https://github.com/psf/requests"
},
"requiresPython": ">=3.8",
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12"
],
"keywords": [],
"requiresDist": [
"charset-normalizer<4,>=2",
"idna<4,>=2.5",
"urllib3<3,>=1.21.1",
"certifi>=2017.4.17"
],
"dependencyCount": 4,
"yanked": false,
"yankedReason": null,
"releaseCount": 152,
"firstReleaseAt": "2011-02-14T17:34:13Z",
"lastReleaseAt": "2024-05-29T15:37:48Z",
"downloadsLastDay": 18234567,
"downloadsLastWeek": 127345678,
"downloadsLastMonth": 587234567,
"downloadPeriod": "last-month",
"downloads": 587234567,
"error": null
}

Input options

FieldTypeDescription
Package namesarrayList of PyPI package names — names are normalized per PEP 503 (required)
Download windowenumLast 24 hours, Last 7 days, Last 30 days — default Last 30 days
ConcurrencyintegerParallel fetches — default 10, max 50