Infra Atlas

The Data.

Every data instrument already publishes its full dataset as JSON — CORS-enabled, free, no key. Build on it instead of re-scraping the vendor docs.

Endpoints
InstrumentEndpointContentsRefresh
EC2 Observatory/ec2/data.jsonAWS regions and EC2 instance families — vCPU, memory, on-demand price, storage, network, GPU.Daily
Region Map/regions/data.jsonCities and cloud regions across AWS, Azure, GCP, OCI and OVHcloud — all partitions.Curated
Azure VM Atlas/azure-vm/data.jsonAzure VM series and sizes — vCPU, memory and live Retail-API price.Daily
GCP Compute Index/gcp-compute/data.jsonGoogle Cloud machine families and types — vCPU, memory, price.Curated
OCI Compute Observatory/oci-compute/data.jsonOracle Cloud compute shapes — OCPU, memory and computed price.Daily
OVH Instance Catalogue/ovh-instances/data.jsonOVHcloud Public Cloud instance ranges — vCPU, memory, price.Daily
Egress Cost Map/egress/data.jsonData-transfer list prices across AWS, Azure and GCP — internet egress, cross-AZ, cross-region, NAT and interconnect.Curated
What Changed feed/feed.jsonRecent dataset changes — regions, families and prices added or moved across the data instruments.Daily
The stability contract

Best-effort, but stable where it counts. These are flat JSON files served straight off the static host. The top-level shape — the generated timestamp and the main regions[] / families[] arrays — is stable and only changes additively; deeper nested fields can still evolve as instruments mature, so read those defensively rather than hard-coding deep paths.

There is no uptime guarantee, no SLA, no API key and no rate limit — please be kind, and cache rather than poll. Responses are cached roughly an hour at the edge; the generated field carries the dataset's own timestamp, so a consumer can tell how fresh a copy is.

The cloud-compute endpoints refresh daily from public datasets and price APIs; regions, gcp-compute and egress are curated snapshots — dated and re-verified against the vendor sources rather than polled.

Using it
// Browser or Node — CORS is open, no key needed
const data = await fetch("https://infraatlas.dev/ec2/data.json")
  .then(r => r.json());
console.log(data.families.length, "EC2 families ·", data.generated);
# Shell — count priced EC2 instance types
curl -s https://infraatlas.dev/ec2/data.json \
  | jq '[.families[].specs[] | select(.price)] | length'
Shape — ec2/data.json
{
  "generated": string — ISO-8601 UTC timestamp of this snapshot
  "source": string — the upstream dataset, named
  "currency", "priceRef": string — pricing currency and reference region
  "regions": array — { code, name, area, flag, since }
  "families": array — per family:
    key, cat, arch, vendor, desc, clock: string
    sizes: array · in: array of region codes
    specs: object — size → { vcpu, mem, price, storage?, net?, gpu? }
}

The other compute endpoints follow the same regions[] + families[] shape; regions/data.json is city-modelled (cities[], each with nested regions[]). Click any endpoint above to read the live file.