Data sets
Chainlink(no proxy)
Direct from Chainlink, not Polymarket proxy. Available since 2026-06-07.
Data type: streams
Format: Daily Parquet file.
import requests
api_key = "<YOUR_API_KEY>"
symbol = "BTCUSD"
data_type = "streams"
data_date = "2026-07-11"
file_name = f"{symbol}_{data_type}_{data_date}.parquet"
url = f"https://api.pmdata.dev/chainlink/{symbol}/{data_type}/{file_name}"
response = requests.get(
url,
headers={"api_key": api_key},
timeout=300,
)
Schema
| Field | Type | Description |
|---|---|---|
observationsTimestamp | timestamp[us] | Source observation timestamp. |
receiveMicrosecondTimestamp | timestamp[us] | PMData receive timestamp. |
price | large_string | Reported mid or benchmark price, scaled by 10^18. |
bid | large_string | Reported bid price, scaled by 10^18. |
ask | large_string | Reported ask price, scaled by 10^18. |
validFromTimestamp | timestamp[us] | Stream report validity start timestamp. |
expiresAt | timestamp[us] | Stream report expiration timestamp. |
version | large_string | Stream report version. |
Price scaling
The price, bid, and ask values are stored as integers in string columns
and are scaled by 10^18. Divide the stored value by 10^18 to get the
decimal price.
| Symbol | Raw Parquet price | After dividing by 10^18 |
|---|---|---|
BTCUSD | 63890200665000000000000 | 63890.200665 |
DOGEUSD | 72504502873571270 | 0.07250450287357127 |
Convert scaled prices
Use Python's Decimal type to preserve the full price precision:
from decimal import Decimal
import pandas as pd
df = pd.read_parquet("BTCUSD_streams_2026-07-18.parquet")
scale = Decimal(10) ** 18
for column in ["price", "bid", "ask"]:
df[column] = df[column].map(lambda value: Decimal(value) / scale)
print(df[["price", "bid", "ask"]].head())