---
title: "Market Correlations"
method: GET
path: "/gateway/v1/prediction-market/correlations"
tags: ["Prediction Market"]
---

# Market Correlations

`GET /gateway/v1/prediction-market/correlations`

## Request

- Base URL: `https://api.asksurf.ai`
- URL: `https://api.asksurf.ai/gateway/v1/prediction-market/correlations`
- Auth: HTTP bearer

Returns 30-day Pearson price correlation pairs between Polymarket markets within a category.

Correlation data covers the top 100 markets by 7-day volume globally; lower-volume markets may not have correlation data.

Filter by `condition_id` to find all markets correlated with a specific market, or set `min_correlation` to control the threshold.

The `category` parameter is required.

**Data refresh:** ~5 minutes.

## Query parameters

- `category` 'crypto' | 'culture' | 'economics' | 'financials' | 'politics' | 'stem' | 'sports', required: Category (correlations are within-category only)
- `condition_id` string: Filter to pairs involving this market
- `min_correlation` number, double: Minimum absolute correlation
- `limit` integer: Results per page
- `offset` integer: Pagination offset

## Response `200`

OK

- DataResponseCorrelationItem
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `data` CorrelationItem[], nullable, required
    - `category` string, required: Shared category
    - `correlation` number, double, required: 30-day Pearson correlation coefficient
    - `market_a_condition_id` string, required: First market condition ID
    - `market_a_question` string: First market question
    - `market_b_condition_id` string, required: Second market condition ID
    - `market_b_question` string: Second market question
    - `overlapping_days` integer, required: Number of trading days with data for both markets
  - `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.dev/asksurf/apis/asksurf-public-rest-api/revisions/91774fdd5302?raw)
