Macro data as it was known at the time
Most macro feeds overwrite history every time a number is revised. This API keeps every vintage. Query any date with as_of and you get the world exactly as it looked then.
What is included?
Everything ships on the same observation model as the rest of the API, with provenance on every row.
as_of on every endpoint
Pass a date and every observation returns the value that was published as of that moment.
Revisions kept forever
New releases never overwrite old ones. First prints, second estimates and final revisions all stay queryable.
Provenance on every row
Each value traces to its official source, the source URL, the raw payload reference and the ingestion run.
Official sources only
FRED, BLS, BEA, SEC, ECB, Eurostat, OECD, BIS, CFTC, EIA and the central banks. No scraped vendor feeds.
Calendar with consensus
A macro calendar with consensus estimates and first releases, so surprise is computable historically.
JSON, SDK and MCP
Cursor pagination, stable error codes, a typed TypeScript client and a hosted MCP server for agents.
Why does point in time matter?
Macro numbers get revised. A strategy backtested on today's revised series is trading on information nobody had at the time, and the result is lookahead bias that inflates every metric. The only honest way to backtest a macro signal is against the values that were actually published on each historical day.
This API separates the period a number describes from the moment it became known. Both timestamps live on every observation, so as_of queries reconstruct any past information state exactly.
{
"data": [{
"observationId": "obs_fred_unrate_2026-06-01",
"indicatorId": "us_unemployment_rate",
"country": "USA",
"period": "2026-06-01T00:00:00.000Z",
"actual": 4.2,
"previous": 4.3,
"unit": "percent",
"vintage": "2026-07-02",
"revised": false,
"sourceUrl": "https://fred.stlouisfed.org/series/UNRATE",
"attribution": "Federal Reserve Bank of St. Louis FRED/ALFRED"
}],
"meta": { "api_version": "v1", "pagination": { "limit": 1, "has_more": false } }
}A real row from the live API. period is the month the number describes, vintage is when this value became known. Query any past date with as_of and the same row answers as it did then.
Which datasets are point in time?
All of them. Macro indicators across the covered countries, the economic calendar with consensus, COT positioning percentiles, FOMC statement sentiment and daily valuation multiples built from fundamentals as they were reported on the day.
The same guarantee holds at every price tier, including free. Point in time correctness and provenance are the reason to trust the data, so they are never gated.
Common questions
The short answers, straight from the documentation.
Start with the macro data, ship the rest faster
Free tier, no card. One key, one API and every macro number, with a hosted MCP server for your agent.
Get your free API key