PyPI Scraper avatar

PyPI Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
PyPI Scraper

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

Anyx Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

banner

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

FieldTypeRequiredDefaultDescription
packageNamesarrayno—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.
startUrlsarrayno—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.
maxItemsintegerno—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.
includeDownloadsbooleannotrueAdd download counts for the last day, week and month. Adds one fast request per package.
includeReleasesbooleannofalseAdd the full release history: every version with its release date, file count and yanked status, newest first.
proxyConfigurationobjectno{ "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

FieldTypeDescription
namestringPackage name as its author spells it.
versionstringThe release this row describes: the latest, or the one you asked for.
summarystringOne-line summary.
urlstringThe release's page on PyPI.
pypiUrlstringThe package's page on PyPI.
homepagestringThe project's homepage, when it declares one.
projectUrlsobjectProject links by label, such as Source, Documentation or Changelog.
authorstringAuthor name(s).
authorEmailstringAuthor email address(es), comma-separated.
maintainerstringMaintainer name(s).
maintainerEmailstringMaintainer email address(es), comma-separated.
organizationstringThe PyPI organization that owns the package, when there is one.
ownersarrayPyPI usernames of the package's owners and maintainers.
licensestringLicense: the SPDX expression when declared, otherwise the license name or classifier.
classifiersarrayTrove classifiers, such as Programming Language :: Python :: 3.12.
keywordsarrayKeywords.
requiresPythonstringSupported Python versions, such as >=3.10.
dependenciesarrayDependencies as declared, with version ranges and markers (e.g. PySocks>=1.5.6; extra == "socks").
extrasarrayOptional feature sets (pip install package[extra]).
yankedbooleanWhether this release was withdrawn by its author.
yankedReasonstringWhy it was withdrawn, when given.
versionReleasedAtstringWhen this release was uploaded (ISO 8601).
firstReleasedAtstringWhen the package's first release was uploaded.
lastReleasedAtstringWhen the package's most recent release was uploaded.
releasesCountnumberNumber of releases with files on PyPI.
latestFilesarrayThis release's files: filename, type (bdist_wheel or sdist), pythonVersion, size in bytes, uploadedAt, sha256 and download url.
vulnerabilitiesarrayKnown vulnerabilities in this release: id, aliases (CVE and others), summary, fixedIn versions and link. Empty when none are known.
downloadsobjectDownloads in the lastDay, lastWeek and lastMonth. null when includeDownloads is off or no counts exist yet (brand-new packages).
releasesarrayEvery release, newest first: version, releasedAt, filesCount and yanked. null unless includeReleases is on.
descriptionContentTypestringFormat of the description: text/markdown, text/x-rst or text/plain.
descriptionstringFull description (the project's README) exactly as published.
descriptionHtmlstringThe description rendered as HTML, for Markdown and HTML descriptions.
descriptionTextstringThe 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 null when you turn includeDownloads off.
  • How do I get an older version? Add it with ==, such as requests==2.31.0, or paste its release URL, such as https://pypi.org/project/requests/2.31.0/. Its files and known vulnerabilities are those of that release.
  • Why is descriptionHtml empty? Some packages publish their description as reStructuredText or plain text; descriptionText then 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_Extensions and typing-extensions are the same package.

🔗 More scrapers by Anyx

🤝 Anyx Solutions

We build custom scrapers and data-extraction pipelines.

🖼 Image credit

Image credit: pypi.org