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.
| Instrument | Endpoint | Contents | Refresh |
|---|---|---|---|
| EC2 Observatory | /ec2/data.json | AWS regions and EC2 instance families — vCPU, memory, on-demand price, storage, network, GPU. | Daily |
| Region Map | /regions/data.json | Cities and cloud regions across AWS, Azure, GCP, OCI and OVHcloud — all partitions. | Curated |
| Azure VM Atlas | /azure-vm/data.json | Azure VM series and sizes — vCPU, memory and live Retail-API price. | Daily |
| GCP Compute Index | /gcp-compute/data.json | Google Cloud machine families and types — vCPU, memory, price. | Curated |
| OCI Compute Observatory | /oci-compute/data.json | Oracle Cloud compute shapes — OCPU, memory and computed price. | Daily |
| OVH Instance Catalogue | /ovh-instances/data.json | OVHcloud Public Cloud instance ranges — vCPU, memory, price. | Daily |
| Egress Cost Map | /egress/data.json | Data-transfer list prices across AWS, Azure and GCP — internet egress, cross-AZ, cross-region, NAT and interconnect. | Curated |
| What Changed feed | /feed.json | Recent dataset changes — regions, families and prices added or moved across the data instruments. | Daily |
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.
// 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'
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.