05Open data

Take the data with you

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, license, and machine description

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.

License

CC BY 4.0

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

OpenAPI 3.1

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.json

Three clocks, never conflated

The 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.

The three freshness clocks and what each one covers
ClockAs ofCoversRefreshed by
Market snapshotForward curves, the terminal, and the market railThe forward-market pipeline (Kalshi ladder snapshot)
Live quotesAutomated quote rows and the observation ledger they feedThe weekly quote refresh plus the scheduled price-capture workflow
Core dataManual quote survey, hardware specs, financials, conventionsManual survey sweeps (each one bumps the core-data stamp)

Endpoints

JSON/forward-curves.json

Forward curves

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-by-field schema of the /forward-curves.json payload
FieldTypeMeaning
contractVersion (at contractVersion)stringSemver of the open-data contract this payload was published under; see the stability policy.
license (at license)objectOpen-data license the payload is published under.
name (at license.name)stringHuman-readable license name.
url (at license.url)stringCanonical license text URL.
attribution (at license.attribution)stringThe exact attribution line reusers should carry.
asOf (at asOf)stringMarket-snapshot timestamp (ISO 8601) the curves were reconstructed at.
unit (at unit)stringPrice unit shared by every curve value (USD per GPU-hour).
note (at note)stringPayload-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)integerFirst curve index at which at least one chip failed a ladder-quality gate; per-point quality stays authoritative.
estimatorVersion (at estimatorVersion)stringVersion of the ladder-to-implied-median estimator.
transformVersion (at transformVersion)stringVersion of the smoothing transform applied to monthly tenors.
methodologyVersion (at methodologyVersion)stringCombined 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)stringKalshi series ticker backing the anchor.
eventTicker (at anchors{}.eventTicker)string | nullExact Kalshi event ticker; null on legacy imports.
methodologyVersion (at anchors{}.methodologyVersion)stringMethodology key the anchor was published under.
chips (at chips)array of objectsOne entry per published curve.
id (at chips[].id)stringCurve id (also the key into anchors).
label (at chips[].label)stringDisplay label of the chip.
memory (at chips[].memory)stringMemory configuration descriptor.
priorSnapshotChangePct (at chips[].priorSnapshotChangePct)number | nullAnchor move (%) vs the prior snapshot of the same contract and methodology; null when no comparable prior exists.
priorSnapshotAt (at chips[].priorSnapshotAt)string | nullISO timestamp of that comparable prior snapshot.
priorSnapshotElapsedMinutes (at chips[].priorSnapshotElapsedMinutes)integer | nullActual elapsed minutes since the prior snapshot (never assumed to be 1d).
period (at chips[].period)stringLabel of the compatible-history movement window.
periodChangePct (at chips[].periodChangePct)number | nullCompatible-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)objectSeries-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)stringKalshi monthly-average series ticker.
spotSeriesTicker (at chips[].provenance.spotSeriesTicker)string | nullWeekly exact-time series ticker; null when the chip has none.
sourceUrl (at chips[].provenance.sourceUrl)stringKalshi API URL for the series.
fetchedAt (at chips[].provenance.fetchedAt)stringISO timestamp of the fetch.
latestMarketAt (at chips[].provenance.latestMarketAt)string | nullMost recent exchange timestamp seen across the series.
monthlyEventCount (at chips[].provenance.monthlyEventCount)integerMonthly events discovered.
usableTenorCount (at chips[].provenance.usableTenorCount)integerTenors with a usable ladder.
interpolatedTenorCount (at chips[].provenance.interpolatedTenorCount)integerTenors filled by interpolation.
marketCount (at chips[].provenance.marketCount)integerMarkets inspected.
twoSidedMarketCount (at chips[].provenance.twoSidedMarketCount)integerMarkets quoting both sides.
totalVolume (at chips[].provenance.totalVolume)numberSummed contract volume.
totalOpenInterest (at chips[].provenance.totalOpenInterest)numberSummed open interest.
totalLiquidityUsd (at chips[].provenance.totalLiquidityUsd)numberSummed resting liquidity in USD.
estimatorVersion (at chips[].provenance.estimatorVersion)stringEstimator version the series was built with.
transformVersion (at chips[].provenance.transformVersion)stringTransform version the series was built with.
points (at chips[].provenance.points)array of objectsPer-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 | nullStable YYYY-MM identity for monthly points; the instrument-specific anchor has no key.
seriesTicker (at chips[].provenance.points[].seriesTicker)stringKalshi series ticker the ladder belongs to.
eventTicker (at chips[].provenance.points[].eventTicker)string | nullExact Kalshi event ticker; null on legacy imports.
sourceUrl (at chips[].provenance.points[].sourceUrl)stringKalshi API URL the ladder was fetched from.
latestMarketAt (at chips[].provenance.points[].latestMarketAt)string | nullMost recent exchange timestamp exposed by the event, when present.
strikeCount (at chips[].provenance.points[].strikeCount)integerNumber of strikes listed in the ladder.
twoSidedCount (at chips[].provenance.points[].twoSidedCount)integerStrikes quoting both a bid and an ask.
medianSpreadPoints (at chips[].provenance.points[].medianSpreadPoints)number | nullMedian bid/ask spread across the ladder, in probability points.
totalVolume (at chips[].provenance.points[].totalVolume)numberSummed contract volume.
totalOpenInterest (at chips[].provenance.points[].totalOpenInterest)numberSummed open interest.
totalLiquidityUsd (at chips[].provenance.points[].totalLiquidityUsd)numberSummed resting liquidity in USD.
interpolated (at chips[].provenance.points[].interpolated)booleanTrue 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)booleanBackward-compatible flag: true whenever the point's quality is not quality-passed.
points (at chips[].points)array of objectsSelf-describing per-tenor records (same values as curve, with evidence).
tenor (at chips[].points[].tenor)stringDisplay label of the tenor.
priceUsdPerGpuHour (at chips[].points[].priceUsdPerGpuHour)numberImplied 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)objectThe 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 | nullStable YYYY-MM identity for monthly points; the instrument-specific anchor has no key.
seriesTicker (at chips[].points[].evidence.seriesTicker)stringKalshi series ticker the ladder belongs to.
eventTicker (at chips[].points[].evidence.eventTicker)string | nullExact Kalshi event ticker; null on legacy imports.
sourceUrl (at chips[].points[].evidence.sourceUrl)stringKalshi API URL the ladder was fetched from.
latestMarketAt (at chips[].points[].evidence.latestMarketAt)string | nullMost recent exchange timestamp exposed by the event, when present.
strikeCount (at chips[].points[].evidence.strikeCount)integerNumber of strikes listed in the ladder.
twoSidedCount (at chips[].points[].evidence.twoSidedCount)integerStrikes quoting both a bid and an ask.
medianSpreadPoints (at chips[].points[].evidence.medianSpreadPoints)number | nullMedian bid/ask spread across the ladder, in probability points.
totalVolume (at chips[].points[].evidence.totalVolume)numberSummed contract volume.
totalOpenInterest (at chips[].points[].evidence.totalOpenInterest)numberSummed open interest.
totalLiquidityUsd (at chips[].points[].evidence.totalLiquidityUsd)numberSummed resting liquidity in USD.
interpolated (at chips[].points[].evidence.interpolated)booleanTrue 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)booleanBackward-compatible flag: true whenever the point's quality is not quality-passed.
  • Values are reconstructed market-implied levels, never current spot or executable quotes.
  • Check per-point quality: thin or interpolated points render hollow on the site and carry estimated: true here.

