Financial Data API

Python SDK for Financial Data

Type hints, async support, pandas integration. The Python stock API for quants and researchers.

pip install eulerpool

Quick start

Three steps to your first data call

1. Install
$ pip install eulerpool
2. Authenticate
import eulerpool

client = eulerpool.Eulerpool("ep_live_xxx")
3. Fetch data
profile = client.equity.profile("US0378331005")
metrics = client.equity.metrics("AAPL")

print(f"P/E {metrics['valuation']['pe']}")

Features

Built for Python developers

01

Typed client

Fully annotated client with IDE autocomplete for all 25 resources and 250+ methods.

02

Async support

async/await for high-throughput pipelines. No blocking I/O.

03

DataFrame-ready

Responses are plain dicts and lists that load straight into pandas. Built for factor research.

04

Bulk quotes

market.quotes_bulk() fetches many ISINs in one call. Optimized for backtesting.

Example

Factor research with pandas

factor_research.py
import eulerpool
import pandas as pd

client = eulerpool.Eulerpool("ep_live_xxx")

tickers = ["AAPL", "MSFT", "GOOGL", "NVDA"]
rows = [client.equity.metrics(t) for t in tickers]

df = pd.DataFrame([{
    "ticker": m["ticker"],
    "pe": m["valuation"]["pe"],
    "net_margin": m["profitability"]["netMargin"],
} for m in rows])

value_stocks = df[df.pe < 15]
print(value_stocks.sort_values("pe"))

Frequently asked questions

Run pip install eulerpool or add eulerpool to your requirements.txt. The SDK requires Python 3.8+ and has a single dependency (httpx). It works in Jupyter notebooks, scripts, and production applications.

Yes. Every method returns plain dicts and lists that load directly into pandas — pd.DataFrame(client.equity.metrics("AAPL")["historical"]) gives you twelve years of annual financials as a DataFrame. This integrates cleanly with numpy, scipy, and backtrader.

Yes. The SDK is designed to work seamlessly in Jupyter notebooks. Initialize the client, call endpoints, and work with the results in cells. Auto-complete and inline docs work in JupyterLab and VS Code notebooks.

Yes. Transient errors (429 and 5xx) are retried automatically with exponential backoff — two retries by default, configurable via max_retries. Timeouts are configurable per client.

Yes. The SDK provides both synchronous and asynchronous clients. Use eulerpool.AsyncEulerpool for async/await patterns with asyncio or any ASGI framework. Both clients share the same API surface.

Ready to build?

Get your free API key. 100,000 calls/month. No credit card required.

Get your free API key