What a GPU-hour costs

2,500 prices · 16 providers

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.txt
https://compute.fru.dev/llms-full.txt

Call 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.