CSV/curves.csv

Forward 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.csv
  • UTF-8 BOM and formula-neutralized cells via the site-wide CSV policy.
  • The first row is a `# as_of` stamp; the header row follows it.

JSON/price-history.json

GPU price history

Live 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-by-field schema of the /price-history.json payload
FieldTypeMeaning
contractVersion (at contractVersion)stringSemver of the open-data contract this payload was published under; see the stability policy.
license (at license)objectOpen-data license the payload is published under.
name (at license.name)stringHuman-readable license name.
url (at license.url)stringCanonical license text URL.
attribution (at license.attribution)stringThe exact attribution line reusers should carry.
schemaVersion (at schemaVersion)integerArtifact-level schema integer, bumped only when the ledger shape itself changes; versioned independently of contractVersion.
generatedAt (at generatedAt)stringISO timestamp the artifact was exported.
asOf (at asOf)stringLatest observation date in the ledger (YYYY-MM-DD).
citableIdQualifier (at citableIdQualifier)stringMandatory qualifier for every citable series id: posted list/ask prices, not transactions.
series (at series)array of objectsEvery price series in the ledger.
id (at series[].id)stringLedger-internal series key; points reference it via seriesId.
gpu (at series[].gpu)stringQuote-table GPU id.
provider (at series[].provider)string | nullProvider name; null means a class aggregate, never an unnamed provider.
sku (at series[].sku)string | nullExact 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)stringInstance/configuration descriptor the price applies to.
region (at series[].region)stringRegion 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)stringSeries 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 objectsEvery dated observation, keyed to its series.
seriesId (at points[].seriesId)stringKey of the owning series in the payload's series array.
date (at points[].date)stringExact source/snapshot date, YYYY-MM-DD.
period (at points[].period)stringQuarter bucket (YYYYQn) used for display and gap detection.
usdPerUnitHour (at points[].usdPerUnitHour)numberPrice 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)stringHuman-readable source name.
sourceUrl (at points[].sourceUrl)string | nullHTTPS source URL when one exists.
observedAt (at points[].observedAt)string | nullExact observation timestamp; required on observed rows.
estimateReason (at points[].estimateReason)string | nullPresent 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 | nullExporter/aggregation contract version; null only on old imports.
rawEvidenceSha256 (at points[].rawEvidenceSha256)string | nullSHA-256 digest of the retained raw payload, when archived.
rawEvidenceRef (at points[].rawEvidenceRef)string | nullDurable reference pinning the raw evidence (raw-snapshots Git object or Neon observation set).
  • Incomparable series (units, billing models, methodologies) are never joined; missing capture dates are real gaps.

