---
title: "Moving markets"
method: GET
path: "/v1/markets/moving"
tags: ["Markets"]
---

# Moving markets

`GET /v1/markets/moving`

## Request

- Base URL: `https://crowdintel.xyz/api`
- URL: `https://crowdintel.xyz/api/v1/markets/moving`
- Auth: HTTP bearer

**Min tier: `free`.** Markets ranked by absolute price change over a recent window (requires >= 3 trades per market). Cursor-paginated.

## Query parameters

- `period_hours` integer
- `limit` integer
- `cursor` string
- `category` string
- `search` string

## Response `200`

Cursor-paginated ranked markets.

- object
  - `data` MarketRank[]
    - `slug` string
    - `title` string, nullable
    - `category` string, nullable
    - `whale_volume` number, nullable
    - `price_change` number, nullable
    - `trade_count` integer, nullable
  - `next_cursor` string, nullable

## Other responses

- `400`: Malformed parameters or a rejected guardrail (e.g. unfiltered trades query, cluster blowup, window > 90 days).
- `401`: Missing, invalid, or revoked API key. Returned before the rate limiter runs, so it carries no `X-RateLimit-*` headers.
- `403`: Key valid but its tier is below this endpoint's minimum. Returned before the rate limiter runs, so it carries no `X-RateLimit-*` headers.
- `429`: Hourly or monthly rate limit exceeded.

---

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