For AI agents
GPU prices as data: per GPU-hour by chip, provider, region and pricing model, with history. List prices weekly, spot daily.
Point your agent here
https://compute.fru.dev/llms.txthttps://compute.fru.dev/llms-full.txtCall the API
GET/api/prices
Every live price: provider, instance, GPUs, region, pricing model, $/GPU-hour, $/instance-hour, source and read time, cheapest first. Parameters: chip (h100, b200, mi300x, tpu-v6e ...), provider (aws, azure, gcp, coreweave ...), model (on_demand, spot, reserved_1y, reserved_3y, commit), region, limit (max 200), offset.
curl -s "https://compute.fru.dev/api/prices?chip=h100&model=on_demand&limit=3"{
"total": "...",
"prices": [
{
"provider": "runpod",
"sku": "H100 PCIe (Community Cloud)",
"gpus": 1,
"region": "all",
"model": "on_demand",
"priceGpu": 1.99,
"priceInstance": null,
"sourceUrl": "https://www.runpod.io/pricing",
"checkedAt": "2026-11-09 06:31:49"
},
{
"provider": "runpod",
"sku": "H100 NVL (Community Cloud)",
"gpus": 1,
"region": "all",
"model": "on_demand",
"priceGpu": 2.59,
"priceInstance": null,
"sourceUrl": "https://www.runpod.io/pricing",
"checkedAt": "2026-11-09 06:31:49"
}
]
}GET/api/chips
Each chip with the cheapest price per pricing model and the provider offering it. Parameters: none.
curl -s "https://compute.fru.dev/api/chips"{
"chips": [
{
"key": "h100",
"name": "H100",
"vendor": "NVIDIA",
"cheapest": {
"on_demand": {
"price": 1.99,
"provider": "runpod"
}
}
}
]
}GET/api/providers
Each provider with chips, price counts, regions and its pricing page. Parameters: none.
curl -s "https://compute.fru.dev/api/providers"{
"providers": [
{
"key": "aws",
"name": "AWS",
"kind": "hyperscaler",
"chips": 9,
"prices": 700
}
]
}GET/api/history
Daily cheapest and median $/GPU-hour per provider and pricing model. Parameters: chip (required), provider, model.
curl -s "https://compute.fru.dev/api/history?chip=h100&model=on_demand"{
"chip": "h100",
"history": [
{
"day": "2026-09-24",
"provider": "aws",
"model": "on_demand",
"min": 6.88,
"median": 8.26,
"offers": 25
}
]
}GET/api/changes
Append-only history: price moves (old, new, first seen, last seen) and offers listed or delisted, each with url (its offer on the provider page), title (provider and instance) and sentence (the change in words, with prices per GPU-hour). Parameters: since (YYYY-MM-DD), chip, provider, limit (max 200), offset.
curl -s "https://compute.fru.dev/api/changes?limit=3"{
"total": 1218,
"changes": [
{
"at": "2026-11-09",
"kind": "price",
"offerId": "datacrunch~8b200.240v.cc.intel-(8x-b200-cc-sxm6-180gb)~all~spot",
"sku": "8B200.240V.CC.INTEL (8x B200 CC SXM6 180GB)",
"provider": "datacrunch",
"chip": "b200",
"model": "spot",
"region": "all",
"old": 4.5238,
"new": 4.66,
"prevSeen": "2026-11-02",
"sourceUrl": "https://datacrunch.io/products"
},
{
"at": "2026-11-09",
"kind": "price",
"offerId": "datacrunch~8b200.240v.cc.intel-(8x-b200-cc-sxm6-180gb)~all~on-demand",
"sku": "8B200.240V.CC.INTEL (8x B200 CC SXM6 180GB)",
"provider": "datacrunch",
"chip": "b200",
"model": "on_demand",
"region": "all",
"old": 9.0463,
"new": 9.3212,
"prevSeen": "2026-11-02",
"sourceUrl": "https://datacrunch.io/products"
}
]
}GET/api/companies
Providers with companies.fru.dev slug, domain, their page here and dated price changes. Parameters: since (YYYY-MM-DD).
curl -s "https://compute.fru.dev/api/companies"{
"companies": [
{
"slug": "aws",
"name": "AWS",
"domain": "aws.amazon.com",
"url": "https://compute.fru.dev/providers/aws"
}
]
}GET/api/search
Ranked chips, providers and instances. Parameters: q, limit (max 20).
curl -s "https://compute.fru.dev/api/search?q=p5.48xlarge"{
"q": "p5.48xlarge",
"results": [
{
"id": "sku:aws:p5.48xlarge",
"group": "items",
"title": "p5.48xlarge",
"href": "/providers/aws"
}
]
}OpenAPI 3.1: /openapi.json. Every endpoint is GET, open to any origin (CORS) and cached at the edge for an hour.
Add to your agent
System prompt line
For what a GPU-hour costs (H100, H200, B200, MI300X, TPU and more across AWS, Azure, Google Cloud, Oracle and neoclouds), fetch https://compute.fru.dev/llms.txt and use https://compute.fru.dev/api/prices?chip=h100. Cite "Compute (compute.fru.dev)".Tool definition
{
"name": "gpu_hour_prices",
"description": "Per-GPU-hour prices for an accelerator (H100, H200, B200, GB200, MI300X, TPU v5e/v6e, Trainium, L40S, A100 and more) across AWS, Azure, Google Cloud, Oracle and neoclouds, by pricing model and region, cheapest first. Source: Compute (compute.fru.dev).",
"input_schema": {
"type": "object",
"properties": {
"chip": {
"type": "string",
"description": "Chip key, e.g. h100, h200, b200, gb200, mi300x, tpu-v6e, trainium2. List them with GET /api/chips."
},
"model": {
"type": "string",
"enum": [
"on_demand",
"spot",
"reserved_1y",
"reserved_3y",
"commit"
]
},
"provider": {
"type": "string",
"description": "Optional provider key, e.g. aws, azure, gcp, oracle, coreweave, lambda."
}
},
"required": [
"chip"
]
},
"endpoint": "GET https://compute.fru.dev/api/prices"
}Python
import json, urllib.request
def gpu_prices(chip: str = "h100", model: str = "on_demand") -> list[dict]:
"""Per-GPU-hour prices for one chip, cheapest first."""
url = f"https://compute.fru.dev/api/prices?chip={chip}&model={model}&limit=200"
with urllib.request.urlopen(url, timeout=20) as r:
return json.load(r)["prices"]
for p in gpu_prices("h100")[:5]:
print(p["provider"], p["sku"], p["region"], p["priceGpu"])TypeScript
type Price = { provider: string; sku: string; region: string; model: string; priceGpu: number }
async function cheapest(chip = "b200"): Promise<Price[]> {
const res = await fetch(`https://compute.fru.dev/api/prices?chip=${chip}&model=on_demand&limit=10`)
if (!res.ok) throw new Error(`compute ${res.status}`)
return ((await res.json()) as { prices: Price[] }).prices
}
console.log(await cheapest())Usage terms
- Free to read. Please cite "Compute (compute.fru.dev)" with a link.
- Responses are cached for an hour; list prices change weekly, spot daily.
- Be polite: 60 requests a minute at most.
- List prices before tax and discounts; check the provider before you buy.