Developers
Free API and price badges.
Hourly GPU rental prices and grid power data as JSON and CSV. No key, no sign-up, CORS open. Free to use under CC BY 4.0: credit “GridCompute GPU Price Index” with a link to gridcompute.ai.
Embed a live price badge
An image that updates by itself. Works in READMEs, blogs and newsletters, with no script.
The badge shows the median Vast.ai asking price this hour. GPUs not on the marketplace show the lowest published rate card, marked “from”. Images refresh about every 15 minutes.
API reference
Base URL https://gridcompute.ai. All endpoints are GET. Prices are in USD per GPU-hour, asking prices, not offers. Timestamps are Unix seconds at the start of the UTC hour. Missing values are null, never estimated.
Data updates once an hour, a few minutes past the hour, and responses are cached for 5 minutes. There is no hard rate limit; please cache on your side rather than polling more than hourly. New fields may be added; existing fields will not be renamed or removed without notice on this page.
Market prices come from public Vast.ai listings. Rate cards: RunPod (Secure Cloud on-demand), Verda (on-demand, 1-GPU instance), Azure (pay-as-you-go Linux VM, East US 2, per GPU). Full method on the homepage.
GET /api/latestEvery tracked GPU: the current marketplace snapshot, each rate card, 24h and 7d change, and the last 7 days of hourly medians.
meta.first, meta.last- Unix seconds (UTC) of the first and latest hourly snapshot
meta.snapshots- Number of hourly snapshots stored
lists[]- The rate cards tracked:
key,name,note gpus[].key, name, mem, tier- GPU id, display name, memory in GB, family
gpus[].market- Vast.ai marketplace asking prices this hour:
offers,gpus,min,p25,median,p75.nullwhen not listed this hour gpus[].lists- Rate card price per GPU-hour this hour, keyed by rate card.
nullwhen not published gpus[].change24h, change7d- Fractional change of the market median (0.012 = +1.2%).
nulluntil enough history exists gpus[].spark[ts, median]pairs for the last 7 daysgpus[].list- Deprecated alias of
lists.runpod
GET /api/history?gpu=h100-sxm&days=30One GPU over time. Hourly rows up to 21 days, daily averages beyond that (days 1–365, default 30).
resolutionhourlyordaily averagevast[]- Objects with
ts,min,p25,median,p75,offers runpod, verda, azure[ts, price]pairs for each rate card
GET /api/export.csv?gpu=all&days=90Raw stored rows as CSV. gpu is a GPU id or all.
columnstimestamp_utc, gpu, source, offers, gpus, min, p25, median, p75. Rate card rows repeat the price in every stat column and leaveoffersandgpusempty
GET /api/gpusThe tracked GPU ids, names, memory and family.
GET /api/power/latestEach grid region: latest hourly price and load, 24h average and range, and 7-day series.
regions[].pricets,value,avg24h,high24h,low24h, in the regioncurrencyper MWh.nullwhere no price is publishedregions[].loadts,value,peak24hin MW
GET /api/power/history?region=ercot&days=30Hourly price and load for one region (ercot, pjm, ontario, quebec).
GET /api/power/export.csv?region=all&days=90Raw hourly power rows as CSV.
GET /api/healthTime and outcome of the last collection run. ok is false if no run in the last 3 hours.