Open dataset & API
Everything the site renders is a free, public dataset: normalized specifications and pricing for every AWS, Azure, GCP, and OCI compute instance type, at stable URLs, rebuilt daily. No key, no sign-up, no rate limit — it's static files on a CDN.
Endpoints
Replace {provider} with aws, azure, gcp, oci, linode, or digitalocean, and {region} with a region id from that provider's manifest. All files are served gzip (Content-Encoding: gzip); browsers and most HTTP clients inflate transparently.
| Path | Format | What |
|---|---|---|
/data/{provider}/specs.json | JSON | Region-independent normalized specs (one array of instance types), including the new generation-lineage and GPU-interconnect fields. |
/data/{provider}/instances.csv | CSV | The same specs, flattened to CSV. |
/data/{provider}/instances.parquet | Parquet | The same specs as Apache Parquet (Snappy). Ideal for pandas / DuckDB / Spark. |
/data/{provider}/pricing/{region}.json | JSON | Per-region price map: {type: {platform: {od, spot, cmt1y, cmt3y}}}. One file per region. |
/data/{provider}/manifest.json | JSON | Region list, platforms (OS), and priceModels (on-demand / spot / committed) index. Small, low-cache. |
/data/{provider}/dataset.json | JSON | Versioned descriptor of this provider's files (schemaVersion, counts, license). |
/data/{provider}/refrates.json | JSON | Egress + block-storage list-price reference. |
/data/{provider}/flex.json | JSON | Flexible/custom-shape bounds (GCP custom, OCI Flex) for synthesizing made-to-fit configs. |
Pricing models
Each price cell may carry up to four models. Coverage varies by vendor (see each manifest.json → priceModels):
| Key | Meaning |
|---|---|
od | On-demand / pay-as-you-go (the canonical, comparable basis). Always present. |
spot | Spot / preemptible. AWS = cheapest-AZ current price; Azure/GCP = spot SKU; OCI = 50%-of-on-demand preemptible. |
cmt1y / cmt3y | 1- and 3-year committed hourly-equivalent. AWS = Reserved (Std, No Upfront); Azure = Reservation amortized; GCP = resource CUD. OCI has no per-shape commitment, so these are absent. |
Quick start
## everything cheaper than $0.50/hr on-demand, us-east-1, with DuckDB
import duckdb
specs = duckdb.sql("SELECT * FROM 'https://instancefinder.com/data/aws/instances.parquet'")
## or just the JSON, anywhere
curl -s https://instancefinder.com/data/oci/specs.json | jq '.[0]'
curl -s https://instancefinder.com/data/aws/pricing/us-east-1.json | jq '.["m7i.large"]'
The Content-Encoding: gzip header means curl may need --compressed; browsers and pandas/DuckDB handle it automatically.
License & terms
Public reference data compiled from each vendor's own public APIs and price lists. Provided as-is, with no warranty — verify against the vendor before relying on any number. Attribution appreciated (link back to instancefinder.com). Not affiliated with, or endorsed by, AWS, Microsoft, Google, Oracle, Akamai, or DigitalOcean; all trademarks belong to their owners.