PyPI Scraper - Python Package Versions & Downloads
Pricing
$0.50 / 1,000 result item produceds
PyPI Scraper - Python Package Versions & Downloads
Look up Python packages on PyPI: latest version, summary, downloads for the last day, week and month, license, dependencies, supported Python versions, project links and release history. Export to CSV, JSON or Excel, schedule runs or use the API.
Pricing
$0.50 / 1,000 result item produceds
Rating
0.0
(0)
Developer
Automly
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What is PyPI Scraper?
PyPI Scraper is a tool that lets you scrape Python package data from PyPI (the Python Package Index): current version, summary, license, supported Python versions, dependencies, project links, first and latest release dates and download counts for the last day, week and month. Or get the full version history of a package, newest first. Add package names, click Start, and download the data as Excel, CSV or JSON.
- ๐ฆ Up to 50 packages per run: paste a list like
requests,django,numpy - ๐ Downloads: installs from PyPI over the last day, 7 days and 30 days on every package
- ๐ Version history: every released version with its upload date, file count and yanked flag
- ๐ No login: no PyPI account or API key needed
- ๐ธ Free to try: the $5 of free usage every Apify account gets each month covers about 10,000 packages or versions
What can PyPI Scraper do?
- Look up Python package metadata in bulk
- Get PyPI download counts for the last day, week and month
- Check the license and supported Python versions of every package in a
requirements.txt - Get the dependencies of a Python package
- Get the full release history of a PyPI package, newest first
- Find yanked (withdrawn) versions of a package
- See which package names do not exist on PyPI
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more
What data can you extract from PyPI?
| ๐ฆ Package name | ๐ข Current version | ๐ Summary and description (first 1,000 characters) |
| ๐ค Author and maintainer, with emails | โ๏ธ License | ๐ Supported Python versions |
| ๐ Homepage, docs and repository links | ๐งฉ Dependencies | ๐ท๏ธ Keywords and classifiers |
| ๐ Downloads last day, week and month | ๐ First and latest release date | ๐ Number of releases |
| ๐ Each version's upload date | ๐๏ธ Files per version | โ Yanked flag |
How to scrape PyPI
- Create a free Apify account (no credit card needed).
- Open PyPI Scraper.
- Enter Package names separated by commas, for example
requests,django,numpy. - Pick the Mode (Package metadata or Version history), set Max results, then click Start.
- When the run finishes, open the Output tab: the Packages view shows the key columns and Versions shows the version history. Download the data as Excel, CSV, JSON, HTML or XML.
How much does it cost to scrape PyPI packages?
You pay $0.50 per 1,000 rows, where a row is one package in package mode or one version in version history mode. Platform usage is included in this price, so there is nothing else to pay. Rows for package names that do not exist on PyPI are free.
For example, looking up 20 packages costs $0.01, and 1,000 packages or versions cost $0.50.
Every Apify account gets $5 of free usage each month, so you can try it at no cost. See the Pricing tab for details.
โฌ๏ธ Input
| Setting | What it does |
|---|---|
| Mode | Package metadata for one row per package with its metadata and downloads (default), Version history for one row per released version, newest first |
| Package names | Comma-separated package names as on pypi.org, such as requests,django,numpy |
| Max results | Package mode: how many packages (up to 50). Version history mode: how many versions per package (up to 50). Default 10 |
| Include classifiers | Add the PyPI classifiers: license, Python versions, development status and topics (on by default) |
Example: metadata and downloads for three packages.
{"packages": "requests,django,numpy","maxResults": 10,"includeClassifiers": true}
To get the 20 latest versions of Django instead, set Mode to Version history, Package names to django and Max results to 20.
โฌ๏ธ Output
In package mode you get one row per package. You can view the rows as a table in Apify Console or download them as Excel, CSV, JSON, HTML or XML.
{"packageName": "Django","version": "6.1.1","summary": "A high-level Python web framework that encourages rapid development and clean, pragmatic design.","description": "======\nDjango\n======\n\nDjango is a high-level Python web framework that encourages rapid development\nand clean, pragmatic...","author": "","authorEmail": "Django Software Foundation <foundation@djangoproject.com>","maintainer": "","maintainerEmail": "","license": "BSD-3-Clause","homepageUrl": "https://www.djangoproject.com/","documentationUrl": "https://docs.djangoproject.com/","repositoryUrl": "https://github.com/django/django","packageUrl": "https://pypi.org/project/Django/","keywords": "","classifiers": "Development Status :: 5 - Production/Stable, Environment :: Web Environment, Framework :: Django, Intended Audience :: Developers, ...","requiresPython": ">=3.12","requiresDist": "asgiref>=3.9.1, sqlparse>=0.5.0, tzdata; sys_platform == \"win32\", argon2-cffi>=23.1.0; extra == \"argon2\", bcrypt>=4.1.1; extra == \"bcrypt\"","downloadsLastDay": 810614,"downloadsLastWeek": 9807776,"downloadsLastMonth": 40611169,"firstReleaseDate": "2010-05-17T20:04:28","latestReleaseDate": "2026-09-02T17:20:39","releaseCount": 442,"recordType": "package_metadata"}
In version history mode each row is one version, newest upload first, with recordType: "version_listing". The fields that matter there are packageName, version, uploadTime, fileCount and isYanked; the package metadata fields are left empty.
A package name that does not exist on PyPI gets a row with recordType: "error" and the summary Error: package not found on PyPI, so you can see which names to fix. Those rows are free.
How can I use PyPI data?
- Dependency audits: license, Python support and last release date for everything in a
requirements.txt - Choosing a library: compare downloads, release pace and maintainers before you pick one
- Release tracking: watch your own or competitors' packages for new releases on a schedule
- Ecosystem research: study Python tooling by downloads, licenses and Python versions
- Internal catalogs: feed package data into dashboards, search or a software inventory
How to monitor PyPI packages for new releases
- Enter your Package names and keep Mode on
package. - Schedule the actor to run every day.
- Compare
versionorlatestReleaseDatebetween runs, or connect a Slack, email or webhook integration.
Scrape more developer and package data
| Actor | What it gets |
|---|---|
| PyPI Release Monitor API | Latest release or recent versions of PyPI packages, for release tracking |
| NPM Package Metadata API | npm package versions, maintainers, licenses and repository links |
| RubyGems Release Monitor API | Latest releases and versions of Ruby gems |
| Docker Hub Tag Monitor API | Docker Hub image tags, digests and sizes |
| GitHub Repository & Issue Scraper | GitHub repository data, issues, pull requests and contributors |
| Stack Exchange Questions API | Stack Overflow and Stack Exchange questions |
โFAQ
How much does it cost to scrape PyPI?
$0.50 per 1,000 packages or versions, with platform usage included; names that are not found are free. See the cost section above and the Pricing tab.
How many packages can I look up in one run?
Up to 50 packages per run. In version history mode you get up to 50 versions for each package. For more, split your list over several runs.
Do I need a PyPI account or API key?
No. You don't need a PyPI account or an API key. The data is public.
Where do the download counts come from?
They are the public PyPI download statistics, which count installs from PyPI over the last day, 7 days and 30 days. If the statistics are briefly unavailable for a package, those three fields are left empty instead of showing a wrong number.
Why is the "version" not the most recently uploaded release?
It is the current release PyPI shows on the package page. Projects sometimes upload a fix for an older line after their latest release (for example a Django 5.2 security fix after 6.1), and that should not be reported as the newest version. The latestReleaseDate field still shows the most recent upload.
Can I monitor packages for new releases?
Yes. Schedule the actor daily in Apify Console and compare version or latestReleaseDate between runs, or connect a Slack, email or webhook integration.
Is the full project description included?
The first 1,000 characters, which is enough for search and previews. The packageUrl links to the full page.
Can I connect PyPI Scraper to other tools or AI agents?
Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at mcp.apify.com.
Is it legal to scrape PyPI?
PyPI Scraper only collects package information that projects publish on PyPI for everyone to see. Author and maintainer names and emails are personal data, which may be protected by laws such as GDPR, so only scrape it for a legitimate reason and ask a lawyer if you are unsure. You can read more in Is web scraping legal?
PyPI Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by PyPI or the Python Software Foundation.
Something isn't working?
Open the Issues tab and tell us the package names and what you expected.
โญ Your feedback
Have an idea or found a problem? Tell us on the Issues tab. If PyPI Scraper saved you time, a short review on the Reviews tab helps other people find it.