xpu liveBETA
THE PRICING DATA API

One catalog.
Clear, traceable prices.

Model API rates and GPU rental prices, with their original sources, billing units and collection dates. Build comparisons on data you can inspect.

26 registered providers21 AI model providers5 GPU providers25 successful latest collections1414 normalized tariffsREST · JSON · v1

Start with a single request

This site's read-only API is available without a key. Use the source and observation time when displaying a price.

BASE URL
https://xpu.live/wp-json/xpu/v1/
curl 'https://xpu.live/wp-json/xpu/v1/prices?kind=gpu&provider=runpod&limit=5'
OpenAPI specification ↗

Prices include published tariffs and observed marketplace offers. They do not guarantee current GPU availability or your final bill. Unknown prices are omitted; an explicit "0" means a published zero rate.

Explore the endpoints

EndpointReturnsFilters
GET/providersProvider registry and collection statuskind=model | gpu
GET/modelsModels in the site catalogq, limit, offset
GET/gpusGPU variants in the site catalogq, limit, offset
GET/pricesNormalized price variants and componentskind, provider, resource, rental, mapped=true
GET/historyLatest 5,000 price changes; full history in Node APIprovider, id
GET/statusLast collection status and coverage per provider—

List endpoints accept limit (1–200, default 50) and offset (default 0). Responses include data, total, next_offset and generated_at. resource accepts a provider's exact model ID or the catalog ID.

Try the API

Select an example and send a request.

An empty data array means no matching saved prices. Check /status for missing credentials or collection errors. Try without mapped=true to include prices without a site catalog match.

A price is more than a number

Each record describes one provider, model or GPU, and tariff. Monetary values are decimal strings. Never compare different billing units or silently add optional components.

{
  "id": "runpod:h100-sxm:secure-cloud-pods-57c27da7",
  "kind": "gpu",
  "provider": "runpod",
  "resource": "h100-sxm",
  "currency": "USD",
  "variant": "Secure Cloud Pods",
  "price_type": "list",
  "components": [{"name": "compute", "amount": "3.49", "unit": "gpu_hour"}],
  "conditions": {"rental": "on-demand", "gpu_count": 1},
  "source": {"url": "https://www.runpod.io/pricing", "method": "page"},
  "observed_at": "2026-09-28T00:00:00Z",
  "stale": false
}
Illustrative response; use the live API for the current value and timestamp.
  • components: input, output, cache or usage charges, each with its own unit.
  • conditions: tier, modality, rental term and provider-specific restrictions.
  • price_type: list, starting or marketplace. Starting rates are not exact quotes; marketplace offers are observations at collection time.
  • catalog_id: identifies an exact site catalog match; null or absent for unmapped resources. These rates remain available through /prices.
  • source.method: api, page or page-data (structured data published with a pricing page).
  • source_status: latest collector result. stale is based on observation age: 48 hours by default, or the record’s stale_after_seconds override (Vast: 3,600 seconds).

Provider coverage

This registry covers the configured collection sources, including sources without dedicated WordPress provider pages. Counts and statuses below come from the latest imported snapshot. An active collector does not imply every product is covered. Salad and Vast prices can be queried by provider ID even without a dedicated provider page. “Mapped” counts exact matches to the site catalog.

