crates.io Package Version Delta Monitor
Pricing
from $1.00 / 1,000 new crates.io crate versions
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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_SEENwith 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
| Field | Required | Description |
|---|---|---|
crates | yes | List of crates.io crate names |
sinceVersion | no | On first run for a crate, treat this version and older (by created_at) as already seen |
includePrereleases | no | Include semver prereleases (default true) |
includeYanked | no | Include yanked versions (default false) |
resetState | no | Clear 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
| Situation | Dataset items | version-delta charges |
|---|---|---|
Empty state, no sinceVersion | 0 | 0 (baseline only) |
Empty state + sinceVersion | Only newer than that version | 1 per item |
| Later runs | New version strings only | 1 per item |
Tips
- Run once to baseline, then attach a schedule (e.g. hourly/daily).
- Keep crate lists focused — Actor sleeps ~1s between crates to respect crates.io ≤1 RPS guidance.
- 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
- Store: https://apify.com/collinjreynolds/crates-io-version-delta-monitor
- Console: https://console.apify.com/actors/ (see LEDGER for Actor ID)
- Hygiene: PPE
version-delta$0.001; LIMITED_PERMISSIONS; DEVELOPER_TOOLS/AI; memory 512; timeout 300; identifying User-Agent + ≤1 RPS; first-run silent baseline (0 deltas).