Skip to content

Central Bank Data API

Central Bank Rate Decision API

Use FXMacroData for central-bank policy-rate series when you need structured API access, decision timing, historical values, and FX-focused context. Rate structures are modelled explicitly: policy_structure and policy_role say whether a value is a single rate, a target range bound, or a midpoint.

Last updated

Currencies served: 22

FXMacroData serves these 22 currencies in the production API. Each row names the central bank behind the policy series and the statistics office that publishes the consumer price index. Every announcement response repeats the publisher in source and links the release itself in source_url.

Code Currency Area Central bank CPI publisher
USD US Dollar United States Federal Reserve BLS
EUR Euro Eurozone European Central Bank Eurostat
GBP British Pound United Kingdom Bank of England ONS
JPY Japanese Yen Japan Bank of Japan Statistics Bureau
AUD Australian Dollar Australia Reserve Bank of Australia ABS
CAD Canadian Dollar Canada Bank of Canada Statistics Canada
CHF Swiss Franc Switzerland Swiss National Bank FSO
NZD New Zealand Dollar New Zealand Reserve Bank of New Zealand Stats NZ
BRL Brazilian Real Brazil Banco Central do Brasil IBGE
CNH Offshore Chinese Yuan China (Offshore) People's Bank of China NBS
CNY Chinese Yuan China People's Bank of China NBS
DKK Danish Krone Denmark Danmarks Nationalbank Statistics Denmark
HUF Hungarian Forint Hungary National Bank of Hungary
ILS Israeli New Shekel Israel Bank of Israel Bank of Israel / Central Bureau of Statistics
KRW South Korean Won South Korea Bank of Korea Statistics Korea
MYR Malaysian Ringgit Malaysia Bank Negara Malaysia DOSM
NGN Nigerian Naira Nigeria Central Bank of Nigeria CBN
NOK Norwegian Krone Norway Norges Bank Statistics Norway
PEN Peruvian Sol Peru Banco Central de Reserva del Perú INEI
SEK Swedish Krona Sweden Riksbank Statistics Sweden
THB Thai Baht Thailand Bank of Thailand IMF IFS
TWD New Taiwan Dollar Taiwan Central Bank of the Republic of China DGBAS

CNH is served as a read alias of CNY and shares China's publishers. An FX pair is served where both legs appear in this list; a pair with an unsupported leg returns 404.

Measured coverage by release family

Counts below are measured from the stored history, not from the catalogue: a market appears against a family only where that family has observations on record. "Markets" counts the production API currencies in the table above.

Release family Markets Earliest observation Series in this family
Central bank policy 19 of 22 1975-01-02 (51.8 years) Policy rate, Risk-free rate, Central-bank assets, Snb Balance Sheet, Sight Deposits, Deposit Rates
Rates and bond yields 17 of 22 1974-09-24 (52.1 years) 1Y yield, 2Y yield, 3Y yield, 5Y yield, 7Y yield, 10Y yield

Central bank policy covers 19 of the 22 production currencies (USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD, BRL, CNH, CNY, DKK, HUF, ILS, NGN, NOK, SEK, THB, TWD), with history from 1975-01-02. Policy rates, risk-free rates, deposit rates, liquidity settings, and official balance-sheet releases.

Rates and bond yields covers 17 of the 22 production currencies (USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD, CNH, CNY, DKK, ILS, MYR, NOK, PEN, SEK, THB), with history from 1974-09-24. Government yield nodes, inflation-linked yields, breakevens, and curve-ready rates history.

Announcements response fields

The response envelope carries the series identity and its provenance; every element of the data array carries the released value and the timing metadata around it.

GET https://api.fxmacrodata.com/v1/announcements/{currency}/{indicator}

Response envelope