CSV/price-history.csv

GPU price history (CSV)

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.csv
  • UTF-8 BOM and formula-neutralized cells via the site-wide CSV policy.
  • Columns are append-only: citable_id and citable_id_qualifier were appended so existing positions stay stable.

JSON/price-history/{chip}.json

Per-chip price history

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-by-field schema of the /price-history/{chip}.json payload
FieldTypeMeaning
contractVersion (at contractVersion)stringSemver of the open-data contract this payload was published under; see the stability policy.
license (at license)objectOpen-data license the payload is published under.
name (at license.name)stringHuman-readable license name.
url (at license.url)stringCanonical license text URL.
attribution (at license.attribution)stringThe exact attribution line reusers should carry.
generatedAt (at generatedAt)stringISO timestamp the underlying artifact was exported.
asOf (at asOf)stringLatest observation date for this chip (YYYY-MM-DD).
gpu (at gpu)stringQuote-table GPU id the shard covers.
series (at series)array of objectsThe chip's price series.
id (at series[].id)stringLedger-internal series key; points reference it via seriesId.
gpu (at series[].gpu)stringQuote-table GPU id.
provider (at series[].provider)string | nullProvider name; null means a class aggregate, never an unnamed provider.
sku (at series[].sku)string | nullExact 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)stringInstance/configuration descriptor the price applies to.
region (at series[].region)stringRegion 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)stringSeries sharing a key share chip, unit, and billing semantics.
points (at points)array of objectsThe chip's dated observations.
seriesId (at points[].seriesId)stringKey of the owning series in the payload's series array.
date (at points[].date)stringExact source/snapshot date, YYYY-MM-DD.
period (at points[].period)stringQuarter bucket (YYYYQn) used for display and gap detection.
usdPerUnitHour (at points[].usdPerUnitHour)numberPrice 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)stringHuman-readable source name.
sourceUrl (at points[].sourceUrl)string | nullHTTPS source URL when one exists.
observedAt (at points[].observedAt)string | nullExact observation timestamp; required on observed rows.
estimateReason (at points[].estimateReason)string | nullPresent 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 | nullExporter/aggregation contract version; null only on old imports.
rawEvidenceSha256 (at points[].rawEvidenceSha256)string | nullSHA-256 digest of the retained raw payload, when archived.
rawEvidenceRef (at points[].rawEvidenceRef)string | nullDurable reference pinning the raw evidence (raw-snapshots Git object or Neon observation set).
  • Shard series do not carry citableId; resolve citable ids from /price-history.json.

