---
title: "Market stats (host): per-GPU-model supply, listed-rate band, fill rate and time-to-first-rental — aggregate only"
method: GET
path: "/api/v1/hosts/market"
tags: ["hosts"]
---

# Market stats (host): per-GPU-model supply, listed-rate band, fill rate and time-to-first-rental — aggregate only

`GET /api/v1/hosts/market`

## Request

- Base URL: `https://amplerun-api.spiry.org`
- URL: `https://amplerun-api.spiry.org/api/v1/hosts/market`
- Auth: HTTP bearer

Our own marketplace, never a competitor's. Aggregate only: no machine id,
host id, offer id or any individual host's rate is ever returned — the
only rate values that escape are the p10/median/p90 band of a bucket of
at least `min_sample_size` listed machines, plus the CALLER's own median
listed rate (`your_rate_micro`). Below the threshold a bucket reports its
`sample_size` with every metric null; a median is never computed from a
handful of observations. `median_time_to_first_rental_s` has its own
sample gate (`rental_sample_size`), because a model can be widely listed
and barely rented. Window is half-open UTC `[from, to)`.

## Query parameters

- `gpu_model` string
- `window` string

## Response `200`

Per-model market aggregates.

- object
  - `window_days` integer, required
  - `from` string, date-time, required
  - `to` string, date-time, required
  - `min_sample_size` integer, required: Observations required before any metric is reported.
  - `models` object[], required
    - `gpu_model` string, required
    - `sample_size` integer, required: Listed machines of this model; the denominator of every metric below.
    - `listed_gpus` integer, nullable, required
    - `allocated_gpus` integer, nullable, required
    - `utilization_pct` integer, nullable, required: Floored allocated/listed GPU percent.
    - `rate_micro` object, nullable, required
      - `p10_micro` string, required: Unsigned base-10 integer as string; never a float.
      - `median_micro` string, required: Unsigned base-10 integer as string; never a float.
      - `p90_micro` string, required: Unsigned base-10 integer as string; never a float.
    - `fill_rate_pct` integer, nullable, required: Floored share of listed machines rented at least once in the window.
    - `rental_sample_size` integer, nullable, required
    - `median_time_to_first_rental_s` string, required: Unsigned base-10 integer as string; never a float.
    - `your_rate_micro` string, required: Unsigned base-10 integer as string; never a float.

## Other responses

- `default`: Error envelope. 401 unauthenticated, 403/404 forbidden, 409 conflict, 422 invalid input, 429 rate limited (code UNAVAILABLE, retryable:true, no Retry-After header), 503 unavailable money/provider state with retryable:true.

---

[API](https://skmtc.dev/amplerun/apis/amplerun-business-api.md) · [All operations](https://skmtc.dev/amplerun/apis/amplerun-business-api/llms.txt) · [OpenAPI document](https://skmtc.dev/amplerun/apis/amplerun-business-api/revisions/40944687fa52?raw)