currency, indicator, name, unit, value_name, source, source_url, source_series_id, source_series_name, source_local_name, seasonal_adjustment, price_basis, is_proxy, proxy_note, provenance, policy_role, policy_structure, comparison_compatible, policy_family, has_official_forecast, requested_start_date, requested_end_date, requested_window_has_data, page_includes_latest_available, start_date, end_date, earliest_available_date, latest_available_date, cb_target, remap, filters, selected_series_id, selected_series, supported_options, data_quality, replay, dataset_version, value_mode, value_metadata, pagination, freemium_window, freemium_delay, no_data, data

Fields on every row of data[]

source_validity_status, source_correction, announcement_id, date, val, source, source_url, source_url_scope, previous_value, previous_date, previous_announcement_datetime, change, change_from_previous, pct_change_from_previous, original_val, original_unit, val_mom, observation_id, announcement_datetime, announcement_datetime_local, release_time_assumed, release_time_upper_bound, publication_time_status, publication_time_precision, publication_time_basis, vintage_status, is_first_release, observed_at_ns, observed_at_ns_string, collected_at_ns_string, publication_at_ns, publication_at_ns_string, announcement_source_url, source_artifact_sha256, capture_time_basis, geography, period_basis, methodology_id, source_period_label_conflict, source_methodology_status, selected_vintage_known_at_ns, replay_vintage_verified, official_planned_release_datetime, official_planned_release_datetime_local, official_actual_release_datetime, official_actual_release_datetime_local, collected_at_ns, collected_at_iso, ingestion_latency_ms, ingestion_latency_reference, release_timing, pct_change, pct_change_yoy, pct_change_qoq, pct_change_mom, pct_change_12m, revisions, revisions_summary, outside_requested_window, requested_start_date, requested_end_date, returned_reason, staleness_days, canonical_indicator, raw_indicator, remap_applied, remap_rule_id, remap_segment_id

release_time_assumed

Present and true when announcement_datetime was derived from the publication lag measured on this series' confirmed releases, because no official release calendar reaches the period. Omitted on rows whose publication time was captured from the release.

Field names are read from the published OpenAPI schema at api.fxmacrodata.com/openapi.json, so this list stays in step with the API contract. Optional fields are omitted from a row rather than returned as null.

What the release timestamps mean

  • announcement_datetime is Unix epoch seconds in UTC. Every row also carries announcement_datetime_local in the publisher's own timezone, and calendar rows add announcement_datetime_utc as an ISO-8601 string.
  • Where an official release calendar covers the period, the timestamp is the publication time captured from that release.
  • Where no official calendar reaches the period, which is common for history going back decades, the timestamp is derived from the median publication lag measured on that same series' confirmed releases and snapped to a valid announcement day. Those rows carry release_time_assumed: true and are counted in assumed_release_time_count.
  • data_quality.point_in_time_safe describes the window you requested, not the product: a single derived row anywhere in that window clears it for the whole response, so long histories commonly return false. Gate a point-in-time workflow on the per-row release_time_assumed flag and on assumed_release_time_count against row_count.
point_in_time_safe

Whether the returned values have verified availability and vintage evidence; estimated release times do not qualify.

has_assumed_release_times

True when at least one row in the quality scope carries a publication timestamp derived from the publication lag measured on that series' own confirmed releases, because no official release calendar reaches the period.

assumed_release_time_count

Number of rows in the quality scope whose publication timestamp was derived rather than captured. Compare against row_count to size the derived portion of the requested window.

release_time_assumed

Present and true when announcement_datetime was derived from the publication lag measured on this series' confirmed releases, because no official release calendar reaches the period. Omitted on rows whose publication time was captured from the release.

Where consensus and forecast values come from

  • Forecasts live on /v1/predictions, not on the announcements endpoint, so an expected value is never mixed into a released one.
  • prediction_class names how the number was produced: compiled_consensus, forecaster_survey, expectations_survey, market_implied, model_nowcast, central_bank_projection, institutional_projection, or fxmacrodata. Two of those eight are a consensus of professional forecasters and the other six are not, so filtering on prediction_class is how you ask for the one you want.
  • prediction_source names the publication behind the number, for example philly_fed_spf, cleveland_fed_nowcast, fomc_sep, atlanta_fed_gdpnow, ny_fed_sme, ecb_spf, imf_weo or rbnz_mps, and prediction_source_label carries its display name.
  • Availability is set by the publisher, not by your plan. Many releases have no compiled consensus from any official source, and where none exists no subscription adds one.
  • A filtered request that matches nothing still returns HTTP 200. The availability block lists which classes have a publishing source for that currency and indicator at all, and why the class you asked for came back empty.

