Skip to content
Prices

API

Every price on this site as JSON or CSV. Free, no sign-up needed to start.

Base URL
https://prices.cloudadapt.io/api/v1
Without a key
60 a minute
Per client IP
With a free key
1,000 a minute
Use Get a free API key, top right
Formats
JSON, CSV
Add ?format=csv to lists

Try it

Real requests, real prices
GET /api/v1
curl "https://prices.cloudadapt.io/api/v1/compute?provider=aws,gcp&vcpu=4&memory=16&limit=5"

GET/api/v1/compute

Instance prices across providers, filtered and sorted.

ParameterInTypeDescription
providerquerystringComma-separated providers: aws, azure, gcp, oci, digitalocean, linode, vultr, scaleway, ovh, hetzner, exoscale.
regionquerystringRegion ids (us-east-1), provider:region pairs (aws:us-east-1), a group (europe, us, asia, americas, middle-east, africa), all, or cheapest (cheapest region per type). Default: each provider's main region.
vcpuquerystringExact (4) or range (4-8, 4-, -8).
memoryquerystringGiB, exact or range.
archqueryx86_64 | arm64—
gpuquerystringnone, any, or a GPU model (H100, A100-80GB, L4…).
pricequeryon_demand | spot | reserved_1y | reserved_3y—
osquerylinux | windows | rhel | sles | ubuntu_pro—
max_hourlyquerynumberUpper bound in USD per hour.
qquerystringInstance type contains.
sortqueryprice | -price | vcpu | -vcpu | memory | -memory | per_vcpu | spot_saving | name | regions—
limitqueryinteger1 to 500, default 50.
cursorquerystringnext_cursor from the previous page.
formatqueryjson | csvjson (default) or csv.

GET/api/v1/compute/{provider}/{type}

One instance type in every region, every OS and price type.

ParameterInTypeDescription
provider requiredpathstring—
type requiredpathstring—

GET/api/v1/compute/{provider}/{type}/history

Price changes for one instance type.

ParameterInTypeDescription
provider requiredpathstring—
type requiredpathstring—
regionquerystring—
daysqueryinteger1 to 3650, default 30.
price_typequerystringondemand, spot.
formatqueryjson | csvjson (default) or csv.

GET/api/v1/gpus

Best price per GPU-hour by GPU model; ?model= lists every offer.

ParameterInTypeDescription
modelquerystringA GPU model to list every offer for.
scopequeryall | hyperscalers | gpu-clouds—
providerquerystringComma-separated providers: aws, azure, gcp, oci, digitalocean, linode, vultr, scaleway, ovh, hetzner, exoscale.
formatqueryjson | csvjson (default) or csv.

GET/api/v1/gpus/stats

Min, median, average and p90 per GPU-hour, with daily history.

ParameterInTypeDescription
modelquerystring—
daysqueryinteger—

GET/api/v1/storage

Block, file and object storage prices.

ParameterInTypeDescription
providerquerystringComma-separated providers: aws, azure, gcp, oci, digitalocean, linode, vultr, scaleway, ovh, hetzner, exoscale.
regionquerystringRegion ids (us-east-1), provider:region pairs (aws:us-east-1), a group (europe, us, asia, americas, middle-east, africa), all, or cheapest (cheapest region per type). Default: each provider's main region.
typequerystring—
formatqueryjson | csvjson (default) or csv.

GET/api/v1/network/egress

Internet egress ladders and the monthly cost for a volume.

ParameterInTypeDescription
tbquerynumberTB a month to the internet, default 10.
regionquerystringprovider:region pairs.

GET/api/v1/kubernetes

Managed Kubernetes control-plane fees.

ParameterInTypeDescription
formatqueryjson | csvjson (default) or csv.

GET/api/v1/regions

Regions with a price index and grid carbon.

ParameterInTypeDescription
providerquerystringComma-separated providers: aws, azure, gcp, oci, digitalocean, linode, vultr, scaleway, ovh, hetzner, exoscale.
formatqueryjson | csvjson (default) or csv.

GET/api/v1/changes

Price changes and new instance types, newest first.

ParameterInTypeDescription
daysqueryinteger—
providerquerystringComma-separated providers: aws, azure, gcp, oci, digitalocean, linode, vultr, scaleway, ovh, hetzner, exoscale.
kindquerystringdown, up, new, retired.
price_typequerystringondemand (default), spot.
limitqueryinteger—
offsetqueryinteger—
formatqueryjson | csvjson (default) or csv.

GET/api/v1/sources

Each source we read, how often, and when it last succeeded.

No parameters.

GET/api/v1/stats

Catalog counts and freshness.

No parameters.

POST/api/v1/keys

Create a free API key.

Send {"email": "[email protected]"}. The key is returned once; send it as Authorization: Bearer cap_….

No parameters.

Rate limits

60 requests a minute per IP without a key, 1,000 with a free key. Every response carries these headers:

X-RateLimit-LimitRequests allowed per minute for this client.
X-RateLimit-RemainingRequests left in the current minute.
X-RateLimit-ResetUnix time when the oldest request leaves the window.
Retry-AfterOn 429 only: seconds to wait before retrying.

Errors

Errors are JSON: {"error": {"code": "rate_limited", "message": "…"}}

StatusCodeMeaning
400bad_parameterA parameter is missing or out of range.
400bad_requestThe key request body is not JSON with an email.
400bad_emailThe email address is not valid.
401invalid_keyThe API key is unknown or revoked.
404not_foundNo such instance type or route.
429rate_limitedToo many requests this minute.
429too_many_keysSeveral keys were created for this email today.
503unavailablePrices are briefly unavailable; retry shortly.

Prices are list prices in US dollars, before discounts, credits and taxes. Responses are cached for up to five minutes. The data is free to reuse under CC BY 4.0 with a link to prices.cloudadapt.io.