Market data your backtests and AI agents can both trust.
A typed REST API and a native MCP server connect Claude, GPT, and your own models to prices, SEC fundamentals, holdings, and macro — point-in-time and survivorship-free. One API key. The truth your research and your agents both depend on.
from synapse_discovery import SynapseClient
# One key. Point-in-time by default.
client = SynapseClient("your-api-key")
aapl = client.fundamentals("AAPL")[0]
print(f"Revenue: ${aapl.revenue/1e9:.1f}B")
# → Revenue: $383.3B
Split-adjusted daily close · sample illustration
One source of truth for financial data
Prices, fundamentals, holdings, and macro behind a single API key — so you stop stitching together vendors and start trusting your inputs.
Equity Prices
Clean daily OHLCV with raw, split-adjusted, and total-return modes — point-in-time correct for backtesting.
SEC Fundamentals
Standardized XBRL financials from every 10-K and 10-Q since 2009, unified with earlier history from a second source.
Fund Holdings
ETF and mutual-fund composition with full constituent detail — see exactly what each fund holds.
Macro & Economic Data
FRED economic series, Treasury yield curves, and market-context snapshots alongside your equities data.
Point-in-Time & Survivorship-Free
Query data as it was known on any date, with delisted and bankrupt names kept in — no look-ahead or survivorship bias.
AI-Native (MCP)
A first-class MCP server lets Claude, GPT, and other agents query directly — plus a structured REST API and bulk Parquet.
For developers & AI
Plug in an agent. It already knows the data.
A native MCP server exposes typed tools to Claude, GPT, and your own agents — and every REST response carries provenance, quality, and cost metadata, so agents discover capabilities, validate queries, and audit their own outputs without hand-holding.
Capabilities discovery
Datasets, exchanges, time ranges, update schedules — everything an agent needs to plan queries.
Field definitions
Types, units, nullability, examples. Machine-readable JSON Schema for every field.
Fuzzy matching
Resolve "Apple" → AAPL with confidence scores. Handle ticker changes and ambiguity.
Query → result → provenance
Every response includes metadata that makes AI outputs auditable and reduces hallucinated finance.
- Provenance: source, collection time, adjustment model
- Quality: completeness %, staleness, outlier flags
- Cost: units consumed, cache hit/miss
- Error hints: "Did you mean AAPL?" with suggestions
{
"data": [{"date": "2026-01-24", "close": 198.42}],
"provenance": {
"source": "eod_historical",
"collection_time": "2026-01-24T06:00:00Z",
"adjustment_model": "split_adjusted"
},
"quality": {
"completeness": 0.98,
"staleness_hours": 18
},
"cost": {
"units_consumed": 1,
"cache_hit": true
}
}
# Install the sync client
$ pip install synapse-discovery
# Initialize with your API key
$ synapse-discovery init --api-key sd_live_xxx
✓ Connected to Synapse Discovery
# Sync prices and fundamentals locally
$ synapse-discovery sync --to ./data --datasets prices,fundamentals
Downloading... 45.2 MB
✓ Sync complete! 8,500 files
# Query with DuckDB — no API calls!
$ duckdb -c "SELECT * FROM './data/prices/NASDAQ/AAPL/*.parquet' LIMIT 5"
For quants & funds
Your own data lake
Sync once, update daily. Get a clean, standard Parquet layout you own — no babysitting our internal structure. Query locally with DuckDB, Polars, or Spark.
- Parquet files partitioned by exchange/symbol/year
- Incremental sync — only download what changed
- Manifest with checksums for data integrity
- Sync to S3/GCS or a local directory
One call, all data
Agents and research pipelines want flexibility without 20 round trips. Query multiple tickers, mix prices with fundamentals, and get point-in-time data in a single request.
POST /api/v1/query
{
"universe": {
"tickers": ["AAPL", "MSFT", "GOOGL"]
},
"fields": [
"close_split_adj",
"volume",
"revenue",
"eps_diluted"
],
"range": {
"start": "2024-01-01",
"end": "2025-12-31"
},
"point_in_time": true,
"asof": "2026-01-01T00:00:00Z"
}
Simple, transparent pricing
No hidden fees. No enterprise sales calls for basic features. Start free, scale as you grow.
Free
For personal projects and exploration
- 100 API calls/day
- 1 year historical data
- Basic fundamentals
- Community support
Developer
For developers building financial apps
- 10,000 API calls/day
- 5 years historical data
- Full fundamentals
- ETF holdings
- Email support
Quant
For quant researchers and traders
- 100,000 API calls/day
- Full historical data
- Point-in-time queries
- Parquet bulk downloads
- Delta-sync updates
- Priority support
Enterprise
For hedge funds and institutions
- Unlimited API calls
- Full data universe
- Dedicated infrastructure
- Custom integrations
- Custom SLA (by agreement)
- Dedicated support
- On-premise option
Built for serious research
The things that actually matter for backtesting and AI workflows — not testimonials, the substance.
No survivorship bias
Delisted, bankrupt, and acquired companies stay in the archive, so your backtest universe reflects history as it actually was — not just today’s survivors.
Point-in-time by default
Every price and fundamental is queryable as-of any historical date, so you research on the data that was actually known then.
AI-native, not bolted on
A native MCP server means Claude, GPT, and other agents pull data directly — no scraping, no glue code, responses built for LLMs.
Get the data right from the start
Free to start — point-in-time and survivorship-free from your first request.