JSON/archive/curves/{date}.json

Archived forward-curve session

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-by-field schema of the /archive/curves/{date}.json payload
FieldTypeMeaning
contractVersion (at contractVersion)stringSemver of the open-data contract this payload was published under; see the stability policy.
license (at license)objectOpen-data license the payload is published under.
name (at license.name)stringHuman-readable license name.
url (at license.url)stringCanonical license text URL.
attribution (at license.attribution)stringThe exact attribution line reusers should carry.
date (at date)stringArchived UTC session date (YYYY-MM-DD) — the permalink identity.
capturedAt (at capturedAt)string | nullExact fetch time; null when the legacy source retained only a session date.
methodologyVersion (at methodologyVersion)stringExact methodology key the session was captured under; historical comparisons require an exact match.
estimatorVersion (at estimatorVersion)stringLadder-to-implied-median estimator version of the archive.
transformVersion (at transformVersion)stringSmoothing-transform version of the archive.
unit (at unit)stringPrice 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 objectsOne entry per archived curve, values exactly as archived.
id (at curves[].id)stringCurve id (matches /forward-curves.json chip ids).
anchor (at curves[].anchor)objectFirst-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)stringKalshi series ticker backing the anchor.
eventTicker (at curves[].anchor.eventTicker)string | nullExact Kalshi event ticker; null on legacy imports.
methodologyVersion (at curves[].anchor.methodologyVersion)stringMethodology key the anchor was published under.
spot (at curves[].spot)numberThe 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 | nullSeries-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)stringKalshi monthly-average series ticker.
spotSeriesTicker (at curves[].series.spotSeriesTicker)string | nullWeekly exact-time series ticker; null when the chip has none.
sourceUrl (at curves[].series.sourceUrl)stringKalshi API URL for the series.
fetchedAt (at curves[].series.fetchedAt)stringISO timestamp of the fetch.
latestMarketAt (at curves[].series.latestMarketAt)string | nullMost recent exchange timestamp seen across the series.
monthlyEventCount (at curves[].series.monthlyEventCount)integerMonthly events discovered.
usableTenorCount (at curves[].series.usableTenorCount)integerTenors with a usable ladder.
interpolatedTenorCount (at curves[].series.interpolatedTenorCount)integerTenors filled by interpolation.
marketCount (at curves[].series.marketCount)integerMarkets inspected.
twoSidedMarketCount (at curves[].series.twoSidedMarketCount)integerMarkets quoting both sides.
totalVolume (at curves[].series.totalVolume)numberSummed contract volume.
totalOpenInterest (at curves[].series.totalOpenInterest)numberSummed open interest.
totalLiquidityUsd (at curves[].series.totalLiquidityUsd)numberSummed resting liquidity in USD.
estimatorVersion (at curves[].series.estimatorVersion)stringEstimator version the series was built with.
transformVersion (at curves[].series.transformVersion)stringTransform version the series was built with.
points (at curves[].series.points)array of objectsPer-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 | nullStable YYYY-MM identity for monthly points; the instrument-specific anchor has no key.
seriesTicker (at curves[].series.points[].seriesTicker)stringKalshi series ticker the ladder belongs to.
eventTicker (at curves[].series.points[].eventTicker)string | nullExact Kalshi event ticker; null on legacy imports.
sourceUrl (at curves[].series.points[].sourceUrl)stringKalshi API URL the ladder was fetched from.
latestMarketAt (at curves[].series.points[].latestMarketAt)string | nullMost recent exchange timestamp exposed by the event, when present.
strikeCount (at curves[].series.points[].strikeCount)integerNumber of strikes listed in the ladder.
twoSidedCount (at curves[].series.points[].twoSidedCount)integerStrikes quoting both a bid and an ask.
medianSpreadPoints (at curves[].series.points[].medianSpreadPoints)number | nullMedian bid/ask spread across the ladder, in probability points.
totalVolume (at curves[].series.points[].totalVolume)numberSummed contract volume.
totalOpenInterest (at curves[].series.points[].totalOpenInterest)numberSummed open interest.
totalLiquidityUsd (at curves[].series.points[].totalLiquidityUsd)numberSummed resting liquidity in USD.
interpolated (at curves[].series.points[].interpolated)booleanTrue 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)booleanBackward-compatible flag: true whenever the point's quality is not quality-passed.
  • Immutable permalink: an archived session's values never change; new sessions land as new dated URLs.
  • Values are reconstructed market-implied levels under the stated methodology, never current spot or executable quotes.