ProviderCategoryStatusTariffs / mapped
CloudRift ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.gpuok15 / 15
Modal ↗Public GPU-second list prices converted to GPU-hours. Workspace.billing.rates() is an authenticated account-specific API; public collection intentionally uses the public pricing page.gpuok11 / 8
Runpod ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.gpuok19 / 18
Amazon Bedrock ↗Official bulk price list for us-east-1. Mapped Amazon Nova models; each billing dimension is retained separately.modelok33 / 33
Anthropic ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok19 / 4
DeepInfra ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok138 / 5
DeepSeek ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok4 / 4
ElevenLabs ↗Pay-as-you-go TTS character prices. Subscription allowances remain separate.modelok4 / 4
Fireworks AI ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok30 / 6
Google Cloud Vertex AI ↗Current Gemini 3.8 Flash standard tariffs with region and context boundaries. Other model tables await mapping.modelok4 / 4
Google Gemini API ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok18 / 6
Groq ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok4 / 4
Microsoft Azure AI Foundry ↗Public Azure OpenAI retail meters in eastus; mapped GPT model meters, with deployment and unit preserved.modelok48 / 48
Mistral AI ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok5 / 5
Novita AI ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok112 / 4
OpenAI ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok215 / 35
OpenRouter ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok459 / 50
Replicate ↗Per-model structured billing data; unsupported usage metrics stay unpriced.modelok23 / 23
Runway ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok33 / 10
Segmind ↗Per-model pricing pages; runtime seconds, generation parameters and megapixel components remain distinct.modelok52 / 52
Together AI ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok27 / 4
WaveSpeedAI ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok15 / 6
fal.ai ↗Official pricing API requires FAL_KEY; account-specific discounts are kept private by default.
Set FAL_KEY in .env
modelrequires key0 / 0
xAI ↗Only supported, unambiguous price structures are normalized; other variants remain source-backed but unpriced.modelok1 / 1
SaladCloud ↗Public website GPU-hour prices at four priorities. Optional organization API via SALAD_USE_API=1, SALAD_API_KEY and SALAD_ORGANIZATION; account quotes stay private.gpuok68 / 12
Vast.ai ↗API key required. Up to five cheapest verified available single-GPU on-demand offers per existing catalog GPU, filtered by model and memory. Marketplace quotes; stale after one hour. No automatic GPU model creation.gpuok57 / 57

GPU sources and pricing scope

Provider IDPublic collectionScope and credentials
cloudriftPricing pageSupported public GPU tariffs; no account key required.
runpodPricing pagePublic GPU tariffs, with rental and cloud variants where supported; no account key required.
modalPricing pagePublic GPU-second rates converted to gpu_hour. No key required. Authenticated workspace billing rates are not connected.
saladPublic pricing page dataGPU-hour tariffs by priority: batch, low, medium and high. No key required for public prices. Optional organization API requires SALAD_USE_API=1, SALAD_API_KEY and SALAD_ORGANIZATION; account rates remain private.
vastMarketplace search APIRequires VAST_API_KEY. Up to five cheapest matching verified, rentable, unrented, single-GPU on-demand offers per existing catalog GPU. Searches check GPU name and memory; models outside the curated website catalog are not published. USD/hour quotes include the API’s default disk allocation; extra storage and bandwidth can change the bill. Offers expire from freshness after one hour. Collection searches offers; it does not rent machines.

A registered provider is not necessarily returning prices. requires_key means credentials are missing; error means the latest attempt failed; review_required needs source review. Saved prices may still be returned, so inspect their timestamps and stale flag.

Freshness, behavior and limits

  • Collector refresh defaults to every 6 hours while the Node service is running. Configure 5 minutes to 7 days in CLI Settings; the running service checks settings within 30 seconds. WordPress imports hourly when WP-Cron runs, which depends on site traffic.
  • Last WordPress sync: 2026-10-03T16:52:22+00:00.
  • A failed source retains its previous rates and reports an error. Rates become stale after their freshness window (default 48 hours; Vast 1 hour). A successful collector status does not by itself guarantee a fresh rate. Check both fields.
  • Price changes are recorded in history. A successful accepted collection replaces that provider’s saved public rates; suspicious drops can require review. A missing marketplace offer may simply be outside the bounded search result.
  • observed_at is the rate observation time; generated_at is the snapshot generation time. Neither is the WordPress import time. API timestamps use UTC.
  • HTTP 400: invalid pagination. HTTP 404: route not found. HTTP 503: no snapshot yet.
  • The local Node API uses /v1/ routes on port 4318 and limits requests to 120/minute per client. The WordPress mirror currently has no application-level quota.
  • The Node API binds to loopback by default. Public deployment requires HTTPS, an API key and gateway limits. This local site is not an internet-hosted API.
  • Account-specific pricing is kept private. Public pages expose public list rates, starting rates and marketplace observations. Private organization rates are excluded.

For future MCP integration, use the same versioned price records and comparison logic. The current release exposes REST; an MCP server is not enabled.

Manage collection locally

From the pricing-service directory, run:

npm run menu
  • GPU providers / AI model providers: choose a provider to see its saved price table immediately; update prices, search, filter or inspect price history from there.
  • Status & service management: inspect collection results and start or stop the background service.
  • Settings: view required API connections, adjust the automatic collection interval and choose automatic, always-on or disabled colors.

Use arrow keys and Enter, or the displayed option numbers. CLI times use your computer’s local timezone. Store provider keys in the local pricing-service/.env file; never send them to this public API.