Everything the API serves is an observation: one value, for one indicator, for one
entity, over one period, from one source.
Turkish inflation, Apple’s quarterly revenue and the EUR/USD reference rate all arrive
in this shape. Learn it once.
Identity
Three fields locate a row.
indicatorId names the concept. Stable across countries: cpi_inflation_yoy means
the same thing everywhere it appears.
entityId names the subject. Countries are country_TUR, companies company_AAPL,
instruments instrument_EURUSD. country is a convenience alias for the country case.
periodEnd anchors the row in time.
periodEnd is when the data is about. releaseDate is when it was published,
which is typically weeks later. Backtests must use releaseDate, or the model sees
figures before the market did.
Value
actual is the reading and previous the prior period, already aligned so you do not
have to fetch two rows to compute a change.
unit is not decoration. See Units and periods.
Provenance
source and attribution name the publisher, sourceUrl links the release, and
sourceTier ranks how authoritative it is. Every figure can be traced back to where it
came from.
Where several publishers carry the same series, the API returns one per period,
preferring the national source over harmonised international copies. Pass
?sources=all to receive every provider instead.
Trust
The remaining fields describe whether the row is safe to use. They have their own page,
and it is the one to read before building anything quantitative:
Trust metadata.
Fetching them
Two endpoints cover nearly all use.
/observations/latest returns the current reading
of each series, one row per indicator. This is the call behind a dashboard.
/observations returns history, filtered and paginated.
This is the call behind a chart or a backtest.