Every number on these pages can be traced to a provider's own published price and a fixed calculation. This page is the whole calculation. There is no proprietary engine.
Prices are collected directly from each provider's public pricing — their API where one exists, their pricing page where not. We do not license, scrape or resell any aggregator's data.
| Provider | Type | Method |
|---|---|---|
| hyperscaler | Public on-demand price list for Linux, us-east-1. Instance price divided by GPU count. | |
| hyperscaler | Azure Retail Prices API, Linux, eastus. Pay-as-you-go and Spot recorded separately. VM price divided by GPU count. | |
| neocloud | Public GPU-type listing. Secure Cloud is RunPod's own datacentre capacity, quoted per GPU-hour. | |
| marketplace | Third-party hosts renting through RunPod. Quoted per GPU-hour; a listing may have no hosts behind it. | |
| neocloud | Public on-demand pricing page. Instance price divided by GPU count. | |
| marketplace | Public offer search, verified and rentable hosts only. Each offer is one observation; on-demand rate, not interruptible bids. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| marketplace | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| marketplace | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| neocloud | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. | |
| hyperscaler | Public pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded. |
Each config a provider sells — an instance type, a VM SKU, a marketplace offer — becomes one row: provider, GPU, GPU count, billing type, hourly price for the whole unit. Nothing is aggregated at this stage and nothing is thrown away. A marketplace with 200 listings for one GPU yields 200 rows.
Rows are only created where the GPU model and count are known with certainty from the provider's naming. SKUs we cannot map are logged and skipped, never guessed. Fractional-GPU products — a sixth of an A10, a MIG slice — are excluded: a fraction of a GPU is not a GPU price.
price per GPU-hour = unit price per hour ÷ GPUs in the unit. An 8×H100 node at $27.20/hr is recorded as $3.40 per GPU-hour. This is the only way to compare an eight-GPU hyperscaler instance with a single-card marketplace listing, and it is the convention every published index uses.
It has a known bias: a hyperscaler instance price also buys CPUs, RAM, storage and network, so hyperscaler per-GPU figures carry that overhead. We do not attempt to strip it out — there is no defensible way to — but the summary chart stacks by provider type precisely so that premium is visible rather than hidden.
For each GPU, on each day:
Step 2 is what stops a provider with thirty instance sizes — or a marketplace with three hundred hosts — from dominating the figure. Every provider counts once. The result is a measure of where the market sits, not where the cheapest corner of it is.
Spot, interruptible and reserved prices never enter the median. They are recorded, and they set the “floor, any billing” figure, but a price that can be revoked or requires a commitment is not the on-demand market.
Cheapest is the lowest on-demand per-GPU price seen from any provider. Floor, any billing is the lowest price across every billing type including spot. Monthly is hourly × 720, the conventional month.
Every collector run is stored as a snapshot and committed to the repository, so the history of the index is the version history of the data, and every price change is a diff anyone can inspect. Runs are at least daily. The latest snapshot is 2026-09-12; there are 27 in total.
One backfill, clearly marked. Live collection began 2026-09-11. Before that date, the only history is Lambda's, taken from the Internet Archive's dated copies of lambda.ai/pricing — 16 monthly captures from 2025-06-04. Those are real prices Lambda published on real dates; each row records the archive URL it was read from. On those dates the index is one provider, and the charts draw it as one provider's line rather than pretending to a market median. No other provider has usable archived pricing — the others render their prices in the browser, so the archive holds no numbers.
Nothing is interpolated or estimated. A run with no data for a provider is a gap in that provider's line, not a straight line across it.
The summary table is ordered by provider coverage, then by price. It is deliberately not ordered by our own traffic to each GPU's page, which would make the ranking a function of the ranking.
The “what fits” table on each GPU page uses the same arithmetic as the rest of Runyard: memory needed = weights (parameters × bits per weight ÷ 8) + KV cache at 8K context + about a gigabyte of runtime overhead, against 90% of the card's memory. Capacity follows total parameters even for mixture-of-experts models. Where one GPU is not enough, GPUs required = ceiling(needed ÷ usable), and the set is priced at that day's median.