PyPI Scraper
Pricing
from $2.50 / 1,000 results
PyPI Scraper
Scrape Python package data from PyPI: versions, summaries, full descriptions, authors, licenses, dependencies, classifiers, release dates, files, known vulnerabilities and download counts. Add package names or PyPI URLs, get clean JSON. No login, no API key, no proxy.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Anyx Solutions
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share

PyPI Scraper
Any Python package on PyPI — versions, metadata, dependencies, release dates, files, known vulnerabilities and download counts — as clean JSON.
PyPI, the Python Package Index, hosts every public Python library. This Actor reads any package on it and returns what you need to evaluate, monitor or catalogue it: the summary and full description (as published, plus rendered HTML and plain text), authors and maintainers, license, classifiers, keywords, homepage and project links, the Python versions it supports, its dependencies, first and latest release dates, the files of the release, known vulnerabilities, and how often it was downloaded in the last day, week and month. Add package names or PyPI package URLs, or follow PyPI's feeds of newest and recently updated packages. Scrape PyPI with no login, no API key, and no proxy to configure. Built for developer-tool companies, open-source analysts, security and compliance teams, and anyone tracking the Python ecosystem.
⚡ Quick start
{"packageNames": ["requests", "fastapi", "pandas"]}
Or follow PyPI's recent-updates feed:
{"startUrls": [{ "url": "https://pypi.org/rss/updates.xml" }],"maxItems": 5}
🧩 Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
packageNames | array | no | — | Package names, one per line, such as requests or fastapi. Add ==<version> for one release instead of the latest, such as requests==2.31.0. |
startUrls | array | no | — | PyPI URLs: package pages (https://pypi.org/project/requests/), release pages (…/project/requests/2.31.0/), and the feeds https://pypi.org/rss/updates.xml and https://pypi.org/rss/packages.xml. |
maxItems | integer | no | — | Maximum number of packages per feed URL. The input form starts at 5; leave it empty to get the whole feed. Package names and package URLs always return one package each. |
includeDownloads | boolean | no | true | Add download counts for the last day, week and month. Adds one fast request per package. |
includeReleases | boolean | no | false | Add the full release history: every version with its release date, file count and yanked status, newest first. |
proxyConfiguration | object | no | { "useApifyProxy": false } | Proxy settings. PyPI's public package data needs no proxy. |
Add package names, PyPI URLs, or both. The two feeds list PyPI's newest packages (the 40 most recently created) and its recent updates (the last 100 releases); each package in a feed is returned once, at its latest release. PyPI's search pages are shown only to web browsers, so this Actor does not take search URLs: list the packages you want by name instead.
📤 Output
Each package is one dataset row: its latest release, or the version you asked for.
Fields
| Field | Type | Description |
|---|---|---|
name | string | Package name as its author spells it. |
version | string | The release this row describes: the latest, or the one you asked for. |
summary | string | One-line summary. |
url | string | The release's page on PyPI. |
pypiUrl | string | The package's page on PyPI. |
homepage | string | The project's homepage, when it declares one. |
projectUrls | object | Project links by label, such as Source, Documentation or Changelog. |
author | string | Author name(s). |
authorEmail | string | Author email address(es), comma-separated. |
maintainer | string | Maintainer name(s). |
maintainerEmail | string | Maintainer email address(es), comma-separated. |
organization | string | The PyPI organization that owns the package, when there is one. |
owners | array | PyPI usernames of the package's owners and maintainers. |
license | string | License: the SPDX expression when declared, otherwise the license name or classifier. |
classifiers | array | Trove classifiers, such as Programming Language :: Python :: 3.12. |
keywords | array | Keywords. |
requiresPython | string | Supported Python versions, such as >=3.10. |
dependencies | array | Dependencies as declared, with version ranges and markers (e.g. PySocks>=1.5.6; extra == "socks"). |
extras | array | Optional feature sets (pip install package[extra]). |
yanked | boolean | Whether this release was withdrawn by its author. |
yankedReason | string | Why it was withdrawn, when given. |
versionReleasedAt | string | When this release was uploaded (ISO 8601). |
firstReleasedAt | string | When the package's first release was uploaded. |
lastReleasedAt | string | When the package's most recent release was uploaded. |
releasesCount | number | Number of releases with files on PyPI. |
latestFiles | array | This release's files: filename, type (bdist_wheel or sdist), pythonVersion, size in bytes, uploadedAt, sha256 and download url. |
vulnerabilities | array | Known vulnerabilities in this release: id, aliases (CVE and others), summary, fixedIn versions and link. Empty when none are known. |
downloads | object | Downloads in the lastDay, lastWeek and lastMonth. null when includeDownloads is off or no counts exist yet (brand-new packages). |
releases | array | Every release, newest first: version, releasedAt, filesCount and yanked. null unless includeReleases is on. |
descriptionContentType | string | Format of the description: text/markdown, text/x-rst or text/plain. |
description | string | Full description (the project's README) exactly as published. |
descriptionHtml | string | The description rendered as HTML, for Markdown and HTML descriptions. |
descriptionText | string | The description as plain text. |
💡 Use cases
- Dependency and supply-chain review — check licenses, supported Python versions, maintainers, release recency and known vulnerabilities for every package you depend on.
- Developer-tool market research — compare packages in a category by downloads, release cadence and dependencies.
- Ecosystem monitoring — schedule the Actor on the recent-updates or newest-packages feed to catch new releases and new projects as they appear.
- Lead generation for developer tools — find the authors, maintainers and organizations behind fast-growing packages.
❓ FAQ
- Do I need a PyPI account or API key? No. The Actor reads the same public package data pip and the PyPI website use.
- Do I need a proxy? No. It runs without one by default.
- Can I search PyPI by keyword? Not with this Actor. PyPI's search pages are shown only to web browsers. List the packages you want by name, or follow the newest-packages or recent-updates feed.
- Why are the download counts empty for a package? Download counts appear a day or so after a package is first published, so brand-new packages have none yet. They are also
nullwhen you turnincludeDownloadsoff. - How do I get an older version? Add it with
==, such asrequests==2.31.0, or paste its release URL, such ashttps://pypi.org/project/requests/2.31.0/. Its files and known vulnerabilities are those of that release. - Why is
descriptionHtmlempty? Some packages publish their description as reStructuredText or plain text;descriptionTextthen carries it as written. - A package was not found. The log says when a name does not exist on PyPI. Names are matched the way pip matches them, so
Typing_Extensionsandtyping-extensionsare the same package.
🔗 More scrapers by Anyx
🤝 Anyx Solutions
We build custom scrapers and data-extraction pipelines.
- Email: tantosthor@gmail.com
🖼 Image credit
Image credit: pypi.org