Python SDK for the Polaris market data API
Project description
polaris-py
Python SDK for the Polaris API, optimized for notebook workflows and trading scripts. Documentation can be found at https://polaris.supply/docs
Install (uv)
uv sync --group dev
Useful commands:
uv run python
uv lock
Quickstart
from polaris_data import PolarisClient
with PolarisClient(api_key="polaris_key_your_key") as client:
row_count = 0
for row in client.replay(
exchange="binance",
asset="BTC-USDT",
from_="2024-01-01T00:00:00Z",
to="2024-01-01T01:00:00Z",
):
row_count += 1
print(f"Replayed {row_count} rows")
If api_key is omitted, the client reads POLARIS_API_KEY from the environment.
Supported input time types
Methods that take from_ and to accept:
- ISO 8601 strings (
"2024-01-01T00:00:00Z") datetime.datetimedatetime.date- Unix epoch microseconds (
int/float)
Methods
Open endpoints:
health()exchanges()assets(exchange=...)timerange(exchange=..., asset=...)catalog()
Authenticated endpoints:
replay(exchange=..., asset=..., from_=..., to=..., standard=True)(stream rows from dataset download URL)trades(exchange=..., asset=..., from_=..., to=..., limit=1000)(collects all pages)ohlcv(exchange=..., asset=..., from_=..., to=..., interval=..., format=None)
For event/data endpoints, standard=True is the default. Pass standard=False when you explicitly need raw schema payloads.
Dataset replay (recommended)
For row-by-row iteration without managing file paths, use replay(...):
from polaris_data import PolarisClient
with PolarisClient(api_key="polaris_key_your_key") as client:
for row in client.replay(
exchange="binance",
asset="BTC-USDT",
from_="2024-01-01T00:00:00Z",
to="2024-01-01T01:00:00Z",
):
print(row)
replay(...) checks the local replay cache first, then fetches and caches the dataset if needed.
Replay cache is enabled by default and stored under:
- macOS:
~/Library/Caches/polaris/datasets/replay - Linux:
~/.cache/polaris/datasets/replay - Windows:
%LOCALAPPDATA%\\polaris\\datasets\\replay
Set POLARIS_DATASET_DOWNLOAD_DIR to override the base directory globally.
Use replay_cache_enabled=False to disable caching, or replay_cache_dir=... to set a custom path.
Error handling
from polaris_data import PolarisClient, RateLimitedError, UnauthorizedError
client = PolarisClient()
try:
client.replay(
exchange="binance",
asset="BTC-USDT",
from_="2024-01-01T00:00:00Z",
to="2024-01-01T01:00:00Z",
)
except UnauthorizedError:
print("API key is required")
except RateLimitedError as err:
print(f"Rate limited. Reset at: {err.reset_at}")
Tests
uv run pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file polaris_data-0.3.0.tar.gz.
File metadata
- Download URL: polaris_data-0.3.0.tar.gz
- Upload date:
- Size: 31.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c71a4c6e1ce2e516af77c041583417f66efa52d2ed067ace0fb288e0ee601de5
|
|
| MD5 |
a0188de259e60671af04f977bff5d79b
|
|
| BLAKE2b-256 |
4caa28d2d4feace7f4aea69bb31b9ec92cf31e4a47527cc23f70cf9bf42f440c
|
File details
Details for the file polaris_data-0.3.0-py3-none-any.whl.
File metadata
- Download URL: polaris_data-0.3.0-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18f1204663076f08329678a1283e2c7ca00dd22d033b7c5be8c022143dbae402
|
|
| MD5 |
c282613953f5baec66f585ff8e813bcc
|
|
| BLAKE2b-256 |
f7595e92c8d1fb35970b3494580787573b9ce8b4aa247f64de98b73e6b43f9bb
|