Who owns the GPU supply on each marketplace
const url = 'https://api.flotera.com/api/v1/public/market-supply';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.flotera.com/api/v1/public/market-supplyCompanion to getPublicMarketStats: that one answers “what is
happening to GPU economics”, this one answers “who owns the supply”
— consumer rig owners, workstation/pro operators, or datacenters.
Same public mechanics (no auth, edge caching, CORS *) and the same
boundary: aggregates only, never offer books or machine listings.
Every figure names its population, because they are NOT one measurement:
reported— the marketplace’s OWN counters across its whole market (Vast, Akash). The consumer/workstation/datacenter split is a proxy by GPU model: consumer GeForce silicon lives in enthusiast rigs, datacenter accelerators live in racks.sample— our own snapshot. For Vast that is the rentable-offer sample over the popular-card catalog (busy machines are invisible there), but it carries the platform’s own host flags —hosting_typeandverification— so the datacenter/verified shares are exact host-level facts, not a silicon proxy. For Clore the sample covers the full market including rented machines.- RunPod publishes no counts at all; inventing shares out of the number of listed models would be a lie, so it gets exactly that: a count of listed model classes per silicon class.
A missing denominator yields null, never zero: “no share
computable” and “zero datacenter hosts” are different answers.
Responses
Section titled “Responses”Supply composition per market source.
object
RFC 3339 UTC with microsecond precision.
object
A market DATA source — a superset of MarketplaceName. Tier-B venues (tensordock, runpod, akash) feed the price index only: no accounts, no listings, no rentals — see infrastructure/26-market-intelligence.md §3. Execution paths (accounts, links, offers) keep MarketplaceName; a tier-B name is never valid there.
The venue’s own counters across its whole market. Absent when the venue publishes none.
object
Cards across the venue’s whole market, their count.
object
Owner-type proxy by GPU model: consumer GeForce lives in enthusiast rigs, datacenter accelerators live in racks, workstation cards sit in between.
Decimal string or null when unknown.
Busy share of the class, weighted by each model’s market size. Null when the venue reports no usage for any model of the class.
Machines of the class — only where the sample counts machines (Clore).
Our own snapshot; population names what it covers. Absent when we hold no offer sample for the venue.
object
What the snapshot covers — e.g. Vast: available offers over the popular-card catalog (busy machines are invisible there); Clore: the full market snapshot including rented machines. Shares below describe THIS population, not the whole venue.
Hosts the venue itself flags as datacenter (hosting_type) — an exact host-level fact, not a silicon proxy.
Decimal string or null when unknown.
Decimal string or null when unknown.
Rented cards among those whose state the venue disclosed.
object
Owner-type proxy by GPU model: consumer GeForce lives in enthusiast rigs, datacenter accelerators live in racks, workstation cards sit in between.
Decimal string or null when unknown.
Busy share of the class, weighted by each model’s market size. Null when the venue reports no usage for any model of the class.
Machines of the class — only where the sample counts machines (Clore).
For venues that publish no counts at all (RunPod): how many listed model classes fall into each silicon class. A count of models, NOT a supply share — shares invented from it would lie.
object
Example
{ "generated_at": "2026-07-25T10:15:30.123456Z", "sources": [ { "marketplace": "vast", "reported": { "classes": [ { "silicon": "consumer" } ] }, "sample": { "classes": [ { "silicon": "consumer" } ] } } ]}