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.

MCP https://synapsediscovery.io/mcp/jsonrpc

No key needed to try; a trial quota applies.

Fig. 01 — ARKK · SEC N-PORT reports, in the order they became public
ARKK's N-PORT reports, oldest first, with the day each became public on EDGAR. The row tagged Served is the report our holdings endpoint returns as of the date in the query below.
Report Public Pos. Status
42
49 Served
53 Join
2020-12-01 2021-03-31
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

  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
GET /api/v1/funds/ARKK/holdings?as_of=2021-02-12 source SEC N-PORT filings on EDGAR served report 2020-10-30 · accession 0001752724-20-271855 states every day 2020-12-01..2021-03-31 measured; the answer changes on 2020-12-28 and 2021-03-19 plan free key captured 2026-10-11
Fig. 02 — When first-filed SEC quarterly and annual reports were filed, 2011–2021

The field's records by the year they were filed (every cell: CSV).

Fig. 02's first-filed statement records by the year they were filed
FiledRecordsQuarterlyAnnualCIKs
201127,20420,0707,1346,991
201227,45319,4767,9776,742
201324,69018,0416,6496,255
201423,65017,3696,2815,957
201522,36416,4705,8945,720
201620,92515,2955,6305,515
201720,40414,8775,5275,413
201820,36914,7025,6675,354
201920,25414,6265,6285,343
202020,16414,5455,6195,401
202122,97216,6276,3455,898
As of 2019-03-01
AAPL 10-Q · quarter ended 2018-12-29
84.31B USD
revenue as first filed · filed 2019-01-30 · 32 days after period end

2,449 reports for periods that had ended were not yet filed on this date (filed within 120 days of period end).

Receipt
source our SEC statement corpus, first-filed vintages cells /static/data/field/cells.csv grid 574 weeks × 61 lag rows AAPL GET /api/v1/fundamentals/AAPL?as_of=2019-01-30&periods=1 READ 21 of 21 checks · 2026-10-11 baked 2026-10-11

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

01 / Exhibits

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.

Fig. 03 — Apple · fiscal Q1 2019 · SEC 10-Q

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.

Period end 2018-12-29, then 32 days until the 10-Q was filed on 2019-01-30. 2018-12-29 · period end 32 d · not yet filed 2019-01-30 · 10-Q filed
The newest period GET /api/v1/fundamentals/AAPL?periods=1 returns on each as-of date
as_ofNewest period returnedRevenue, 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
GET /api/v1/fundamentals/AAPL?as_of=2019-01-29&periods=1 GET /api/v1/fundamentals/AAPL?as_of=2019-01-30&periods=1 source SEC EDGAR 10-Q (XBRL), as first filed filed 2019-01-30 · accession 0000320193-19-000010 plan free key (a free key gets the same answer) captured 2026-10-11
Fig. 04 — Lehman Brothers · raw close, as traded tape ends 2008-10-15

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

Lehman raw closes 2008-09-08 to 2008-09-16: 14.15, 7.79, 7.25, 4.22, 3.65, 0.21, 0.30. 0 5 10 15 2008-09-08 2008-09-16 14.15 0.21 raw close · as traded · tape ends 2008-10-15
Lehman raw closes, as traded
SessionClose, raw
14.15
7.79
7.25
4.22
3.65
0.21
0.30
  1. 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
GET /api/v1/prices/LEH?start=2008-09-08&end=2008-09-16&adjustment=raw GET /api/v1/prices/LEH?start=1900-01-01&adjustment=raw&limit=0 source end-of-day market data, raw as traded plan quant key; a free or developer key returns tier_clipped for this window captured 2026-10-11
Fig. 05 — One parameter · ARKK holdings, a day apart 2020-12-28

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 · meta
 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
GET /api/v1/funds/ARKK/holdings?as_of=2020-12-27 GET /api/v1/funds/ARKK/holdings?as_of=2020-12-28 source SEC N-PORT filings on EDGAR plan free key captured 2026-10-11
02 / Three ways in

One point-in-time rule over REST, MCP or Parquet.

Pick the surface that fits the job.

REST

For pipelines and apps.

GET · 200
$ 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.

JSON-RPC over HTTP
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.

bulk files
$ 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.

03 / Coverage

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.

Datasets, the date each is keyed to, the source, and how to reach it
Dataset Keyed to REST MCP Parquet
Daily prices: raw and split-adjusted, delisted names kept trade date Yes Yes Yes (dataset prices)
SEC statements: income, balance sheet, cash flow, as first filed from 2011 filing date Yes Yes Yes (dataset fundamentals)
Fund holdings: full position sets from SEC N-PORT reports the day the report reached EDGAR 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 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

  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.
04 / House rules

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.

How as_of works, in the docs

05 / Pricing

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
Get a free API key

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
Get Developer

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
Get Quant

Enterprise

Custom

API calls
By agreement
History
Full
Bulk Parquet
Included
Talk to us

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.