---
title: "Download Tick Data"
method: GET
path: "/v2/data/ticks"
tags: ["data"]
---

# Download Tick Data

`GET /v2/data/ticks`

## Request

- Base URL: `https://api.predexon.com`
- URL: `https://api.predexon.com/v2/data/ticks`
- Auth: API key in header `x-api-key`

Download raw, tick-level history as signed Apache Parquet URLs. Returns a list of Parquet **parts** (each with its row/byte counts and ID/time coverage range) plus the dataset schema. Feed the signed URLs into your own DuckDB, Polars, pandas, or Spark.

**Releasing soon** — this dataset is in a gated private preview and is not yet reachable with a standard API key.

Finalized data only: raw ticks are compacted daily at 06:00 UTC, so requests for today/future (or any day without a manifest) return `404 not_final`. Pick the day(s) with exactly one of `date`, `start_date`+`end_date`, or `start_time`+`end_time` (epoch ms). Signed URLs expire after ~1 hour.

## Query parameters

- `venue` 'polymarket' | 'kalshi' | 'opinion', required: Dataset key.
- `date` string, nullable: Single UTC day, YYYY-MM-DD.
- `start_date` string, nullable: Range start, YYYY-MM-DD (pair with end_date).
- `end_date` string, nullable: Range end, YYYY-MM-DD (inclusive).
- `start_time` integer, nullable: Window start, epoch ms UTC. Selects/derives days and prunes parts by ts range.
- `end_time` integer, nullable: Window end, epoch ms UTC (inclusive).
- `market_id` string, nullable: Prune to the part(s) covering this market/ticker.

## Response `200`

Successful Response

- TicksResponse: Signed-URL download response for a venue/date (or date range).
  - `venue` string, required
  - `date` string, nullable
  - `start_date` string, nullable
  - `end_date` string, nullable
  - `start_time` integer, nullable
  - `end_time` integer, nullable
  - `market_id` string, nullable
  - `status` string, required
  - `format` string, required
  - `compression` string, required
  - `schema` TickSchemaField[], required: Column names and types in the Parquet files.
    - `name` string, required
    - `type` string, required
  - `sort_order` string[], required: Columns the files are globally sorted by.
  - `parts` TickPart[], required
    - `url` string, required: Short-lived signed GET URL for one Parquet file.
    - `rows` integer, required
    - `bytes` integer, required
    - `id_min` string, nullable: Lowest ID-column value in the part.
    - `id_max` string, nullable
    - `ts_min` integer, nullable: Earliest timestamp (epoch ms) in the part.
    - `ts_max` integer, nullable
    - `expires_at` string, required: When the signed URL stops working (~1 hour out).
  - `total_rows` integer, required
  - `total_bytes` integer, required

## Other responses

- `400`: Bad or missing parameters (invalid venue, range, or params).
- `404`: `not_final` (day not compacted yet) or `not_found` (no data for venue/date/market).
- `500`: Internal Server Error.

## Changes

- **2026-11-03** `b30fe81532b4`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/predexon/apis/predexon-api/changes/v2/data/ticks/get.md)

---

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