Skip to main content

Aperiodic Python Client

Python client library for Aperiodic.io — institutional-grade market microstructure, liquidity and order flow metrics with full exchange universe coverage. Turn flow dynamics into alpha in hours, not months. No tick infrastructure to build or maintain.

Access pre-computed derivative and microstructure metrics with parallel downloads for optimal performance.

Installation

pip install aperiodic

Install from source:

git clone https://github.com/aperiodic-io/aperiodic-client.git
cd aperiodic-client
pip install -e .

Authentication

All endpoints require your Aperiodic.io API key passed as api_key="...".

The one exception is preview data: with preview=True the api_key is optional — omit it and the shared public demo key is used automatically.

Symbology

Symbols are expected in Atlas unified symbology — a standardised, exchange-agnostic naming scheme.

Quick Start

from datetime import date
from aperiodic import get_metrics

df = get_metrics(
    api_key="your-api-key",
    metric="flow",
    timestamp="true",
    interval="1h",
    exchange="binance-futures",
    symbol="perpetual-BTC-USDT:USDT", # See https://github.com/aperiodic-io/atlas
    start_date=date(2024, 1, 1),
    end_date=date(2024, 1, 31),
)

print(df.head())
print(df.columns)

Available Functions

Dataset Sync Async metric values
Order, L1, L2 metrics get_metrics get_metrics_async see below
OHLCV candles get_ohlcv get_ohlcv_async
VWAP get_vwap get_vwap_async
TWAP get_twap get_twap_async
Derivative metrics get_derivative_metrics get_derivative_metrics_async see below
Exchange symbols get_symbols get_symbols_async

get_metrics — Trade & order book metrics

Trade metrics (TradeMetric): "vtwap", "flow", "trade_size", "impact", "range", "updownticks", "run_structure", "returns", "slippage"

L1 order book (L1Metric): "l1_price", "l1_imbalance", "l1_liquidity"

L2 order book (L2Metric): "l2_imbalance", "l2_liquidity"

get_derivative_metrics — Derivative metrics

"basis", "funding", "open_interest", "derivative_price"

Core Parameters

All data endpoints share this shape:

  • api_key: Your Aperiodic.io API key. Optional when preview=True — the shared public demo key is used automatically.
  • timestamp: "exchange" or "true".
  • interval: "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "1d".
  • exchange: "binance-futures" | "okx-perps" | "hyperliquid-perps".
  • symbol: Atlas-formatted symbol string (e.g. "perpetual-BTC-USDT:USDT").
  • start_date / end_date: Inclusive date boundaries.
  • preview: bool = False. When True, routes to the free preview endpoint — no subscription required, but the request must match an exact whitelisted parameter combination (exchange, symbol, interval, timestamp, date range).
  • show_progress: show tqdm progress bar (default: True).
  • max_concurrent: max parallel file downloads (default: 10).

Examples

Trade metrics

from datetime import date
from aperiodic import get_metrics

flow_df = get_metrics(
    api_key="your-api-key",
    metric="flow",
    timestamp="exchange",
    interval="5m",
    exchange="binance-futures",
    symbol="perpetual-ETH-USDT:USDT", # See https://github.com/aperiodic-io/atlas
    start_date=date(2024, 2, 1),
    end_date=date(2024, 2, 29),
)

L1 / L2 order book metrics

from datetime import date
from aperiodic import get_metrics

l1_df = get_metrics(
    api_key="your-api-key",
    metric="l1_imbalance",
    timestamp="true",
    interval="1m",
    exchange="binance-futures",
    symbol="perpetual-BTC-USDT:USDT", # See https://github.com/aperiodic-io/atlas
    start_date=date(2024, 3, 1),
    end_date=date(2024, 3, 7),
)

l2_df = get_metrics(
    api_key="your-api-key",
    metric="l2_liquidity",
    timestamp="true",
    interval="1m",
    exchange="binance-futures",
    symbol="perpetual-BTC-USDT:USDT", # See https://github.com/aperiodic-io/atlas
    start_date=date(2024, 3, 1),
    end_date=date(2024, 3, 7),
)

Derivative metrics

from datetime import date
from aperiodic import get_derivative_metrics

funding_df = get_derivative_metrics(
    api_key="your-api-key",
    metric="funding",
    timestamp="exchange",
    interval="1h",
    exchange="binance-futures",
    symbol="perpetual-BTC-USDT:USDT", # See https://github.com/aperiodic-io/atlas
    start_date=date(2024, 1, 1),
    end_date=date(2024, 3, 31),
)