JSON/archive/quotes/{date}.json

Archived quote aggregates

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-by-field schema of the /archive/quotes/{date}.json payload
FieldTypeMeaning
contractVersion (at contractVersion)stringSemver of the open-data contract this payload was published under; see the stability policy.
license (at license)objectOpen-data license the payload is published under.
name (at license.name)stringHuman-readable license name.
url (at license.url)stringCanonical license text URL.
attribution (at license.attribution)stringThe exact attribution line reusers should carry.
date (at date)stringArchived UTC capture date (YYYY-MM-DD) — the permalink identity.
capturedAt (at capturedAt)stringExact capture timestamp of the day's aggregates.
comparisonPolicies (at comparisonPolicies)objectVersioned comparison policies the aggregates were computed under.
primaryOnDemand (at comparisonPolicies.primaryOnDemand)stringPolicy version behind the hyperscaler floor and specialist median.
marketplaceAccess (at comparisonPolicies.marketplaceAccess)stringPolicy version behind the marketplace-access floor.
aggregates (at aggregates)stringHuman-readable aggregate semantics persisted by the archive.
unit (at unit)stringUSD 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 | nullPrimary on-demand hyperscaler floor; null when no eligible quote existed that day.
specialist (at gpus{}.specialist)number | nullPrimary on-demand specialist median; null when no eligible quote existed that day.
marketplace (at gpus{}.marketplace)number | nullSeparately labeled marketplace-access floor; null when no eligible quote existed that day.
  • Immutable permalink: an archived day's aggregates never change; new days land as new dated URLs.
  • A null is a real gap — aggregates are never carried forward between observation dates.

JSON/marketplace-tape.json

