PyPIStats Python Package Stats Scraper avatar

PyPIStats Python Package Stats Scraper

Pricing

from $7.69 / 1,000 results

Go to Apify Store
PyPIStats Python Package Stats Scraper

PyPIStats Python Package Stats Scraper

Scrapes Python package download statistics from PyPIStats. Enter package names and get recent totals or full daily time series as flat rows with download counts.

Pricing

from $7.69 / 1,000 results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

ParseForge

PyPIStats Python Package Stats Scraper

Scrape Python package download statistics from PyPIStats for any package, with recent totals or full daily time series. Get exact download counts by day, week, or month. No API key, no authentication. Export to CSV, JSON, Excel, or XML.

Tracking Python package adoption usually means wrangling the PyPIStats JSON API, parsing nested responses, and writing pagination loops. This Actor queries the public PyPIStats download endpoints directly, accepts a list of package names, and returns clean, flat rows of download counts. You choose between recent aggregate totals or a complete daily time series for trend analysis.

Who uses itWhat they scrape PyPIStats for
Open source maintainersMonitor daily adoption of their own packages to spot release-driven spikes.
Developer relations teamsReport monthly download growth for packages their company sponsors or maintains.
Data analystsBuild time-series datasets of Python ecosystem trends across hundreds of packages.
Technical foundersValidate market demand for a Python library idea by checking competitor download volumes.

What it does

This Actor collects Python package download statistics from PyPIStats and returns each data point as a flat row with the package name, date, and download count.

  • ๐Ÿ“… Recent totals: last day, last week, and last month aggregate download counts in one row per package.
  • ๐Ÿ“ˆ Overall daily time series: complete daily download history for each package, one row per day, for trend analysis and charting.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with PyPIStats data

๐Ÿ“Š Monitor your own package adoption.

An open source maintainer enters their package name in overall mode and exports a CSV to chart daily downloads after each new release.

๐Ÿ“ˆ Compare competitor library traction.

A technical founder scrapes monthly download totals for five competing packages to decide which Python library category has growing demand.

๐Ÿ“‹ Build a Python ecosystem dashboard.

A data analyst runs the Actor weekly with a list of 200 packages and feeds the daily time series into a team dashboard.

๐Ÿ“ Report download metrics to stakeholders.

A developer relations lead scrapes recent totals for company-sponsored packages and drops the JSON into a quarterly adoption report.

Why choose this scraper

What you get
No API key requiredReads public PyPIStats endpoints with zero authentication or registration.
Batch package lookupsEnter a list of packages and get stats for all of them in a single run.
Fixed flat schemaEvery row has the same columns: package name, date, and download count, ready for analysis.
Daily granularityOverall mode returns per-day counts so you can plot adoption curves over time.

How it compares

This Actor focuses purely on download statistics from PyPIStats, while the competitors below bundle metadata fields alongside download counts.

FeatureParseForgePyPI Package Stats & DownloadsPyPI Package Data - Metadata & Download Stats
Recent download totals (day/week/month)YesYesYes
Full daily time series (overall mode)YesNot listedNot listed
Batch multiple packages in one runYesNot listedNot listed
Package metadata (version, license, author)Not listedYesYes
Dependencies and classifiersNot listedNot listedYes
No API key or authentication requiredYesYesYes

Configure the run

Drive the Actor with a list of PyPI package names and choose between recent aggregate totals or a full daily time series. The maxItems limit caps the total records returned. The Input tab lists every parameter.

A first run with the defaults:

{
"packages": [
"numpy",
"requests",
"flask"
],
"maxItems": 10
}

A larger pull:

{
"packages": [
"numpy",
"requests",
"flask"
],
"maxItems": 200
}

Pricing

Pay-per-result: $0.0085 per result collected. You pay only for the results written to your dataset.

Results collectedApproximate cost
100 results$0.85
1,000 results$8.50
10,000 results$85.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the PyPIStats Python Package Stats Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to PyPIStats through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/pypistats-downloads-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting zero downloads for a package I know exists?

Check the package name spelling and capitalization. PyPI package names are case-sensitive in the URL. Also confirm the package has had downloads in the period you selected.

The run is taking a long time with overall mode.

Overall mode fetches every day of download history for each package, which can mean thousands of rows per package. Reduce the number of packages or use recent mode for faster results.

I hit the maxItems limit and my dataset is truncated.

Increase the maxItems value up to 1,000,000 on a paid plan. On the free plan, the limit is 10 records, which is enough to preview the output format.

The download counts look different from the PyPIStats website.

PyPIStats updates its data with a short delay. Counts may also differ slightly depending on the time of day the query runs. The Actor returns exactly what the API provides.

I get an error when entering package names with special characters.

Use the exact PyPI project name as it appears in the package URL. Periods, hyphens, and underscores are supported. Avoid spaces or other special characters.

FAQ

QuestionAnswer
What is PyPIStats?PyPIStats is a public service that tracks download counts for every package on the Python Package Index (PyPI). It provides aggregate and daily time-series data without requiring authentication.
Do I need a PyPI account or API key?No. This Actor reads the public PyPIStats endpoints directly. There is no login, no API key, and no registration required.
What is the difference between recent and overall mode?Recent mode returns one row per package with the last day, last week, and last month totals. Overall mode returns one row per day for the entire download history of each package.
Can I scrape stats for multiple packages at once?Yes. Add as many package names as you need to the packages input field. Each package is queried and returned in the same dataset.
What fields does each result row contain?Each row includes the package name, the date (for overall mode), and the download count. The exact fields are shown in the sample output on the Actor's page.
How far back does the daily time series go?PyPIStats provides daily download data going back several years. The overall mode returns every available day for the requested packages.
Is there a rate limit?The Actor respects PyPIStats response times and processes packages sequentially. For large package lists, overall mode will take longer because each package returns many rows.
Can I export the data to Google Sheets?You can export the dataset to CSV, JSON, Excel, or XML from the Apify run console and then import it into Google Sheets or any other tool.
What happens if I enter an invalid package name?PyPIStats returns zero downloads for packages that do not exist. The Actor will still produce a row with a count of zero rather than failing.
Can I schedule this Actor to run daily?Yes. Apify supports scheduled runs. Set the Actor to run daily with your package list and collect a continuous time series of download data.

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Python Software Foundation. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.