---
title: "GET /v2/market/gainers"
method: GET
path: "/v2/market/gainers"
tags: ["Product Market"]
---

# GET /v2/market/gainers

`GET /v2/market/gainers`

## Request

- Base URL: `https://api.arbital.xyz` (the document declares no server; this is the origin it was published from)
- URL: `https://api.arbital.xyz/v2/market/gainers`
- Auth: none declared

Returns the top gainers by rolling 24-hour percentage price change, with the largest gain first. Category all composes the existing canonical Crypto and Stocks catalogues with an independent, filtered Codex open-market memecoin ranking; category can select one universe. Values are percentage points, zero and missing changes are excluded, and exact contract duplicates follow curated-source priority. Reads only shared server snapshots refreshed every 30 seconds; no request-time provider or chart fan-out. Missing categories are explicit and usable snapshots expire after five minutes. An available empty list is distinct from 503 unavailability. Fetch mini-charts separately from the candles endpoint using each item asset and range=day.

## Query parameters

- `category` 'all' | 'crypto' | 'memecoins' | 'stocks'
- `limit` integer

## Response `200`

A ranked snapshot, with explicit category availability and freshness

- ProductMarketMoversResponseV1
  - `category` 'all' | 'crypto' | 'memecoins' | 'stocks', required
  - `direction` 'gainers' | 'losers', required
  - `period` '24h', required
  - `view_revision` 'market-movers-24h-v1', required
  - `availability` 'available' | 'partial', required
  - `freshness` 'fresh' | 'reconnecting' | 'stale', required
  - `coverage` 'unknown' | 'partial', required: Bounded provider discovery and curated catalogues do not prove exhaustive market coverage.
  - `observed_at_ms` string, nullable, required: Oldest contributing snapshot/source clock. Each item retains its original observation clock.
  - `available_categories` string[], required
  - `missing_categories` string[], required
  - `items` ProductMarketMoverV1[], required
    - `holders_count` string
    - `created_at_ms` string
    - `bonding_progress_pct` string
    - `categories` string[]
    - `asset` union, required
      - object
        - `address` string, required
        - `chain_id` 'solana:mainnet-beta', required
      - object
        - `address` string, required
        - `chain_id` 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
    - `image_url` string, uri, nullable, required
    - `liquidity_usd` string, nullable, required
    - `market_cap_usd` string, nullable, required
    - `name` string, nullable, required
    - `observed_at_ms` string, required
    - `price_change_24h_pct` string, required
    - `price_usd` string, nullable, required
    - `rank` integer, required
    - `symbol` string, nullable, required
    - `volume_24h_usd` string, nullable, required
    - `asset_category` 'crypto' | 'memecoins' | 'stocks', required

## Other responses

- `400`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `408`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `413`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `503`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.

---

[API](https://skmtc.dev/arbital/apis/arbital-api.md) - [All operations](https://skmtc.dev/arbital/apis/arbital-api/llms.txt) - [OpenAPI document](https://skmtc.dev/arbital/apis/arbital-api/revisions/bb0185edf43a?raw)
