PyPI Package Stats and New Releases Tracker avatar

PyPI Package Stats and New Releases Tracker

Pricing

from $0.19 / 1,000 package or release rows

Go to Apify Store
PyPI Package Stats and New Releases Tracker

PyPI Package Stats and New Releases Tracker

Get PyPI package stats and new releases: latest version, release dates, release cadence, download counts and an activity score for every package you list. Uses the public PyPI and pypistats.org JSON APIs. No login, no proxy.

Pricing

from $0.19 / 1,000 package or release rows

Rating

0.0

(0)

Developer

Detroit Web Agent - Open Data

Detroit Web Agent - Open Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

PyPI Package Stats and New Releases Tracker: Versions, Cadence, Downloads

PyPI package stats for any list of Python packages: latest version, when it shipped, release cadence, recent download counts and an activity score, or switch to releases mode for one row per new release in the last N days, from the PyPI JSON API and pypistats.

This Actor vs brunofin/pypi-package-stats: that one adds package metadata such as author, license and dependencies. This one works out release cadence from real upload times, ranks packages by an activity score, and has a releases mode that returns a what-shipped feed for your time window.

Track any list of Python packages on PyPI. For every package you name, the actor returns the latest version, when it shipped, how often the project releases, recent download counts and a simple activity score. Switch to releases mode to get one row per new release published in the last N days.

What does this Actor do?

It reads two public sources: the PyPI JSON API (pypi.org/pypi/<name>/json) for versions and upload dates, and the pypistats.org API for download counts. It works out release cadence from the real upload times of the release files, then writes one clean row per package or per release. No login, no proxy, no API key, and no personal data: only public package registry fields.

Two output modes:

  • packages: one summary row per package, ranked by activity score.
  • releases: one row per release published inside your time window, newest first. Good for a daily or weekly "what shipped" feed.

Run in 30 seconds

  1. Open the Actor and press Try for free (a free Apify account is enough).
  2. Keep the 30 prefilled packages and press Start. A run takes under a minute.
  3. Open the Output tab. Use the table view or download CSV, Excel or JSON.

Input

FieldWhat it does
packagesPyPI package names, one per line, for example requests or scikit-learn. A pypi.org/project/<name> link also works.
modepackages (default) or releases.
releasesWithinDaysReleases mode only. Keep releases from the last N days. Default 30.
includePrereleasesKeep alpha, beta, release candidate and dev versions. On by default.
includeDownloadsAdd day, week and month download counts. On by default.
maxItemsStop after this many rows.

Sample input:

{
"packages": ["requests", "fastapi", "pydantic", "openai"],
"mode": "releases",
"releasesWithinDays": 14,
"includePrereleases": false,
"maxItems": 50
}

Output

Packages mode, one row per package:

FieldMeaning
package, pypiUrlPackage name and its PyPI page.
latestVersion, latestReleaseAtNewest version and the date it was uploaded.
daysSinceLatestReleaseAge of the newest release in days.
releasesLast30Days, releasesLast90Days, releasesLast365Days, totalReleasesRelease cadence counts.
activityScore0 to 100. 60 points for how recent the last release is, 40 points for releases in the last year.
downloadsLastDay, downloadsLastWeek, downloadsLastMonthDownload counts from pypistats.org.
summary, license, requiresPython, developmentStatus, repositoryUrlMetadata the maintainers publish.
firstReleaseAt, latestIsPrerelease, yanked, scrapedAtExtra context and run time.

Releases mode, one row per release: package, version, releasedAt, daysAgo, isLatest, isPrerelease, yanked, requiresPython, fileCount, sizeBytes, releaseUrl, packageUrl, summary, downloadsLastMonth, scrapedAt.

Sample output

{
"package": "fastapi",
"pypiUrl": "https://pypi.org/project/fastapi/",
"latestVersion": "0.118.0",
"latestReleaseAt": "2026-09-29T10:14:52.000Z",
"daysSinceLatestRelease": 22,
"releasesLast90Days": 9,
"releasesLast365Days": 31,
"activityScore": 95,
"downloadsLastDay": 4120000,
"downloadsLastWeek": 28900000,
"downloadsLastMonth": 121000000,
"license": "MIT",
"requiresPython": ">=3.8"
}

Use cases

  • Watch the dependencies you rely on and get a weekly list of new releases, including pre-releases, in a spreadsheet or Slack.
  • Screen libraries before you adopt them: low activity score, long gap since the last release and falling downloads are warning signs.
  • Build a "trending Python packages" report or newsletter section from release counts and download numbers.
  • Feed release rows into an n8n, Make or Zapier workflow to open tickets when a pinned package ships a new major version.
  • Research a niche for developer-tool content, sponsorship or outreach by ranking the packages in it.

Why use it

  • Real dates. Release dates come from the upload times of the files on PyPI, not from guesses.
  • Public data only. The same JSON APIs that pip and the PyPI website use. No login, no proxy.
  • Repeatable. The activity score is a fixed formula, so the same package gives the same score on the same day.
  • Two shapes. A package summary for screening, or a release feed for monitoring.

Pricing

Pay per event. You pay a small fixed amount per row delivered, listed on the Pricing tab, plus a tiny start fee per run. Packages that are not found are never charged, and you can set a maximum cost per run in the run options.

FAQ

Where do download counts come from? From pypistats.org, which publishes download counts for PyPI. They include mirrors and CI traffic, so use them to compare packages, not as a count of unique users. If pypistats is busy the fields stay empty and the run log says so.

What is the activity score? A number from 0 to 100. Up to 60 points for how recent the last release is (full marks for today, zero at two years old) and up to 40 points for releases in the last 365 days (12 or more is full marks). It is a quick filter, not a quality rating.

Why is a package missing from the output? Its name is probably misspelled or it was removed. Not-found names are listed in the OUTPUT record and the run log.

Does it list every version ever published? In releases mode it lists the releases inside your window. Set releasesWithinDays up to 3650 for a long history.

Limits

  • Only the packages you list are read. The actor does not search PyPI.
  • Download counts depend on pypistats.org and cover roughly the last 180 days at most.
  • Yanked releases are flagged, not hidden, in releases mode.
  • Private indexes are not supported, only the public PyPI.

Found a bug or need a field? Open an issue on the Issues tab with the run URL.

More from DWA Open Data

Browse all 69 data Actors, with live prices and sample output, at open-data-actors.pages.dev.


Feedback: if this Actor was useful, or if it fell short, an honest review on the Reviews tab helps other users decide. Problems or feature requests: please open an Issue and we usually reply within one business day.