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

# GET /v2/market/search

`GET /v2/market/search`

## 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/search`
- Auth: none declared

q alone preserves six legacy matches or one exact address result. Any asset_class, chain_id, cursor or limit opts into catalogue search (default 20, max 50). Tokens use positive audited crypto identities; Stocks use issuer-verified exact contracts; unknowns appear only in All. Class/network filters precede ranking of the full collected catalogues. Ranking is exact symbol/name, prefix, then substring, with canonical identity tie-break. All adds at most 20 Codex candidates; coverage is explicitly non-exhaustive. Exact addresses obey filters. Cursors pin a process-local snapshot for 30 seconds and bind q, class, chain and limit; expiration, eviction or restart requires restarting search. Missing or possibly truncated required catalogues return 503.

## Query parameters

- `q` string, required
- `asset_class` 'all' | 'tokens' | 'stocks'
- `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161'
- `cursor` string
- `limit` integer

## Response `200`

A bounded relevance-ranked token result set

- union
  - ProductTokenSearchResponseV1
    - `evidence` ProductTokenSearchEvidenceV1: Optional evidence for the shared search owner. Retrieval/serving times are Arbital clocks; this adapter does not supply a provider observation time. Available means the returned rows have the declared search fields, not exhaustive provider or asset coverage.
      - `availability` 'available' | 'partial', required
      - `coverage` object, required
        - `exhaustive` false, required
        - `incomplete_items` integer, required: Returned rows missing name, symbol, price, market cap, 24h volume, liquidity or 24h price change. Nullable fields in each row identify the missing facts; optional images are not counted.
        - `provider_limit` 20, required
        - `rejected_items` integer, required
        - `response_limit` 1 | 6, required
        - `scope` 'bounded_search_results', required
      - `freshness` 'fresh' | 'stale', required
      - `provider_observed_at_ms` unknown, required
      - `retrieved_at_ms` string, required
      - `served_at_ms` string, required
      - `source` 'codex', required
    - `items` ProductMarketTokenV1[], required
      - `evidence` ProductRankingFields
      - `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, nullable, required
      - `price_usd` string, nullable, required
      - `rank` integer, required
      - `symbol` string, nullable, required
      - `volume_24h_usd` string, nullable, required
    - `query` string, required
  - ProductAssetSearchPage
    - `items` ProductClassifiedSearchToken[], required
      - `evidence` ProductRankingFields
      - `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, nullable, required
      - `price_usd` string, nullable, required
      - `rank` integer, required
      - `symbol` string, nullable, required
      - `volume_24h_usd` string, nullable, required
      - `asset_class` 'tokens' | 'stocks' | 'unknown', required
      - `classification` object, required
        - `source` string, nullable, required
        - `revision` 'catalogue-identity-v1', required
    - `query` string, required
    - `next_cursor` string, nullable, required
    - `evidence` ProductAssetSearchEvidence, required: Full collected catalogues are filtered before ranking/paging. All adds at most 20 Codex candidates. Coverage is never exhaustive global search; missing or truncated required sources return 503.
      - `source` 'catalogues_and_codex', required
      - `provider_observed_at_ms` unknown, required
      - `retrieved_at_ms` string, required
      - `served_at_ms` string, required
      - `freshness` 'fresh' | 'stale', required
      - `availability` 'partial', required
      - `coverage` object, required
        - `scope` 'supported_catalogues_and_bounded_codex', required
        - `exhaustive` false, required
        - `collected_items` integer, required
        - `codex_limit` 20, required
        - `sources` string[], required
        - `classification_revision` 'catalogue-identity-v1', 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.
- `429`: 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)
