gpudiff records the price of renting GPUs in the cloud, continually, with a changelog of every move. Here is exactly how the numbers are made.
An H100 PCIe 80GB, an H100 NVL 94GB, and an H100 SXM 80GB never share a row or a page. Comparison and history only happen inside one of these families; cross-family context comes from lenses like $/GB-VRAM-hr, clearly labeled as a screening tool, not a verdict.
| Provider | What we record | Cadence |
|---|---|---|
| Vast.ai | 25th percentile of verified marketplace listings, per GPU (dph ÷ GPU count); models with fewer than 5 listings are skipped. Spot = p25 of minimum bids. Marketplace listings vary in host quality — p25 is "what a careful buyer can actually get," not the single cheapest outlier. | continually |
| RunPod | Published list prices per GPU type, secure and community cloud, on-demand and spot. Community tiers can be availability-limited. | continually |
| AWS | On-demand Linux/shared list price of the smallest qualifying instance per GPU family, us-east-1, divided by GPU count. AWS sells bundles (CPUs + RAM attached), so rows are badged instance-bundled. | daily |
| Azure | Retail Prices API, eastus, Linux consumption rates ÷ GPU count; on-demand and spot. Instance-bundled like AWS. | daily |
| OpenRouter (LLM) | Public model catalog; input and output prices per million tokens, tracked as separate series per model. This is the resale layer of LLM pricing; official provider list pages join as slower sources. | continually |
| Requesty · Glama · Novita · DeepInfra (LLM) | Each router's public
catalog, normalized to USD per million tokens. A router often lists one model
several times (different upstream hosts or regions); we publish the cheapest
route per model and record how many were collapsed. Models are joined across
routers by canonical name — last path segment, region suffix stripped — so
vertex/claude-sonnet-5@eu and anthropic/claude-sonnet-5
are one row. | continually |
| Ramp Router (LLM) | The published model table from Ramp's public docs:
input and output price per million tokens, context window. Ramp writes decimal
points as "p" (kimi-k2p6) and lists Anthropic models without the
claude- prefix (opus-5); both are normalized into the
shared namespace so one model is one row. Ramp states it bills at provider list
price with no gateway fee through 2026 — useful as a list-price reference, but
it is their published rate, not an invoice we have seen. | daily |
| SaaS pages | Page-level price signature: the set of USD amounts ($2–$2000) present on each vendor's public pricing page; we publish the lowest and highest and diff those. Not plan-mapped — a movement signal with a provenance link, not a quote. Companies whose pages block or yield nothing are absent rather than guessed. | daily |
Every offer is schema-validated; anything failing is dropped and flagged, never published. A price moving more than 40% in a day is quarantined for human review instead of shipped. Every datum stores the URL it was observed at and its timestamp, and every snapshot is committed to public git history — the archive cannot be quietly rewritten.
Specs shown are vendor nameplate figures with links to the spec sheet — not measured throughput. Availability is not verified. Enterprise negotiated pricing is invisible to everyone, including us.
Outbound provider links may carry referral codes (disclosed, rel=sponsored). The site also sells a single first-party sponsor unit, always labelled, served from our own HTML with no third-party script or tracker. Neither influences which numbers are shown, how they are computed, or which providers we track — the pipeline is open source, so you can check.