Access
No key, CORS open
Every endpoint is a static file served with Access-Control-Allow-Origin: * and an hour-level cache policy — no API key, no auth, no SDK. Fetch it from a browser, a notebook, a cron job, or an agent.
05Open data
Every dataset on this site is fetchable: versioned JSON, CSV, RSS, and plain-text endpoints with no API key and CORS open. This page is the contract — every field, the clock that stamps it, and the license to reuse it.
Access
Every endpoint is a static file served with Access-Control-Allow-Origin: * and an hour-level cache policy — no API key, no auth, no SDK. Fetch it from a browser, a notebook, a cron job, or an agent.
License
Datasets and feeds are licensed CC BY 4.0. Reuse freely with the attribution “AI Compute Tracker (aicomputetracker.com), CC BY 4.0”. Every JSON payload embeds this license at its root.
Machine description
The whole contract — paths, parameters, response schemas — is published as /openapi.json, generated from the same module as this page, so the two can never drift apart.
curl -s https://aicomputetracker.com/openapi.jsonThe site keeps three independent freshness stamps, and each endpoint below names the one that owns it. Payloads additionally embed their own exact asOf / generatedAt stamps — trust those over any page-level date.
| Clock | As of | Covers | Refreshed by |
|---|---|---|---|
| Market snapshot | Forward curves, the terminal, and the market rail | The forward-market pipeline (Kalshi ladder snapshot) | |
| Live quotes | Automated quote rows and the observation ledger they feed | The weekly quote refresh plus the scheduled price-capture workflow | |
| Core data | Manual quote survey, hardware specs, financials, conventions | Manual survey sweeps (each one bumps the core-data stamp) |
Market snapshot ·
Full forward-curve snapshot: instrument-specific anchors, monthly tenors, methodology identity, and per-point ladder evidence.
curl -s https://aicomputetracker.com/forward-curves.json| Field | Type | Meaning |
|---|---|---|
| contractVersion (at contractVersion) | string | Semver of the open-data contract this payload was published under; see the stability policy. |
| license (at license) | object | Open-data license the payload is published under. |
| name (at license.name) | string | Human-readable license name. |
| url (at license.url) | string | Canonical license text URL. |
| attribution (at license.attribution) | string | The exact attribution line reusers should carry. |
| asOf (at asOf) | string | Market-snapshot timestamp (ISO 8601) the curves were reconstructed at. |
| unit (at unit) | string | Price unit shared by every curve value (USD per GPU-hour). |
| note (at note) | string | Payload-level methodology caveat: anchor instruments, smoothing, and non-executability. |
| tenors (at tenors) | string[] | Display labels for each curve position; the first entry is the instrument-specific anchor. |
| estimatedFromIndex (at estimatedFromIndex) | integer | First curve index at which at least one chip failed a ladder-quality gate; per-point quality stays authoritative. |
| estimatorVersion (at estimatorVersion) | string | Version of the ladder-to-implied-median estimator. |
| transformVersion (at transformVersion) | string | Version of the smoothing transform applied to monthly tenors. |
| methodologyVersion (at methodologyVersion) | string | Combined estimator + transform key; historical comparisons require an exact match. |
| anchors (at anchors) | object (map: id → object) | First-point instrument identity, keyed by curve id. |
| instrument (at anchors{}.instrument) | "weekly-exact-time" | "monthly-average" | Anchor instrument: a future exact-time weekly contract, or the front-month monthly average (RTX 5090). |
| seriesTicker (at anchors{}.seriesTicker) | string | Kalshi series ticker backing the anchor. |
| eventTicker (at anchors{}.eventTicker) | string | null | Exact Kalshi event ticker; null on legacy imports. |
| methodologyVersion (at anchors{}.methodologyVersion) | string | Methodology key the anchor was published under. |
| chips (at chips) | array of objects | One entry per published curve. |
| id (at chips[].id) | string | Curve id (also the key into anchors). |
| label (at chips[].label) | string | Display label of the chip. |
| memory (at chips[].memory) | string | Memory configuration descriptor. |
| priorSnapshotChangePct (at chips[].priorSnapshotChangePct) | number | null | Anchor move (%) vs the prior snapshot of the same contract and methodology; null when no comparable prior exists. |
| priorSnapshotAt (at chips[].priorSnapshotAt) | string | null | ISO timestamp of that comparable prior snapshot. |
| priorSnapshotElapsedMinutes (at chips[].priorSnapshotElapsedMinutes) | integer | null | Actual elapsed minutes since the prior snapshot (never assumed to be 1d). |
| period (at chips[].period) | string | Label of the compatible-history movement window. |
| periodChangePct (at chips[].periodChangePct) | number | null | Compatible-instrument move (%) over that window, when enough history exists. |
| curve (at chips[].curve) | number[] | Curve values aligned index-for-index with tenors, in USD per GPU-hour. |
| provenance (at chips[].provenance) | object | Series-level ingestion evidence for the whole curve. |
| ingestionStatus (at chips[].provenance.ingestionStatus) | "live-fetch" | "legacy-import" | Live pipeline fetch, or a legacy import. |
| monthlySeriesTicker (at chips[].provenance.monthlySeriesTicker) | string | Kalshi monthly-average series ticker. |
| spotSeriesTicker (at chips[].provenance.spotSeriesTicker) | string | null | Weekly exact-time series ticker; null when the chip has none. |
| sourceUrl (at chips[].provenance.sourceUrl) | string | Kalshi API URL for the series. |
| fetchedAt (at chips[].provenance.fetchedAt) | string | ISO timestamp of the fetch. |
| latestMarketAt (at chips[].provenance.latestMarketAt) | string | null | Most recent exchange timestamp seen across the series. |
| monthlyEventCount (at chips[].provenance.monthlyEventCount) | integer | Monthly events discovered. |
| usableTenorCount (at chips[].provenance.usableTenorCount) | integer | Tenors with a usable ladder. |
| interpolatedTenorCount (at chips[].provenance.interpolatedTenorCount) | integer | Tenors filled by interpolation. |
| marketCount (at chips[].provenance.marketCount) | integer | Markets inspected. |
| twoSidedMarketCount (at chips[].provenance.twoSidedMarketCount) | integer | Markets quoting both sides. |
| totalVolume (at chips[].provenance.totalVolume) | number | Summed contract volume. |
| totalOpenInterest (at chips[].provenance.totalOpenInterest) | number | Summed open interest. |
| totalLiquidityUsd (at chips[].provenance.totalLiquidityUsd) | number | Summed resting liquidity in USD. |
| estimatorVersion (at chips[].provenance.estimatorVersion) | string | Estimator version the series was built with. |
| transformVersion (at chips[].provenance.transformVersion) | string | Transform version the series was built with. |
| points (at chips[].provenance.points) | array of objects | Per-point ladder evidence aligned with tenors. |
| kind (at chips[].provenance.points[].kind) | "spot" | "monthly" | Serialized point kind; "spot" is the historical name for the first curve anchor. |
| tenorKey (at chips[].provenance.points[].tenorKey) | string | null | Stable YYYY-MM identity for monthly points; the instrument-specific anchor has no key. |
| seriesTicker (at chips[].provenance.points[].seriesTicker) | string | Kalshi series ticker the ladder belongs to. |
| eventTicker (at chips[].provenance.points[].eventTicker) | string | null | Exact Kalshi event ticker; null on legacy imports. |
| sourceUrl (at chips[].provenance.points[].sourceUrl) | string | Kalshi API URL the ladder was fetched from. |
| latestMarketAt (at chips[].provenance.points[].latestMarketAt) | string | null | Most recent exchange timestamp exposed by the event, when present. |
| strikeCount (at chips[].provenance.points[].strikeCount) | integer | Number of strikes listed in the ladder. |
| twoSidedCount (at chips[].provenance.points[].twoSidedCount) | integer | Strikes quoting both a bid and an ask. |
| medianSpreadPoints (at chips[].provenance.points[].medianSpreadPoints) | number | null | Median bid/ask spread across the ladder, in probability points. |
| totalVolume (at chips[].provenance.points[].totalVolume) | number | Summed contract volume. |
| totalOpenInterest (at chips[].provenance.points[].totalOpenInterest) | number | Summed open interest. |
| totalLiquidityUsd (at chips[].provenance.points[].totalLiquidityUsd) | number | Summed resting liquidity in USD. |
| interpolated (at chips[].provenance.points[].interpolated) | boolean | True when the value was filled from neighboring tenors. |
| clampedToListedRange (at chips[].provenance.points[].clampedToListedRange) | boolean (optional) | True when the implied median sat on the listed strike boundary; absent on older snapshots. |
| estimated (at chips[].provenance.points[].estimated) | boolean | Backward-compatible flag: true whenever the point's quality is not quality-passed. |
| points (at chips[].points) | array of objects | Self-describing per-tenor records (same values as curve, with evidence). |
| tenor (at chips[].points[].tenor) | string | Display label of the tenor. |
| priceUsdPerGpuHour (at chips[].points[].priceUsdPerGpuHour) | number | Implied price level in USD per GPU-hour. |
| instrument (at chips[].points[].instrument) | "weekly-exact-time" | "monthly-average" | Instrument behind the point: the chip's anchor instrument at index 0, monthly-average after. |
| quality (at chips[].points[].quality) | "quality-passed" | "thin" | "interpolated" | Ladder-quality classification; anything but quality-passed renders as an estimate. |
| evidence (at chips[].points[].evidence) | object | The point's ladder evidence record. |
| kind (at chips[].points[].evidence.kind) | "spot" | "monthly" | Serialized point kind; "spot" is the historical name for the first curve anchor. |
| tenorKey (at chips[].points[].evidence.tenorKey) | string | null | Stable YYYY-MM identity for monthly points; the instrument-specific anchor has no key. |
| seriesTicker (at chips[].points[].evidence.seriesTicker) | string | Kalshi series ticker the ladder belongs to. |
| eventTicker (at chips[].points[].evidence.eventTicker) | string | null | Exact Kalshi event ticker; null on legacy imports. |
| sourceUrl (at chips[].points[].evidence.sourceUrl) | string | Kalshi API URL the ladder was fetched from. |
| latestMarketAt (at chips[].points[].evidence.latestMarketAt) | string | null | Most recent exchange timestamp exposed by the event, when present. |
| strikeCount (at chips[].points[].evidence.strikeCount) | integer | Number of strikes listed in the ladder. |
| twoSidedCount (at chips[].points[].evidence.twoSidedCount) | integer | Strikes quoting both a bid and an ask. |
| medianSpreadPoints (at chips[].points[].evidence.medianSpreadPoints) | number | null | Median bid/ask spread across the ladder, in probability points. |
| totalVolume (at chips[].points[].evidence.totalVolume) | number | Summed contract volume. |
| totalOpenInterest (at chips[].points[].evidence.totalOpenInterest) | number | Summed open interest. |
| totalLiquidityUsd (at chips[].points[].evidence.totalLiquidityUsd) | number | Summed resting liquidity in USD. |
| interpolated (at chips[].points[].evidence.interpolated) | boolean | True when the value was filled from neighboring tenors. |
| clampedToListedRange (at chips[].points[].evidence.clampedToListedRange) | boolean (optional) | True when the implied median sat on the listed strike boundary; absent on older snapshots. |
| estimated (at chips[].points[].evidence.estimated) | boolean | Backward-compatible flag: true whenever the point's quality is not quality-passed. |
CSV/curves.csv
Market snapshot ·
Spreadsheet twin of /forward-curves.json: one row per tenor with unit-encoded per-chip columns, quality, and ladder evidence.
curl -s https://aicomputetracker.com/curves.csvLive quotes ·
The complete GPU price-history ledger: every series and dated observation, with billing, comparison, quality, and raw-evidence fields.
curl -s https://aicomputetracker.com/price-history.json| Field | Type | Meaning |
|---|---|---|
| contractVersion (at contractVersion) | string | Semver of the open-data contract this payload was published under; see the stability policy. |
| license (at license) | object | Open-data license the payload is published under. |
| name (at license.name) | string | Human-readable license name. |
| url (at license.url) | string | Canonical license text URL. |
| attribution (at license.attribution) | string | The exact attribution line reusers should carry. |
| schemaVersion (at schemaVersion) | integer | Artifact-level schema integer, bumped only when the ledger shape itself changes; versioned independently of contractVersion. |
| generatedAt (at generatedAt) | string | ISO timestamp the artifact was exported. |
| asOf (at asOf) | string | Latest observation date in the ledger (YYYY-MM-DD). |
| citableIdQualifier (at citableIdQualifier) | string | Mandatory qualifier for every citable series id: posted list/ask prices, not transactions. |
| series (at series) | array of objects | Every price series in the ledger. |
| id (at series[].id) | string | Ledger-internal series key; points reference it via seriesId. |
| gpu (at series[].gpu) | string | Quote-table GPU id. |
| provider (at series[].provider) | string | null | Provider name; null means a class aggregate, never an unnamed provider. |
| sku (at series[].sku) | string | null | Exact provider SKU when retained; null when the source did not expose one. |
| providerClass (at series[].providerClass) | "hyperscaler" | "specialist" | "marketplace" | Provider class the series belongs to. |
| billingModel (at series[].billingModel) | "on-demand" | "capacity-block" | "serverless" | "marketplace-variable" | "secondary-snapshot" | Billing model retained per row; unlike models are never joined. |
| rateUnit (at series[].rateUnit) | "GPU" | "chip" | USD per GPU-hour, or per chip-hour for TPUs/Trainium. |
| configuration (at series[].configuration) | string | Instance/configuration descriptor the price applies to. |
| region (at series[].region) | string | Region the quote was published for. |
| aggregation (at series[].aggregation) | "none" | "floor" | "median" | none on provider quotes; floor or median on class aggregates. |
| scope (at series[].scope) | "provider-quote" | "class-aggregate" | Exact provider quote, or a provider-class aggregate. |
| comparableKey (at series[].comparableKey) | string | Series sharing a key share chip, unit, and billing semantics. |
| citableId (at series[].citableId) | string (optional) | Named citable series id (ACT.<CHIP>.<SERIES>@<policy-version>); present only on the three canonical class aggregates and always qualified: posted list/ask prices, not transactions. |
| points (at points) | array of objects | Every dated observation, keyed to its series. |
| seriesId (at points[].seriesId) | string | Key of the owning series in the payload's series array. |
| date (at points[].date) | string | Exact source/snapshot date, YYYY-MM-DD. |
| period (at points[].period) | string | Quarter bucket (YYYYQn) used for display and gap detection. |
| usdPerUnitHour (at points[].usdPerUnitHour) | number | Price in USD per rate-unit hour (see the series' rateUnit). |
| evidenceStatus (at points[].evidenceStatus) | "observed" | "estimated" | Observed from a source, or a labeled estimate. |
| evidenceKind (at points[].evidenceKind) | "provider-primary" | "secondary-aggregator" | "compiled-estimate" | "published-snapshot" | Lineage of the value's source. |
| sourceLabel (at points[].sourceLabel) | string | Human-readable source name. |
| sourceUrl (at points[].sourceUrl) | string | null | HTTPS source URL when one exists. |
| observedAt (at points[].observedAt) | string | null | Exact observation timestamp; required on observed rows. |
| estimateReason (at points[].estimateReason) | string | null | Present exactly when evidenceStatus is estimated. |
| qualityStatus (at points[].qualityStatus) | "verified" | "provisional" | "secondary" | "estimated" | verified additionally requires durable raw evidence (digest + ref). |
| methodologyVersion (at points[].methodologyVersion) | string | null | Exporter/aggregation contract version; null only on old imports. |
| rawEvidenceSha256 (at points[].rawEvidenceSha256) | string | null | SHA-256 digest of the retained raw payload, when archived. |
| rawEvidenceRef (at points[].rawEvidenceRef) | string | null | Durable reference pinning the raw evidence (raw-snapshots Git object or Neon observation set). |
Live quotes ·
Long-form spreadsheet twin of /price-history.json: one row per observation with its series context denormalized in.
curl -s https://aicomputetracker.com/price-history.csvJSON/price-history/{chip}.json
Live quotes ·
Per-accelerator shard of the price-history ledger — the same series and point shapes filtered to one chip.
curl -s https://aicomputetracker.com/price-history/b300.json{chip} — Chip permalink slug (the same slug as /gpu-cloud/<chip>/). One of: b300, b200, gb200-nvl72, h200, h100, a100-80gb, mi355x, mi300x, l40s, rtx-5090, rtx-4090, v100, tpu-v6e, tpu-v5e, tpu-v5p, trainium2.
| Field | Type | Meaning |
|---|---|---|
| contractVersion (at contractVersion) | string | Semver of the open-data contract this payload was published under; see the stability policy. |
| license (at license) | object | Open-data license the payload is published under. |
| name (at license.name) | string | Human-readable license name. |
| url (at license.url) | string | Canonical license text URL. |
| attribution (at license.attribution) | string | The exact attribution line reusers should carry. |
| generatedAt (at generatedAt) | string | ISO timestamp the underlying artifact was exported. |
| asOf (at asOf) | string | Latest observation date for this chip (YYYY-MM-DD). |
| gpu (at gpu) | string | Quote-table GPU id the shard covers. |
| series (at series) | array of objects | The chip's price series. |
| id (at series[].id) | string | Ledger-internal series key; points reference it via seriesId. |
| gpu (at series[].gpu) | string | Quote-table GPU id. |
| provider (at series[].provider) | string | null | Provider name; null means a class aggregate, never an unnamed provider. |
| sku (at series[].sku) | string | null | Exact provider SKU when retained; null when the source did not expose one. |
| providerClass (at series[].providerClass) | "hyperscaler" | "specialist" | "marketplace" | Provider class the series belongs to. |
| billingModel (at series[].billingModel) | "on-demand" | "capacity-block" | "serverless" | "marketplace-variable" | "secondary-snapshot" | Billing model retained per row; unlike models are never joined. |
| rateUnit (at series[].rateUnit) | "GPU" | "chip" | USD per GPU-hour, or per chip-hour for TPUs/Trainium. |
| configuration (at series[].configuration) | string | Instance/configuration descriptor the price applies to. |
| region (at series[].region) | string | Region the quote was published for. |
| aggregation (at series[].aggregation) | "none" | "floor" | "median" | none on provider quotes; floor or median on class aggregates. |
| scope (at series[].scope) | "provider-quote" | "class-aggregate" | Exact provider quote, or a provider-class aggregate. |
| comparableKey (at series[].comparableKey) | string | Series sharing a key share chip, unit, and billing semantics. |
| points (at points) | array of objects | The chip's dated observations. |
| seriesId (at points[].seriesId) | string | Key of the owning series in the payload's series array. |
| date (at points[].date) | string | Exact source/snapshot date, YYYY-MM-DD. |
| period (at points[].period) | string | Quarter bucket (YYYYQn) used for display and gap detection. |
| usdPerUnitHour (at points[].usdPerUnitHour) | number | Price in USD per rate-unit hour (see the series' rateUnit). |
| evidenceStatus (at points[].evidenceStatus) | "observed" | "estimated" | Observed from a source, or a labeled estimate. |
| evidenceKind (at points[].evidenceKind) | "provider-primary" | "secondary-aggregator" | "compiled-estimate" | "published-snapshot" | Lineage of the value's source. |
| sourceLabel (at points[].sourceLabel) | string | Human-readable source name. |
| sourceUrl (at points[].sourceUrl) | string | null | HTTPS source URL when one exists. |
| observedAt (at points[].observedAt) | string | null | Exact observation timestamp; required on observed rows. |
| estimateReason (at points[].estimateReason) | string | null | Present exactly when evidenceStatus is estimated. |
| qualityStatus (at points[].qualityStatus) | "verified" | "provisional" | "secondary" | "estimated" | verified additionally requires durable raw evidence (digest + ref). |
| methodologyVersion (at points[].methodologyVersion) | string | null | Exporter/aggregation contract version; null only on old imports. |
| rawEvidenceSha256 (at points[].rawEvidenceSha256) | string | null | SHA-256 digest of the retained raw payload, when archived. |
| rawEvidenceRef (at points[].rawEvidenceRef) | string | null | Durable reference pinning the raw evidence (raw-snapshots Git object or Neon observation set). |
JSON/archive/curves/{date}.json
Market snapshot ·
Immutable dated permalink for one archived forward-curve session: monthly values keyed to the archive's union tenor window, anchor identity, spots, and series-level ingestion evidence, exactly as archived.
curl -s https://aicomputetracker.com/archive/curves/2026-07-02.json{date} — Archived UTC session date (YYYY-MM-DD); /archive/ lists every date. One of: 2026-07-02, 2026-07-03, 2026-07-04, 2026-07-05, 2026-07-08, 2026-07-09, 2026-07-10, 2026-07-11, 2026-07-12, 2026-07-13, 2026-07-14, 2026-07-15, 2026-07-17, 2026-07-18, 2026-07-19, 2026-07-20, 2026-07-21, 2026-07-22, 2026-07-23, 2026-07-24, 2026-07-25, 2026-07-26, 2026-07-27, 2026-07-28, 2026-07-31, 2026-08-21, 2026-08-22.
| Field | Type | Meaning |
|---|---|---|
| contractVersion (at contractVersion) | string | Semver of the open-data contract this payload was published under; see the stability policy. |
| license (at license) | object | Open-data license the payload is published under. |
| name (at license.name) | string | Human-readable license name. |
| url (at license.url) | string | Canonical license text URL. |
| attribution (at license.attribution) | string | The exact attribution line reusers should carry. |
| date (at date) | string | Archived UTC session date (YYYY-MM-DD) — the permalink identity. |
| capturedAt (at capturedAt) | string | null | Exact fetch time; null when the legacy source retained only a session date. |
| methodologyVersion (at methodologyVersion) | string | Exact methodology key the session was captured under; historical comparisons require an exact match. |
| estimatorVersion (at estimatorVersion) | string | Ladder-to-implied-median estimator version of the archive. |
| transformVersion (at transformVersion) | string | Smoothing-transform version of the archive. |
| unit (at unit) | string | Price unit shared by every archived curve value (USD per GPU-hour). |
| tenorKeys (at tenorKeys) | string[] | The archive's union monthly window: stable YYYY-MM identities every values array aligns to index-for-index. |
| curves (at curves) | array of objects | One entry per archived curve, values exactly as archived. |
| id (at curves[].id) | string | Curve id (matches /forward-curves.json chip ids). |
| anchor (at curves[].anchor) | object | First-point instrument identity the session was captured with. |
| instrument (at curves[].anchor.instrument) | "weekly-exact-time" | "monthly-average" | Anchor instrument: a future exact-time weekly contract, or the front-month monthly average (RTX 5090). |
| seriesTicker (at curves[].anchor.seriesTicker) | string | Kalshi series ticker backing the anchor. |
| eventTicker (at curves[].anchor.eventTicker) | string | null | Exact Kalshi event ticker; null on legacy imports. |
| methodologyVersion (at curves[].anchor.methodologyVersion) | string | Methodology key the anchor was published under. |
| spot (at curves[].spot) | number | The session's archived first-point (anchor) value in USD per GPU-hour. |
| values (at curves[].values) | number[] | Monthly values aligned to tenorKeys; null marks a tenor the session never observed — an explicit gap, never an interpolation. |
| series (at curves[].series) | object | null | Series-level ingestion evidence retained by live refreshes; null on legacy imports. |
| ingestionStatus (at curves[].series.ingestionStatus) | "live-fetch" | "legacy-import" | Live pipeline fetch, or a legacy import. |
| monthlySeriesTicker (at curves[].series.monthlySeriesTicker) | string | Kalshi monthly-average series ticker. |
| spotSeriesTicker (at curves[].series.spotSeriesTicker) | string | null | Weekly exact-time series ticker; null when the chip has none. |
| sourceUrl (at curves[].series.sourceUrl) | string | Kalshi API URL for the series. |
| fetchedAt (at curves[].series.fetchedAt) | string | ISO timestamp of the fetch. |
| latestMarketAt (at curves[].series.latestMarketAt) | string | null | Most recent exchange timestamp seen across the series. |
| monthlyEventCount (at curves[].series.monthlyEventCount) | integer | Monthly events discovered. |
| usableTenorCount (at curves[].series.usableTenorCount) | integer | Tenors with a usable ladder. |
| interpolatedTenorCount (at curves[].series.interpolatedTenorCount) | integer | Tenors filled by interpolation. |
| marketCount (at curves[].series.marketCount) | integer | Markets inspected. |
| twoSidedMarketCount (at curves[].series.twoSidedMarketCount) | integer | Markets quoting both sides. |
| totalVolume (at curves[].series.totalVolume) | number | Summed contract volume. |
| totalOpenInterest (at curves[].series.totalOpenInterest) | number | Summed open interest. |
| totalLiquidityUsd (at curves[].series.totalLiquidityUsd) | number | Summed resting liquidity in USD. |
| estimatorVersion (at curves[].series.estimatorVersion) | string | Estimator version the series was built with. |
| transformVersion (at curves[].series.transformVersion) | string | Transform version the series was built with. |
| points (at curves[].series.points) | array of objects | Per-point ladder evidence aligned with tenors. |
| kind (at curves[].series.points[].kind) | "spot" | "monthly" | Serialized point kind; "spot" is the historical name for the first curve anchor. |
| tenorKey (at curves[].series.points[].tenorKey) | string | null | Stable YYYY-MM identity for monthly points; the instrument-specific anchor has no key. |
| seriesTicker (at curves[].series.points[].seriesTicker) | string | Kalshi series ticker the ladder belongs to. |
| eventTicker (at curves[].series.points[].eventTicker) | string | null | Exact Kalshi event ticker; null on legacy imports. |
| sourceUrl (at curves[].series.points[].sourceUrl) | string | Kalshi API URL the ladder was fetched from. |
| latestMarketAt (at curves[].series.points[].latestMarketAt) | string | null | Most recent exchange timestamp exposed by the event, when present. |
| strikeCount (at curves[].series.points[].strikeCount) | integer | Number of strikes listed in the ladder. |
| twoSidedCount (at curves[].series.points[].twoSidedCount) | integer | Strikes quoting both a bid and an ask. |
| medianSpreadPoints (at curves[].series.points[].medianSpreadPoints) | number | null | Median bid/ask spread across the ladder, in probability points. |
| totalVolume (at curves[].series.points[].totalVolume) | number | Summed contract volume. |
| totalOpenInterest (at curves[].series.points[].totalOpenInterest) | number | Summed open interest. |
| totalLiquidityUsd (at curves[].series.points[].totalLiquidityUsd) | number | Summed resting liquidity in USD. |
| interpolated (at curves[].series.points[].interpolated) | boolean | True when the value was filled from neighboring tenors. |
| clampedToListedRange (at curves[].series.points[].clampedToListedRange) | boolean (optional) | True when the implied median sat on the listed strike boundary; absent on older snapshots. |
| estimated (at curves[].series.points[].estimated) | boolean | Backward-compatible flag: true whenever the point's quality is not quality-passed. |
JSON/archive/quotes/{date}.json
Live quotes ·
Immutable dated permalink for one day of quote-table class aggregates: primary on-demand hyperscaler floor and specialist median plus the separately labeled marketplace-access floor, per GPU, exactly as archived.
curl -s https://aicomputetracker.com/archive/quotes/2026-07-23.json{date} — Archived UTC capture date (YYYY-MM-DD); /archive/ lists every date. One of: 2026-07-23.
| Field | Type | Meaning |
|---|---|---|
| contractVersion (at contractVersion) | string | Semver of the open-data contract this payload was published under; see the stability policy. |
| license (at license) | object | Open-data license the payload is published under. |
| name (at license.name) | string | Human-readable license name. |
| url (at license.url) | string | Canonical license text URL. |
| attribution (at license.attribution) | string | The exact attribution line reusers should carry. |
| date (at date) | string | Archived UTC capture date (YYYY-MM-DD) — the permalink identity. |
| capturedAt (at capturedAt) | string | Exact capture timestamp of the day's aggregates. |
| comparisonPolicies (at comparisonPolicies) | object | Versioned comparison policies the aggregates were computed under. |
| primaryOnDemand (at comparisonPolicies.primaryOnDemand) | string | Policy version behind the hyperscaler floor and specialist median. |
| marketplaceAccess (at comparisonPolicies.marketplaceAccess) | string | Policy version behind the marketplace-access floor. |
| aggregates (at aggregates) | string | Human-readable aggregate semantics persisted by the archive. |
| unit (at unit) | string | USD per GPU-hour; per chip-hour for TPUs and Trainium. |
| gpus (at gpus) | object (map: id → object) | Class aggregates keyed by quote-table GPU id. |
| hyperscaler (at gpus{}.hyperscaler) | number | null | Primary on-demand hyperscaler floor; null when no eligible quote existed that day. |
| specialist (at gpus{}.specialist) | number | null | Primary on-demand specialist median; null when no eligible quote existed that day. |
| marketplace (at gpus{}.marketplace) | number | null | Separately labeled marketplace-access floor; null when no eligible quote existed that day. |
Live quotes ·
Hourly intraday marketplace ask tape: per-chip Vast.ai ask floor and ask median over verified on-demand offers, rolled into a bounded archive of daily point lists.
curl -s https://aicomputetracker.com/marketplace-tape.json| Field | Type | Meaning |
|---|---|---|
| contractVersion (at contractVersion) | string | Semver of the open-data contract this payload was published under; see the stability policy. |
| license (at license) | object | Open-data license the payload is published under. |
| name (at license.name) | string | Human-readable license name. |
| url (at license.url) | string | Canonical license text URL. |
| attribution (at license.attribution) | string | The exact attribution line reusers should carry. |
| schemaVersion (at schemaVersion) | integer | Artifact-level schema integer of the tape archive, versioned independently of contractVersion. |
| unit (at unit) | string | Price unit shared by every tape value (USD per GPU-hour). |
| note (at note) | string | Payload-level honesty caveat: these are listed asks, not clearing prices, and absent chips are explicit gaps. |
| cadence (at cadence) | string | Intended capture cadence; scheduled runs can drift or skip, so missed hours are real gaps. |
| retainedDays (at retainedDays) | integer | Daily roll depth: the archive keeps the newest N days of points. |
| collectedThrough (at collectedThrough) | string | null | ISO timestamp of the newest capture; null while the tape has no points yet. |
| days (at days) | array of objects | One entry per retained UTC day, oldest first. |
| date (at days[].date) | string | UTC date (YYYY-MM-DD) every point in the day belongs to. |
| points (at days[].points) | array of objects | The day's captures in chronological order, appended and never edited. |
| capturedAt (at days[].points[].capturedAt) | string | Exact ISO capture timestamp — the point's identity. |
| chips (at days[].points[].chips) | object (map: id → object) | Per-chip observations keyed by quote-table GPU id; a chip that failed its capture or offer-count guard is absent for the hour. |
| askFloorUsdHr (at days[].points[].chips{}.askFloorUsdHr) | number | Cheapest verified on-demand ask, USD per GPU-hour. |
| askMedianUsdHr (at days[].points[].chips{}.askMedianUsdHr) | number | Median verified on-demand ask, USD per GPU-hour. |
| usableOffers (at days[].points[].chips{}.usableOffers) | integer | Verified rentable offers behind the observation (always at or above the shared minimum-offers guard). |
JSON/buildout.json
Core data ·
Provenanced ledger of frontier-scale AI datacenter sites: operator, location, accelerators, current and planned capacity, status, key dates — every figure traceable to a dated public source via per-site claims.
curl -s https://aicomputetracker.com/buildout.json| Field | Type | Meaning |
|---|---|---|
| contractVersion (at contractVersion) | string | Semver of the open-data contract this payload was published under; see the stability policy. |
| license (at license) | object | Open-data license the payload is published under. |
| name (at license.name) | string | Human-readable license name. |
| url (at license.url) | string | Canonical license text URL. |
| attribution (at license.attribution) | string | The exact attribution line reusers should carry. |
| asOf (at asOf) | string | Survey date of the ledger (YYYY-MM-DD) — the dataset's own inline stamp. |
| unit (at unit) | string | Capacity unit for currentItMw/plannedItMw (megawatts). |
| note (at note) | string | Payload-level honesty caveat: best public estimates mixing IT-load and campus-power conventions per source; nulls are real gaps. |
| summary (at summary) | object | Derived ledger totals (never hand-typed). |
| sites (at summary.sites) | integer | Tracked sites. |
| operating (at summary.operating) | integer | Sites with operating status. |
| plannedGw (at summary.plannedGw) | integer | Rounded sum of each site's planned (or current, if larger) capacity, GW. |
| sites (at sites) | array of objects | One entry per tracked frontier-scale site. |
| id (at sites[].id) | string | Stable site slug. |
| operator (at sites[].operator) | string | Operator(s) of the site. |
| site (at sites[].site) | string | Campus / site name. |
| location (at sites[].location) | object | Structured site location. |
| city (at sites[].location.city) | string (optional) | City, when public. |
| region (at sites[].location.region) | string | US state name, or region descriptor for non-US / multi-site rows. |
| country (at sites[].location.country) | string | Country (US, UAE, ...). |
| accelerators (at sites[].accelerators) | string | Accelerator types and counts where published (claim-backed free text). |
| currentItMw (at sites[].currentItMw) | number | null | Energized capacity in MW; null until energized or where no public figure exists. |
| plannedItMw (at sites[].plannedItMw) | number | null | Planned end-state capacity in MW (estimate); null when no figure is public. |
| status (at sites[].status) | "operating" | "building" | "announced" | Site status; building = under construction. |
| keyDates (at sites[].keyDates) | object | Key public dates (YYYY-MM or YYYY-MM-DD), claim-backed. |
| announced (at sites[].keyDates.announced) | string (optional) | Announcement date. |
| firstPower (at sites[].keyDates.firstPower) | string (optional) | First energization date. |
| multiSite (at sites[].multiSite) | boolean | True for capacity programs contracted across unnamed sites. |
| note (at sites[].note) | string | null | Site context note. |
| claims (at sites[].claims) | array of objects | Dated public sources — every figure above traces to at least one claim. |
| field (at sites[].claims[].field) | "currentItMw" | "plannedItMw" | "accelerators" | "status" | "announced" | "firstPower" | Which figure the claim evidences. |
| value (at sites[].claims[].value) | string | The claimed value, human-readable. |
| sourceLabel (at sites[].claims[].sourceLabel) | string | Publisher of the source. |
| sourceUrl (at sites[].claims[].sourceUrl) | string | HTTPS source URL. |
| sourceDate (at sites[].claims[].sourceDate) | string | Source publication date (YYYY-MM-DD, or YYYY-MM when the page carries no exact day). |
| est (at sites[].claims[].est) | boolean | True unless the figure comes from the operator's own announcement. |
XML/feed.xml
Market snapshot ·
RSS 2.0 market tape: a data-written desk note for the current forward snapshot, the latest desk-log events derived from the immutable archives (quote moves, anchor moves, tenor rolls, methodology and venue milestones), plus recent archived sessions.
curl -s https://aicomputetracker.com/feed.xmlTXT/llms.txt
Core data ·
Curated plain-text site map with dataset conventions for agents and LLM crawlers (llmstxt.org).
curl -s https://aicomputetracker.com/llms.txtCore data ·
Full plain-text dataset for answer engines: current GPU quotes, the forward board, token prices, accelerator specs, and citable class aggregates inlined as tables, each section stamped by its owning clock (market snapshot, live quotes, or core data).
curl -s https://aicomputetracker.com/llms-full.txtAn open-source Model Context Protocol server exposes these endpoints as typed tools for Claude and other MCP clients — the same data, freshness stamps, and caveats, with no key.
npx -y @aicomputetracker/mcpSource, tool list, and Claude Desktop / Claude Code setup live in packages/mcp in the site repository. Code MIT; the data it fetches stays CC BY 4.0.
Cite the site directly; every dataset reuse carries the CC BY 4.0 attribution line “AI Compute Tracker (aicomputetracker.com), CC BY 4.0”.
@misc{aicomputetracker2026,
author = {{AI Compute Tracker}},
title = {{AI Compute Tracker — The price of compute, tracked}},
year = {2026},
url = {https://aicomputetracker.com},
note = {Core data as of 2026-07-23; CC BY 4.0},
}DOI pending — the first Zenodo deposition has not been published yet. Once it is, this entry gains a doi field automatically.
DATA CONTRACT v1.1.0
The contract follows semantic versioning. Additive, backwards-compatible changes — a new field, a new endpoint — bump the minor version and never rename, remove, or re-type an existing field. Breaking changes — a renamed or removed field, changed units or semantics — bump the major version and are announced with a deprecation window during which the previous shape keeps being served. Documentation-only corrections bump the patch version.
Every JSON payload carries contractVersion and license at its root so a saved file stays self-describing. /price-history.json additionally keeps its own integer schemaVersion, which versions the ledger artifact itself and is never renamed.