Marketplace ask tape

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-by-field schema of the /marketplace-tape.json payload
FieldTypeMeaning
contractVersion (at contractVersion)stringSemver of the open-data contract this payload was published under; see the stability policy.
license (at license)objectOpen-data license the payload is published under.
name (at license.name)stringHuman-readable license name.
url (at license.url)stringCanonical license text URL.
attribution (at license.attribution)stringThe exact attribution line reusers should carry.
schemaVersion (at schemaVersion)integerArtifact-level schema integer of the tape archive, versioned independently of contractVersion.
unit (at unit)stringPrice unit shared by every tape value (USD per GPU-hour).
note (at note)stringPayload-level honesty caveat: these are listed asks, not clearing prices, and absent chips are explicit gaps.
cadence (at cadence)stringIntended capture cadence; scheduled runs can drift or skip, so missed hours are real gaps.
retainedDays (at retainedDays)integerDaily roll depth: the archive keeps the newest N days of points.
collectedThrough (at collectedThrough)string | nullISO timestamp of the newest capture; null while the tape has no points yet.
days (at days)array of objectsOne entry per retained UTC day, oldest first.
date (at days[].date)stringUTC date (YYYY-MM-DD) every point in the day belongs to.
points (at days[].points)array of objectsThe day's captures in chronological order, appended and never edited.
capturedAt (at days[].points[].capturedAt)stringExact 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)numberCheapest verified on-demand ask, USD per GPU-hour.
askMedianUsdHr (at days[].points[].chips{}.askMedianUsdHr)numberMedian verified on-demand ask, USD per GPU-hour.
usableOffers (at days[].points[].chips{}.usableOffers)integerVerified rentable offers behind the observation (always at or above the shared minimum-offers guard).
  • Ask floor and median describe listed offers, not clearing prices.
  • Absent chips and missed hours are explicit gaps — never interpolated or carried forward.

JSON/buildout.json

Frontier buildout ledger

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-by-field schema of the /buildout.json payload
FieldTypeMeaning
contractVersion (at contractVersion)stringSemver of the open-data contract this payload was published under; see the stability policy.
license (at license)objectOpen-data license the payload is published under.
name (at license.name)stringHuman-readable license name.
url (at license.url)stringCanonical license text URL.
attribution (at license.attribution)stringThe exact attribution line reusers should carry.
asOf (at asOf)stringSurvey date of the ledger (YYYY-MM-DD) — the dataset's own inline stamp.
unit (at unit)stringCapacity unit for currentItMw/plannedItMw (megawatts).
note (at note)stringPayload-level honesty caveat: best public estimates mixing IT-load and campus-power conventions per source; nulls are real gaps.
summary (at summary)objectDerived ledger totals (never hand-typed).
sites (at summary.sites)integerTracked sites.
operating (at summary.operating)integerSites with operating status.
plannedGw (at summary.plannedGw)integerRounded sum of each site's planned (or current, if larger) capacity, GW.
sites (at sites)array of objectsOne entry per tracked frontier-scale site.
id (at sites[].id)stringStable site slug.
operator (at sites[].operator)stringOperator(s) of the site.
site (at sites[].site)stringCampus / site name.
location (at sites[].location)objectStructured site location.
city (at sites[].location.city)string (optional)City, when public.
region (at sites[].location.region)stringUS state name, or region descriptor for non-US / multi-site rows.
country (at sites[].location.country)stringCountry (US, UAE, ...).
accelerators (at sites[].accelerators)stringAccelerator types and counts where published (claim-backed free text).
currentItMw (at sites[].currentItMw)number | nullEnergized capacity in MW; null until energized or where no public figure exists.
plannedItMw (at sites[].plannedItMw)number | nullPlanned 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)objectKey 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)booleanTrue for capacity programs contracted across unnamed sites.
note (at sites[].note)string | nullSite context note.
claims (at sites[].claims)array of objectsDated 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)stringThe claimed value, human-readable.
sourceLabel (at sites[].claims[].sourceLabel)stringPublisher of the source.
sourceUrl (at sites[].claims[].sourceUrl)stringHTTPS source URL.
sourceDate (at sites[].claims[].sourceDate)stringSource publication date (YYYY-MM-DD, or YYYY-MM when the page carries no exact day).
est (at sites[].claims[].est)booleanTrue unless the figure comes from the operator's own announcement.
  • Best public estimates, not an audited census: capacity figures mix IT-load and campus-power conventions per underlying source — each claim names its basis.
  • A null capacity is a real gap (no public figure), never zero.

XML/feed.xml

Market tape (RSS)

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.xml

TXT/llms.txt

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.txt

TXT/llms-full.txt

llms-full.txt

Core 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.txt

MCP server

An 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/mcp

Source, 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.

Academic use

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.

Stability policy

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.