PMData LogoPMDataDocs
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

FieldTypeDescription
observationsTimestamptimestamp[us]Source observation timestamp.
receiveMicrosecondTimestamptimestamp[us]PMData receive timestamp.
pricelarge_stringReported mid or benchmark price, scaled by 10^18.
bidlarge_stringReported bid price, scaled by 10^18.
asklarge_stringReported ask price, scaled by 10^18.
validFromTimestamptimestamp[us]Stream report validity start timestamp.
expiresAttimestamp[us]Stream report expiration timestamp.
versionlarge_stringStream 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.

SymbolRaw Parquet priceAfter dividing by 10^18
BTCUSD6389020066500000000000063890.200665
DOGEUSD725045028735712700.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())