---
title: "Exchange Market Coverage"
method: GET
path: "/gateway/v1/exchange/coverage"
tags: ["Exchange"]
---

# Exchange Market Coverage

`GET /gateway/v1/exchange/coverage`

Returns covered spot markets on Bithumb, Upbit, HashKey, bitFlyer, Coinone, and Korbit with latest ticker metrics, candle availability, technical score, and data status.

**Ticker fields:** latest price, 24h open/high/low, previous close, signed 24h price and percent change, and 24h base/quote volume when the exchange provides them.

Use the returned `pair` values with `/exchange/candles` for historical OHLCV.

**Coverage notes:** bitFlyer coverage is currently strongest for weekly (`1w`) OHLCV. Korbit markets can have sparse intraday rows during no-trade periods; inspect `data_status` and `data_actionability` before using a market.

## Query parameters

- `exchange` 'bithumb' | 'upbit' | 'hashkey' | 'bitflyer' | 'coinone' | 'korbit' — Exchange identifier. When omitted, returns all supported exchanges.
- `q` string — Free-text search over pair, base currency, or quote currency
- `quote` string — Quote currency filter
- `type` 'spot' — Market type
- `status` 'active' | 'inactive' — Market status filter
- `data_status` 'covered' | 'official_empty_all' | 'official_empty_ticker' | 'official_empty_5m' | 'official_empty_weekly' | 'stale_gt_7d' | 'stale_30m_to_7d' | 'recent_but_lt_min_ta_candles' | 'missing_4h' | 'missing_latest_ta' — Market data coverage status filter
- `sort_by` 'pair' | 'price' | 'change_24h' | 'volume_24h' | 'technical_score' | 'latest_candle_at' | 'status' — Sort field
- `order` 'asc' | 'desc' — Sort order
- `limit` integer — Results per page
- `offset` integer — Pagination offset

## Response `200`

OK

- DataResponseExchangeCoverageItem
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `data` ExchangeCoverageItem[], nullable, required
    - `active` boolean, required — Whether the market is active
    - `base` string, required — Base currency
    - `change_24h_abs` number, double — 24h signed price change amount in quote currency
    - `change_24h_pct` number, double — 24h signed price change percentage. Example: -2.68 means -2.68%
    - `data_actionability` string — Whether the current data status needs pipeline attention
    - `data_status` string — Current market data coverage status
    - `exchange` string, required — Exchange identifier
    - `high_24h` number, double — 24h high price
    - `latest_4h_candle_at` integer — Latest 4h candle open time in Unix seconds
    - `latest_5m_candle_at` integer — Latest 5m candle open time in Unix seconds
    - `latest_candle_at` integer — Latest available candle open time in Unix seconds
    - `latest_price` number, double — Latest observed trade price
    - `latest_ticker_at` integer — Latest ticker observation time in Unix seconds
    - `latest_weekly_candle_at` integer — Latest weekly candle open time in Unix seconds
    - `listing_date` integer — Earliest known exchange listing or first-trading date for this market, in Unix seconds when available.
    - `low_24h` number, double — 24h low price
    - `open_24h` number, double — 24h opening price
    - `pair` string, required — Trading pair like BTC/KRW
    - `prev_close` number, double — Previous closing price
    - `quote` string, required — Quote currency
    - `region` string, required — Exchange market region
    - `status` string, required — Market status
    - `technical_score` number, double — Latest OHLCV-derived technical score
    - `technical_score_at` integer — Technical score generation time in Unix seconds
    - `technical_score_label` string — Technical score label
    - `type` string, required — Market type
    - `volume_24h_base` number, double — 24h trading volume in base currency units
    - `volume_24h_quote` number, double — 24h quote-currency trading volume
  - `meta` OffsetMeta, required
    - `cached` boolean, required — Whether this response was served from cache
    - `credits_used` integer, required — Credits deducted for this request
    - `empty_reason` string — Hint explaining why the data array is empty, when applicable
    - `has_more` boolean — Whether more items may exist beyond this response. For offset-paged endpoints, continue with a larger offset. For time-series endpoints without offset/cursor controls, true means the requested time range hit an upstream cap; narrow from/to to continue. Omitted when exhaustion cannot be proven.
    - `limit` integer, required — Maximum number of items returned in this response
    - `offset` integer, required — Number of items skipped (pagination offset)
    - `total` integer — Total number of matching items (before pagination). Omitted when total is unknown.
    - `watermark` integer — Warehouse watermark (Unix seconds) this response was computed at, on warehouse-backed endpoints (e.g. Hyperliquid /trades/aggregate) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.

## Other responses

- `default` — Error

---

[API](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api.md) · [All operations](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/asksurf/asksurf-public-rest-api/revisions/498f461e81c4/schema)
