Markets catalog
A free Parquet file listing every Polymarket US market PMData has recorded, with the UTC dates it has L2 data for.
The Polymarket US markets catalog is one Parquet file that lists the Polymarket US markets PMData has recorded, and the UTC dates it has L2 data for each one. It needs no API key, uses no download quota and is updated daily.
Use it to find a market's market_slug and dates, then download the data with the API reference.
https://public-data.pmdata.dev/v1/polymarket_us/markets.parquetSchema
Columns are listed in file order.
| # | Field | Type | Description |
|---|---|---|---|
| 1 | exchange | string | Exchange: polymarket_us. |
| 2 | event_slug | string | null | Polymarket US event slug. One event can contain many markets. |
| 3 | market_slug | string | Polymarket US market slug. Use it as {market_slug} in the API. A few contain a double hyphen, e.g. dipcc-us-iran-contnts-2026--dilut. |
| 4 | record_start | timestamp (UTC) | First UTC date PMData has L2 data for the market. |
| 5 | record_end | timestamp (UTC) | Last UTC date PMData has L2 data for the market. Updated daily while the market is still being recorded. |
| 6 | market_start | timestamp (UTC) | Market start time set by Polymarket US. |
| 7 | market_end | timestamp (UTC) | Market end time set by Polymarket US; the latest value PMData has seen. |
| 8 | question | string | Market question. |
| 9 | title | string | null | Market title; in an event with many markets, the name of this market within it. |
| 10 | yes_outcome | string | The outcome whose price the l2 and trades files carry, e.g. Yes, Over, -1.50 or a team name such as Steelers. |
| 11 | no_outcome | string | The market's other outcome, e.g. Browns. |
| 12 | series | string | null | Polymarket US series, e.g. nfl-2025, btc-strike-hourly. |
| 13 | category | string | Polymarket US category, e.g. sports, crypto, politics. |
| 14 | market_type | string | null | e.g. moneyline, spreads, totals, props, futures. |
event_slug, title, series and market_type can be empty for some markets.
Dates
record_startandrecord_endare UTC dates, the same dates as in the download URL/{YYYY}/{MM}/{DD}/.- If a market had no events at all on a day between
record_startandrecord_end, there is no file for that day. The API returns404 Not Found, which uses no download quota.
Example
Find a market by its question, then see which dates PMData recorded:
import pandas as pd
url = "https://public-data.pmdata.dev/v1/polymarket_us/markets.parquet"
catalog = pd.read_parquet(url)
# By question text
matches = catalog[catalog["question"].str.contains("football", case=False, na=False)]
# Or every market in one event
# matches = catalog[catalog["event_slug"] == "<event_slug>"]
print(matches[["market_slug", "question", "yes_outcome", "record_start", "record_end"]])Then download a date in that range:
https://api.pmdata.dev/v1/polymarket_us/l2/{YYYY}/{MM}/{DD}/{market_slug}.parquetThe catalog covers L2. A trades file exists only for days the market traded; see Polymarket US historical data details.
