PyPI Package Release Monitor avatar

PyPI Package Release Monitor

Pricing

$2.50 / 1,000 successful watchlist results

Go to Apify Store
PyPI Package Release Monitor

PyPI Package Release Monitor

Re-check PyPI packages you already depend on for a new version. Official JSON API. No download of wheels.

Pricing

$2.50 / 1,000 successful watchlist results

Rating

0.0

(0)

Developer

Technical Dost Solutions

Technical Dost Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

PyPI package version monitor. Re-check PyPI packages you already depend on for a new version. Official JSON API. No download of wheels.

This Actor is a scheduled watchlist, not a one-shot dump. You bring identifiers you already have. It returns structured current fields, a change type against your previous snapshot, and a NEXT_SNAPSHOT you own.

Why pay

Official PyPI JSON API (/pypi/{name}/json) is free. The paid job is bounded, scheduled, charge-after-success monitoring with isolated snapshots, honest nulls, and no fee for failed lookups or suppressed unchanged rows.

  • charges per successful watchlist item, with no Actor-start fee
  • does not bill source errors or onlyChanges unchanged rows
  • does not invent scores, contacts, or matches beyond what the source returned

Not a PyPI search. No wheel download. Yanked flags come from the latest file entry when present.

What you get

{
"schemaVersion": 1,
"id": "requests",
"status": "ok",
"packageName": "requests",
"version": "2.32.5",
"uploadTime": "2025-06-01T00:00:00.000000Z",
"changeType": "INITIAL",
"error": null
}

Public example identifiers, not a customer or endorsement. Missing source strings are null — never "N/A".

Quick start

{
"packages": [
"requests"
],
"maxItems": 1
}

Run it, open the dataset, and save NEXT_SNAPSHOT from the default key-value store.

Repeat workflow

  1. Keep one watchlist per customer or project.
  2. Start a bounded run. Schedule it yourself if you need a cadence.
  3. Save the returned NEXT_SNAPSHOT JSON in your private state.
  4. On the next run pass it as previousSnapshot and set onlyChanges: true.
  5. Route changeType: CHANGED rows for review.

No schedules are enabled by default. Snapshots use the run's default storage, never a shared named store.

Input

FieldTypeDefaultWhat it does
packagesarray1–50 PyPI project names.
maxItemsinteger50Must cover all unique items; a smaller value is rejected rather than silently dropping IDs.
onlyChangesbooleanfalseSuppress unchanged successful records without charging them. The first observation is still emitted.
previousSnapshotobjectPrior NEXT_SNAPSHOT with schemaVersion: 1, kind: "pypi-package", and a records map.

Pricing

EventPriceWhen it happens
Successful watchlist result$0.0025 ($2.5 / 1,000)One successful watchlist item written to the dataset
Actor startnoneNo custom start fee

You are not charged for: failed requests, parse failures, invalid input, or unchanged records suppressed by onlyChanges. With onlyChanges: false, an unchanged successful refresh is delivered work and is charged. The run stops when eventChargeLimitReached is true.

Worked example. 50 packages daily, onlyChanges: true, 2 version bumps/week → about 8 × $0.0025 = $0.02/month.

Set maxTotalChargeUsd on the run. The Actor launches with a $1.00 minimum max-cost-per-run so a high-volume schedule cannot cap itself at the Console $0.05 default.

Using the API

Keep APIFY_TOKEN on a protected backend.

curl --fail -X POST "https://api.apify.com/v2/acts/technicaldost~pypi-package-release-monitor/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"packages":["requests"],"maxItems":1}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('technicaldost/pypi-package-release-monitor').call({
"packages": [
"requests"
],
"maxItems": 1
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

n8n. HTTP Request → POST https://api.apify.com/v2/acts/technicaldost~pypi-package-release-monitor/runs with header Authorization: Bearer {{$credentials.apifyToken}}. Poll the run, then read the default dataset and NEXT_SNAPSHOT.

Limitations

  • Public metadata only. No authentication bypass and no non-public personal data.
  • Output is only as current as the official source. Lag and outages are reported as errors, not invented rows.
  • One request at a time (except shared catalog fetches), 20 seconds per request.
  • At most 1,000 snapshot records are retained; SUMMARY.snapshotPruned reports eviction.

Not affiliated with or endorsed by the Python Software Foundation or PyPI.

Changelog

See CHANGELOG.md. Release 1.0.0 (2026-09-13): caller-owned watchlists, isolated snapshots, $0.0025 per successful result, no start fee.