py3spread
Python client for the 3spread API: machine-readable SEC filing data. Insider transactions, 13F holdings, fund portfolios, beneficial ownership, private offerings, and more, normalized so the same data point has the same key for every filer.
API keys are always free for individuals: sign up at 3spread.com/auth/signup.
Install
pip install py3spread
Requires Python 3.10+. One dependency (httpx), fully type-hinted.
Sixty seconds
from py3spread import Client
client = Client() # reads THREESPREAD_API_KEY from the environment
# one page
page = client.filings.list(ticker="AAPL", limit=5)
# or let the client walk the pagination for you
for txn in client.insiders.iter_transactions(
issuer_ticker="AAPL",
transaction_start="2026-01-01",
transaction_end="2026-06-30",
):
print(txn["filer_name"], txn["transaction_shares"], txn["transaction_price_per_share"])
Financial statements, metrics, and ratios from 10-K / 10-Q filings:
for m in client.financials.iter_metrics(
ticker="AAPL", version="latest", category="total_revenue", period_length=3,
):
print(m["period_end"], m["fiscal_quarter"], m["value"])

That heatmap is 40 lines against this client; it lives in the 13F notebook along with sixteen other executed notebooks; see Examples.
Where things are
- Guides: authentication, pagination, errors, data conventions, and keeping a store in sync
- Reference: every client method, resource, and exception, generated from the code
- Examples: 17 executed notebooks and 12 scripts on GitHub
- Field-level semantics: what each response field means is documented on the 3spread API reference; this site documents the client
Beta status
3spread is in public beta. History currently
reaches back to filings accepted in early 2021 and expands per the
roadmap. Check what is populated with
client.coverage before assuming a gap.