The full contract, including the availability reasons and the provenance block, is on the forecasts and consensus reference.

Pricing and access

Plan Price What it covers
Free, no API key $0 USD endpoints answer without an API key, up to 100 requests per day, returning the most recent 90 days on a 15-minute release delay. Health checks, catalogue discovery, release calendars, market-session status and risk sentiment need no key at all.
Individual $50 / month All 22 production currencies and full history, with a 14-day trial. Licensed for your own work.
Business $250 / month The same data, licensed to a company or team, for up to 10 people with member API keys, company invoices and a 14-day trial.
Enterprise Custom agreement For banks, funds and institutions that need negotiated terms, procurement or security review, service levels, or more than ten users. Arranged directly with our team.
Commercial Redistribution add-on $10 / audience block / month Added to a paid plan when other people see the data through you. One block covers up to 100 measured users; one block minimum.

Paid plans differ by permitted use, not by which currencies or indicators they unlock. The plans are Individual, Business and Enterprise. There is no Startup plan.

See plan details and start a trial

Use Cases

  • Track rate decisions by central bank and currency.
  • Build carry and rate-differential dashboards around policy-rate history.
  • Study FX moves around decisions using publication timestamps rather than reference dates.

Why FXMacroData

  • policy_structure and policy_role distinguish a single policy rate from a target-range bound, and policy_family lists the sibling series.
  • comparison_compatible states whether two currencies' policy rates can be differenced directly.
  • source_url on each decision points at the central bank's own press release for that meeting.

Frequently Asked Questions

Which central banks are covered?

The twenty-two production currencies map to the Federal Reserve, European Central Bank, Bank of England, Bank of Japan, Reserve Bank of Australia, Bank of Canada, Swiss National Bank, Reserve Bank of New Zealand, Banco Central do Brasil, People's Bank of China (CNY and CNH), Danmarks Nationalbank, Magyar Nemzeti Bank, Bank of Israel, Bank of Korea, Bank Negara Malaysia, Central Bank of Nigeria, Norges Bank, Banco Central de Reserva del Peru, Riksbank, Bank of Thailand and the Central Bank of the Republic of China (Taiwan).

How is a target range represented?

As separate series. policy_rate carries the upper bound, with policy_rate_target_lower and policy_rate_midpoint alongside it; policy_role names which one you are holding and policy_family lists the others.

When was a decision published?

announcement_datetime is Unix epoch seconds in UTC, with announcement_datetime_local in the central bank's own timezone.

Are all decision timestamps captured from the release?

No, and the response says so. Where an official schedule reaches the period, the time is captured from the release. Where it does not, the time is derived from the median publication lag on that series' confirmed releases, and the row carries release_time_assumed: true.

Is the data suitable for a no-lookahead backtest?

Gate on the per-row release_time_assumed flag and on assumed_release_time_count against row_count, rather than on the point_in_time_safe boolean alone. That boolean describes the whole requested window, so a single derived row clears it for the entire response.

Are rate decision forecasts available?

Where a publisher produces them. /v1/predictions carries central_bank_projection, compiled_consensus, market_implied and other classes; filter on prediction_class and read the availability block when a class comes back empty.

What does access cost?

USD policy-rate history is free without an API key within the most recent 90 days at up to 100 requests per day, on a 15-minute release delay. Individual is $50 per month for solo engineers and one-person projects, including commercial development, with a 14-day trial, Business is $250 per month for incorporated businesses with two or more people, Enterprise is arranged by custom agreement, and there is no Startup plan.

Last updated

Share page X LinkedIn Email