Symbol discovery

from aperiodic import get_symbols

symbols = get_symbols(api_key="your-api-key", exchange="binance-futures") # Returns Atlas symbols: https://github.com/aperiodic-io/atlas
perpetuals = [s for s in symbols if s.startswith("perpetual-")]
print(f"Found {len(perpetuals)} perpetual symbols")

Async usage

import asyncio
from datetime import date
from aperiodic import get_metrics_async, get_symbols_async

async def main() -> None:
    symbols = await get_symbols_async(
        api_key="your-api-key",
        exchange="binance-futures",
    )
    for symbol in symbols:
        df = await get_metrics_async(
            api_key="your-api-key",
            metric="l1_liquidity",
            timestamp="true",
            interval="1h",
            exchange="binance-futures",
            symbol=symbol, # See https://github.com/aperiodic-io/atlas
            start_date=date(2024, 1, 1),
            end_date=date(2026, 1, 1),
        )

asyncio.run(main())

Preview (no subscription required)

Anyone can access a curated slice of data via preview=True — no subscription and no API key required. Omit api_key and the client uses the shared public demo key automatically. The request must match the exact parameters (exchange, symbol, interval, timestamp, date range) for one of the whitelisted entries.

Available preview datasets: aperiodic.io/catalog#preview

from datetime import date
from aperiodic import get_ohlcv

# Use the exact parameters listed at https://aperiodic.io/catalog#preview
df = get_ohlcv(
    exchange="binance-futures",
    symbol="perpetual-BTC-USDT:USDT",
    interval="5m",
    timestamp="exchange",
    start_date=date(2025, 5, 1),
    end_date=date(2025, 5, 31),
    preview=True,
)

print(df.head())

Performance Notes

  • Downloads are split into monthly parquet files server-side.
  • Files are fetched concurrently and concatenated locally.
  • Final output is sorted and filtered to your exact requested date range.
  • Tune max_concurrent based on your network and compute resources.

Requirements

  • Python 3.11+
  • httpx
  • polars
  • tqdm
  • nest-asyncio

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aperiodic-4.1.0.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aperiodic-4.1.0-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file aperiodic-4.1.0.tar.gz.

File metadata

  • Download URL: aperiodic-4.1.0.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.18.0 {"ci":true,"cpu":"x86_64","distro":{"id":"noble","libc":{"lib":"glibc","version":"2.39"},"name":"Ubuntu","version":"24.04"},"implementation":{"name":"CPython","version":"3.11.16"},"installer":{"name":"hatch","version":"1.18.0"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.11.16","system":{"name":"Linux","release":"6.17.0-1022-azure"}} HTTPX2/2.12.0

File hashes

Hashes for aperiodic-4.1.0.tar.gz
Algorithm Hash digest
SHA256 567266e78d21a3f2b40a784b9597ed757aa6483de3398cbf1c71e6885a321f45
MD5 c5ea8e2aaff8fc27d9c605254105e61c
BLAKE2b-256 d89d8edb19736d397e2f40da88c9ab7c538a854abe6f2cbb58bfa8e486fffd14

See more details on using hashes here.

File details

Details for the file aperiodic-4.1.0-py3-none-any.whl.

File metadata

  • Download URL: aperiodic-4.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.18.0 {"ci":true,"cpu":"x86_64","distro":{"id":"noble","libc":{"lib":"glibc","version":"2.39"},"name":"Ubuntu","version":"24.04"},"implementation":{"name":"CPython","version":"3.11.16"},"installer":{"name":"hatch","version":"1.18.0"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.11.16","system":{"name":"Linux","release":"6.17.0-1022-azure"}} HTTPX2/2.12.0

File hashes

Hashes for aperiodic-4.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d2bee2010f1f62a3cec7dd981398384b7776c53df26e404b23ea4793b01cad3
MD5 790ff31e9f969fdbc93df9226e80af7b
BLAKE2b-256 f8d7e8871f1c4dd00ee369e16f1bd7a1b6765dc5b4f8fcea80748c65b144d320

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

4.1.0 This release

2 files

4.0.10

2 files

4.0.9

2 files

4.0.8

2 files

4.0.7

2 files

4.0.6

2 files

4.0.5

2 files

4.0.4

2 files

4.0.3

2 files

4.0.2

2 files

4.0.1

2 files

4.0.0

2 files

3.1.1

2 files

3.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page