PyPIStats Python Package Stats Scraper
Pricing
from $7.69 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
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 it | What they scrape PyPIStats for |
|---|---|
| Open source maintainers | Monitor daily adoption of their own packages to spot release-driven spikes. |
| Developer relations teams | Report monthly download growth for packages their company sponsors or maintains. |
| Data analysts | Build time-series datasets of Python ecosystem trends across hundreds of packages. |
| Technical founders | Validate 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 required | Reads public PyPIStats endpoints with zero authentication or registration. |
| Batch package lookups | Enter a list of packages and get stats for all of them in a single run. |
| Fixed flat schema | Every row has the same columns: package name, date, and download count, ready for analysis. |
| Daily granularity | Overall 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.
| Feature | ParseForge | PyPI Package Stats & Downloads | PyPI Package Data - Metadata & Download Stats |
|---|---|---|---|
| Recent download totals (day/week/month) | Yes | Yes | Yes |
| Full daily time series (overall mode) | Yes | Not listed | Not listed |
| Batch multiple packages in one run | Yes | Not listed | Not listed |
| Package metadata (version, license, author) | Not listed | Yes | Yes |
| Dependencies and classifiers | Not listed | Not listed | Yes |
| No API key or authentication required | Yes | Yes | Yes |
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 collected | Approximate 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
- Create a free Apify account with $5 in credit.
- Open the PyPIStats Python Package Stats Scraper.
- Set your inputs and any filters, then click Start.
- 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
| Question | Answer |
|---|---|
| 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. |
Related actors
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.
