---
title: "DEX Token OHLCV Price"
method: GET
path: "/gateway/v1/dex/token/price"
tags: ["DEX"]
---

# DEX Token OHLCV Price

`GET /gateway/v1/dex/token/price`

Returns DEX-pool-weighted OHLCV bars (timestamp, open, high, low, close, volume_usd) for a single token identified by `chain` + `address`. USD only. Bars are sorted ascending by `timestamp`.

**Use for** meme coins, newly-launched tokens, and any DEX-native asset where `/v1/market/price` returns nothing. Prefer the standard `/v1/market/price` for major listed tokens (BTC, ETH, etc.).

**Time window:** `time_range` (default `24h`) sets the window; `from`+`to` (Unix seconds or `YYYY-MM-DD`) override it. Bars use closed-interval semantics, so `24h × 1h` returns 25 bars. Maximum 1500 bars per call — combinations exceeding the cap (e.g. `30d × 5m`) return 422. `time_range=max` returns the largest allowed 1500-bar window for the selected interval.

**Identity:** `chain` (enum) + `address` (EVM hex or Solana base58). No symbol input.

## Query parameters

- `chain` 'ethereum' | 'base' | 'bsc' | 'arbitrum' | 'optimism' | 'polygon' | 'avalanche' | 'solana', required — Chain the token lives on. Can be `ethereum`, `base`, `bsc`, `arbitrum`, `optimism`, `polygon`, `avalanche`, or `solana`.
- `address` string, required — Token contract address — 0x-prefixed hex (42 chars) for EVM chains, base58 for Solana. NOT a ticker symbol.
- `interval` '1m' | '5m' | '15m' | '30m' | '1h' | '4h' | '12h' | '1d' | '7d' — Candle bucket size. Sub-day intervals (`1m`-`4h`) are the typical choice for active DEX analysis.
- `time_range` '1h' | '6h' | '12h' | '24h' | '7d' | '30d' | '90d' | '180d' | '365d' | 'max' — Window of historical data to return. `max` returns the largest allowed 1500-bar window for the selected interval. Ignored when both `from` and `to` are set.
- `from` string — Start of custom date range (Unix seconds or YYYY-MM-DD). Must be set together with `to`. Overrides `time_range` when set.
- `to` string — End of custom date range (Unix seconds or YYYY-MM-DD). Must be set together with `from`. Overrides `time_range` when set.

## Response `200`

OK

- SimpleListResponseDexTokenPriceBar
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `data` DexTokenPriceBar[], nullable, required
    - `close` number, double, required — Closing price in USD
    - `high` number, double, required — Highest price during the bar in USD
    - `low` number, double, required — Lowest price during the bar in USD
    - `open` number, double, required — Opening price in USD
    - `timestamp` integer, required — Unix timestamp in seconds at the bar's open
    - `volume_usd` number, double, required — USD volume traded during the bar
  - `meta` ObjectResponseMeta, 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

## 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/4153a9cb5145/schema)
