Point-in-time US financial data · REST · MCP · Parquet
Financial data, as it was known. Filings, fund holdings and macro vintages, keyed to the day each became public.
Daily prices with delisted names kept, SEC statements as first filed from 2011, fund holdings from SEC N-PORT and macro vintages, for backtests and AI agents, over a REST API, a native MCP server, and bulk Parquet on the Quant plan. Ask with as_of and holdings, statements and macro vintages are cut at the day each became public. Most macro vintages are quarterly snapshots, so an as-of answer can trail the latest release by up to a quarter.
Free tier: 100 calls a day.
https://synapsediscovery.io/mcp/jsonrpc
No key needed to try; a trial quota applies.
| ReportReport period | PublicPublic on EDGAR | Pos.Positions | Accession | Status |
|---|---|---|---|---|
| 42 | 0001752724-20-194886 | |||
| 49 | 0001752724-20-271855 | Served | ||
| 53 | 0001752724-21-057880 | JoinReport-date join |
GET /api/v1/funds/ARKK/holdings?as_of=2021-02-12
→ report 2020-10-30 · filing_date 2020-12-28 · 49 positions
Asked as of 2021-02-12, we return ARKK's 2020-10-30 report. It reached EDGAR on 2020-12-28. Join on report date instead and your backtest uses that report 59 days before it was on EDGAR.1
- On 2021-02-12 a join on report date reads the 2021-01-29 report, which was not public until 2021-03-19, 35 days later. Counts and dates only; the rows carry no tickers or weights.
Receipt
The field's records by the year they were filed (every cell: CSV).
| Filed | Records | Quarterly | Annual | CIKs |
|---|---|---|---|---|
| 2011 | 27,204 | 20,070 | 7,134 | 6,991 |
| 2012 | 27,453 | 19,476 | 7,977 | 6,742 |
| 2013 | 24,690 | 18,041 | 6,649 | 6,255 |
| 2014 | 23,650 | 17,369 | 6,281 | 5,957 |
| 2015 | 22,364 | 16,470 | 5,894 | 5,720 |
| 2016 | 20,925 | 15,295 | 5,630 | 5,515 |
| 2017 | 20,404 | 14,877 | 5,527 | 5,413 |
| 2018 | 20,369 | 14,702 | 5,667 | 5,354 |
| 2019 | 20,254 | 14,626 | 5,628 | 5,343 |
| 2020 | 20,164 | 14,545 | 5,619 | 5,401 |
| 2021 | 22,972 | 16,627 | 6,345 | 5,898 |
2,449 reports for periods that had ended were not yet filed on this date (filed within 120 days of period end).
Receipt
Fig. 02: each dot is a week × 2-day cell of first-filed quarterly and annual SEC statement records in our corpus, one per company (CIK), period end and period type: 574 weeks, 2011-01-03 to 2021-12-31 (2,769 US sessions), 250,449 records. Height is days from period end to filing; the top row holds the 18,922 filed 120 days or more after; brightness is the record quintile of the cell (five steps, each holding a fifth of the records). Left out: 56,276 that exist only as our own derived fiscal-Q4 rows, 1,900 with no SEC accession, 1,313 with no eligible row for a mix of those reasons, 314 whose first filing date we could not recover and 10 from a non-SEC source only. Narrow screens show 2016-07-04 to 2019-12-29 in two-week × 5-day cells. Baked 2026-10-11; an independent recomputation matched every cell (21 of 21 checks). An earnings release can come before the filing, so the field says filed, not public.
Download the cells (CSV) · definitions and counts (JSON) · How as_of works
The same question, asked on the right day.
Receipts from our own API. Each one shows the query that reproduces it and the plan it needs.
A quarter ends on one day and is filed on another.
Apple's fiscal Q1 2019 ended 2018-12-29. The 10-Q reached EDGAR on 2019-01-30, and that is the first day our API returns the quarter.
| as_of | Newest period returned | Period end | Revenue, USD |
|---|---|---|---|
| FY2018 (annual) | 265.595B | ||
| Q1 FY2019 | 84.31B |
From 2011, statements are served as first filed. On 2019-01-29 the newest period on file is the fiscal year to 2018-09-29, filed 2018-11-05; the quarter arrives with its filing.
Receipt
Delisted names stay in the dataset.
Lehman's raw closes, as traded: 14.15 on 2008-09-08, 0.21 on 2008-09-15. Its tape runs 2,715 sessions, from 1997-12-31 to 2008-10-15. It is one of 11,519 delisted common stocks with a daily price row in our database.1
| Session | Close, raw |
|---|---|
| 14.15 | |
| 7.79 | |
| 7.25 | |
| 4.22 | |
| 3.65 | |
| 0.21 | |
| 0.30 |
- Entity records typed common stock, status delisted, with at least one daily price row; counted in our database on 2026-10-11. Lehman's 2008 window needs the Quant plan: Free keys reach back 1 year and Developer keys 5 years, and a request past that window returns
tier_clipped.
Receipt
Move as_of one day. The served report changes.
The same request, a day apart. ARKK's 2020-10-30 report reached EDGAR on 2020-12-28, so that is the day it appears; the day before, the answer is still the 2020-07-31 report.
GET /api/v1/funds/ARKK/holdings?as_of=2020-12-27 GET /api/v1/funds/ARKK/holdings?as_of=2020-12-28
"point_in_time": true−"report_date": "2020-07-31"+"report_date": "2020-10-30"−"effective_date": "2020-07-31"+"effective_date": "2020-10-30"−"filing_date": "2020-09-25"+"filing_date": "2020-12-28"−"total_holdings": 42+"total_holdings": 49 …
One day apart. The served report changes on the day it was filed. Field names verbatim from the response's meta; the rest of the response is trimmed (…).
Receipt
One point-in-time rule over REST, MCP or Parquet.
Pick the surface that fits the job.
REST
For pipelines and apps.
$ BASE=https://synapsediscovery.io/api/v1
$ curl -H "X-API-Key: $SYNAPSE_KEY" \
"$BASE/funds/ARKK/holdings?as_of=2021-02-12"
{ "meta": {
"report_date": "2020-10-30",
"filing_date": "2020-12-28",
"total_holdings": 49, … } }
MCP
For agents. No key needed to try; a trial quota applies.
endpoint
https://synapsediscovery.io/mcp/jsonrpc
tool
get_fund_holdings
arguments
{ "ticker": "ARKK",
"as_of": "2021-02-12" }
Setup for each client is on the install page.
Parquet
For research at scale, on the Quant plan.
$ BASE=https://synapsediscovery.io/api/v1
# the datasets, then every file with a checksum
$ curl -sH "X-API-Key: $SYNAPSE_KEY" \
"$BASE/export/datasets"
$ curl -sH "X-API-Key: $SYNAPSE_KEY" \
"$BASE/export/manifest"
The catalogue lists 19 datasets. The manifest gives each file a checksum, and /api/v1/sync/changes names what moved since your last pull.
Four datasets, each keyed to a date.
The table names the date each one is keyed to. Holdings, statements and macro vintages take as_of; prices are keyed to the trade date.
| Dataset | Keyed to | Source | REST | MCP | Parquet |
|---|---|---|---|---|---|
| Daily prices: raw and split-adjusted, delisted names kept | trade date | end-of-day market data | Yes | Yes | Yes (dataset prices) |
| SEC statements: income, balance sheet, cash flow, as first filed from 2011 | filing date | SEC EDGAR (XBRL) | Yes | Yes | Yes (dataset fundamentals) |
| Fund holdings: full position sets from SEC N-PORT reports | the day the report reached EDGAR | SEC N-PORT | Yes | Yes | No |
| Curated macro series, with vintages (mostly quarterly snapshots) for the major revised series | vintage public date, or period end where no vintage is held | primarily US Treasury · Federal Reserve · BLS · BEA · EIA | Yes | Yes | Yes (dataset macro_pit) |
Parquet is the Quant plan. The Parquet column is read from the export catalogue (GET /api/v1/export/datasets, 19 datasets); fund holdings have no bulk dataset. 58,012 listings carry a daily price row in our database, 18,629 of them delisted.1
- Entity records with at least one daily price row: stocks, ETFs, mutual funds, closed-end funds, ADRs, REITs, SPACs, preferreds, units, rights, warrants, notes and unclassified listed lines, active and delisted; index levels are not counted. Counted from the distinct records that appear in our daily price table, joined to the entity records. Counted in our database on 2026-10-11.
How the record is kept.
DatesWhere we hold the day a record became public, the answer is keyed to that day; where we don't, the response names the basis it used.
StatementsFrom 2011, statements are served as first filed; a later restatement is a separate, dated record.
TapesDelisted securities keep their tape; a print we can't confirm as traded is labelled or withheld.
NullsWhen a value fails our checks, we serve null with a named reason rather than a number.
Start free. Pay for depth.
Plans differ in history depth, daily calls and bulk access.
Free
$0/forever
- API calls
- 100 a day
- History
- 1 year
- Bulk Parquet
- Not included
- Fig. 04 tape
- tier_clipped
Developer
$19/month
Launch price, locked in for as long as you stay subscribed.
Billed monthly until cancelled. Cancel anytime in the billing portal. Payments are non-refundable.
- API calls
- 10,000 a day
- History
- 5 years
- Bulk Parquet
- Not included
- Fig. 04 tape
- tier_clipped
Quant
For backtests$79/month
Launch price, locked in for as long as you stay subscribed.
Billed monthly until cancelled. Cancel anytime in the billing portal. Payments are non-refundable.
- API calls
- 100,000 a day
- History
- Full
- Bulk Parquet
- Included
- Fig. 04 tape
- 7 rows
Compare plans · The Fig. 04 row is what each key gets for Lehman's 2008 tape, measured 2026-10-11.
Pick a date. Ask what was public.
Start with a free key, or point an agent at the MCP endpoint.