Python client for Telonex prediction market data API
Project description
telonex
Python SDK for Telonex - prediction market data provider.
Installation
pip install telonex
For DataFrame support:
pip install telonex[dataframe] # pandas support
pip install telonex[polars] # polars support
pip install telonex[all] # both
Quick Start
Download Data to Disk
from telonex import download
# Download using asset_id
download(
api_key="your-api-key",
exchange="polymarket",
channel="quotes",
asset_id="21742633143463906290569050155826241533067272736897614950488156847949938836455",
from_date="2025-01-01",
to_date="2025-01-07",
download_dir="./data",
)
# Download using slug + outcome
download(
api_key="your-api-key",
exchange="polymarket",
channel="book_snapshot_5",
slug="will-trump-win-2024",
outcome="Yes",
from_date="2025-01-01",
to_date="2025-01-07",
)
Load Directly into DataFrame
from telonex import get_dataframe
# Load into pandas DataFrame
df = get_dataframe(
api_key="your-api-key",
exchange="polymarket",
channel="quotes",
slug="will-trump-win-2024",
outcome="Yes",
from_date="2025-01-01",
to_date="2025-01-07",
)
# Load into polars DataFrame
df = get_dataframe(
api_key="your-api-key",
exchange="polymarket",
channel="quotes",
asset_id="21742633...",
from_date="2025-01-01",
to_date="2025-01-07",
engine="polars",
)
Async Support
import asyncio
from telonex import download_async
async def main():
await download_async(
api_key="your-api-key",
exchange="polymarket",
channel="book_snapshot_5",
asset_id="21742633...",
from_date="2025-01-01",
to_date="2025-01-07",
)
asyncio.run(main())
Check Data Availability
from telonex import get_availability
# Check what date ranges are available (no API key required)
availability = get_availability(
exchange="polymarket",
asset_id="21742633143463906290569050155826241533067272736897614950488156847949938836455",
)
# Returns a dict with channel availability
for channel, dates in availability["channels"].items():
print(f"{channel}: {dates['from_date']} to {dates['to_date']}")
Dataset Downloads (No API Key Required)
from telonex import get_markets_dataframe, get_tags_dataframe
# Browse all available markets
markets = get_markets_dataframe(exchange="polymarket")
print(f"Found {len(markets)} markets")
# Filter to markets with trade data
has_trades = markets[markets['trades_from'] != '']
print(has_trades[['slug', 'question', 'status']].head())
# Get tag definitions
tags = get_tags_dataframe(exchange="polymarket")
Or download to disk:
from telonex import download_markets, download_tags
path = download_markets(exchange="polymarket", download_dir="./data")
path = download_tags(exchange="polymarket", download_dir="./data")
Identifier Options
You can identify the data you want using one of these combinations:
| Option | Parameters | Example |
|---|---|---|
| Asset ID | asset_id |
asset_id="21742633..." |
| Market ID + Outcome | market_id, outcome |
market_id="0xabc...", outcome="Yes" |
| Market ID + Outcome ID | market_id, outcome_id |
market_id="0xabc...", outcome_id=0 |
| Slug + Outcome | slug, outcome |
slug="will-trump-win", outcome="Yes" |
| Slug + Outcome ID | slug, outcome_id |
slug="will-trump-win", outcome_id=0 |
Available Channels
| Channel | Description |
|---|---|
quotes |
Trade quotes/prices |
book_snapshot_5 |
Order book snapshots (top 5 levels) |
book_snapshot_25 |
Order book snapshots (top 25 levels) |
book_snapshot_full |
Full order book snapshots |
onchain_fills |
On-chain trades with maker/taker addresses |
Parameters
download() / download_async()
Returns: List[str] - List of downloaded file paths
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str | required | Telonex API key |
exchange |
str | required | Exchange name (e.g., "polymarket") |
channel |
str | required | Data channel |
from_date |
str | required | Start date (inclusive), YYYY-MM-DD |
to_date |
str | required | End date (exclusive), YYYY-MM-DD |
download_dir |
str | "./datasets" |
Directory to save files |
concurrency |
int | 5 | Max concurrent downloads |
verbose |
bool | False | Enable verbose logging |
force_download |
bool | False | Re-download even if file exists |
get_dataframe()
Returns: pandas.DataFrame or polars.DataFrame
Same parameters as above, plus:
| Parameter | Type | Default | Description |
|---|---|---|---|
engine |
str | "pandas" |
DataFrame engine ("pandas" or "polars") |
download_dir |
str | "./datasets" |
Directory to save files |
get_availability() / get_availability_async()
Returns: dict - Availability info with channel date ranges
| Parameter | Type | Default | Description |
|---|---|---|---|
exchange |
str | required | Exchange name (e.g., "polymarket") |
asset_id |
str | None | Asset/token ID |
market_id |
str | None | Market ID (requires outcome) |
slug |
str | None | Market slug (requires outcome) |
outcome |
str | None | Outcome label (e.g., "Yes") |
outcome_id |
int | None | Outcome index (0 or 1) |
Note: No API key required for availability endpoints.
Error Handling
from telonex import (
download,
get_availability,
AuthenticationError,
NotFoundError,
RateLimitError,
EntitlementError,
)
# Download errors
try:
download(...)
except AuthenticationError:
print("Invalid API key")
except RateLimitError as e:
print(f"Rate limited, retry after {e.retry_after}s")
except EntitlementError as e:
print(f"Access denied. Downloads remaining: {e.downloads_remaining}")
Caching
Downloaded files are cached locally. If a file already exists, it won't be re-downloaded. To force re-download, delete the cached file or use a different download_dir.
Links
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 telonex-0.4.0.tar.gz.
File metadata
- Download URL: telonex-0.4.0.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
960458b23f65ff330664a603d4eef68813c1cf6a3ba1b0d5d9475418a1d93a5c
|
|
| MD5 |
2d9073b5c0c54a7c86f15dbb083845e0
|
|
| BLAKE2b-256 |
95280fc7a817697d5675919d4fd5a40d7a528b856d9c8ab097ffd7a9014b8fed
|
File details
Details for the file telonex-0.4.0-py3-none-any.whl.
File metadata
- Download URL: telonex-0.4.0-py3-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e156b83cecbe2dccdf46d5a7102ae445b3360bc75058fb6dbebbca99a5c64e23
|
|
| MD5 |
fcb421a70a39f930ad78ba1f8ab6843c
|
|
| BLAKE2b-256 |
c0c5af509d7573baf3999e6fcb257f78b0d458f1012676a362b49d6e5f7af8f4
|