crates.io Package Version Delta Monitor avatar

crates.io Package Version Delta Monitor

Pricing

from $1.00 / 1,000 new crates.io crate versions

Go to Apify Store
crates.io Package Version Delta Monitor

crates.io Package Version Delta Monitor

Monitors public crates.io crates for new versions via the official HTTP API and emits only deltas. First run baselines without charging. PPE event: version-delta. Respects crates.io User-Agent + 1 RPS guidance.

Pricing

from $1.00 / 1,000 new crates.io crate versions

Rating

0.0

(0)

Developer

Collin Reynolds

Collin Reynolds

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Watch public crates.io crates for new versions via the official HTTP API (crates.io/api/v1/crates/{crate}). Only deltas since the last run are written to the dataset — ideal for Rust dependency monitoring, SBOM/ops agents, and scheduled changelogs.

Pricing (pay per event): $0.001 per version-delta (each newly detected crate version). Actor start is a small platform event (~$0.00005). First run baselines quietly (0 dataset items / 0 delta charges) so you are not billed for history.

Status: Publishing to Apify Store under standing auth (B). Real exampleRunInput (serde/tokio/clap — not helloWorld); dataset uses crate_description (not reserved description/title); silent-baseline tests green.

Why use this

  • API-only — official crates.io JSON (no HTML scraping)
  • Delta-only — subsequent runs emit new versions only
  • First-run safe — empty state seeds LAST_SEEN with zero PPE delta charges
  • No auth required for public crates
  • Schedule-friendly — pair with an Apify schedule for continuous monitoring
  • Semver prereleases + yanked filterable

Input

FieldRequiredDescription
cratesyesList of crates.io crate names
sinceVersionnoOn first run for a crate, treat this version and older (by created_at) as already seen
includePrereleasesnoInclude semver prereleases (default true)
includeYankednoInclude yanked versions (default false)
resetStatenoClear LAST_SEEN and re-baseline (0 emits that run)

Example / exampleRunInput (not helloWorld)

Canonical: ./INPUT.example.json (= .actor/example_run_input.json).

{
"crates": ["serde", "tokio", "clap"],
"includePrereleases": true,
"includeYanked": false,
"resetState": false
}

Output

Each dataset item is a newly detected version, for example:

  • crate, version, published_at, crate_description, is_prerelease, is_yanked, is_latest, registry_url, download_url

First-run behavior

SituationDataset itemsversion-delta charges
Empty state, no sinceVersion00 (baseline only)
Empty state + sinceVersionOnly newer than that version1 per item
Later runsNew version strings only1 per item

Tips

  1. Run once to baseline, then attach a schedule (e.g. hourly/daily).
  2. Keep crate lists focused — Actor sleeps ~1s between crates to respect crates.io ≤1 RPS guidance.
  3. Set a clear User-Agent (this Actor does) and a user max total charge on the run.

ToS / scope

Uses the public crates.io HTTP API only. See ./AGREEMENT.md and https://crates.io/data-access.

Store / Console