Browse all documentation

Policy rates API reference

Read current, as-of and historical central-bank policy rates, official reserves and balance sheets (total assets), with the original instrument and source date.

Requests

GET /v1/economics/{country}/central-bank/policy-rate
GET /v1/economics/{country}/central-bank/policy-rate?date=2026-09-15
GET /v1/economics/{country}/central-bank/policy-rate/history?start=2008-01-01&limit=1000
GET /v1/economics/{country}/central-bank/reserves?period=2026-07
GET /v1/economics/{country}/central-bank/balance-sheet?period=2026-09

Use an uppercase ISO alpha-3 code for country.

Without date, the response returns the latest source observation at or before today in UTC. With date, it returns the latest observation at or before the requested date. Days without observations remain absent, and future effective dates never replace the current rate early.

MCP tools are economics_get_policy_rate, economics_get_policy_rate_history, economics_get_central_bank_reserves and economics_get_central_bank_balance_sheet. REST and MCP share a Bearer key, schema and quota; each request counts as one call.

Policy rates are live on every plan. The latest rate has no history limit, while requests with a date, history range, reserves period or balance-sheet period use the plan's history window: Free 12 months, Basic 5 years, Pro full history. Requests that end before the window return 403 plan_upgrade_required.

Response

The examples use saved values to show the response shape. The values are not live data.

Point rate
{
  "country": "CAN",
  "authority": "bank_of_canada",
  "currency": "CAD",
  "instrument": "overnight_rate_target",
  "rate_type": "point",
  "rate": "2.25",
  "qualifier": "exact",
  "unit": "percent",
  "effective_on": null,
  "observed_on": "2025-12-10",
  "announced_on": null
}
Range
{
  "country": "USA",
  "authority": "federal_reserve",
  "currency": "USD",
  "instrument": "federal_funds_target_range",
  "rate_type": "range",
  "lower_bound": "3.50",
  "upper_bound": "3.75",
  "unit": "percent",
  "effective_on": "2025-12-11",
  "observed_on": null,
  "announced_on": null
}

Point rates have rate and qualifier; target ranges have lower_bound and upper_bound instead. Values are decimal strings in percent per year, and negative rates are valid.

FieldMeaning
countryRequested ISO alpha-3 code.
authorityCentral bank identifier, such as federal_reserve.
currencyCurrency of the rate.
instrumentExact instrument set by the bank. History retains changes to the instrument.
rate_typepoint or range.
rate, qualifierPoint rate with the qualifier exact.
lower_bound, upper_boundLower and upper limits of a target range.
unitAlways percent.
effective_on, observed_onExactly one is set. effective_on records when a change took effect; observed_on records the date of a rate observation. The rate may be unchanged on an observation date.
announced_onSource announcement date, or null if none is supplied.

History

  • start and end: inclusive dates in YYYY-MM-DD format.
  • limit: 1 to 1000; default 100.
  • cursor: next_cursor from the previous page.

Results are ordered from oldest to newest. Send next_cursor as cursor with the same filters and limit for each subsequent page, until it is null. Cursors keep all pages on the original publication for 24 hours. An older cursor or withdrawn bank data returns 409 cursor_expired; restart without a cursor.

The response includes country, observations and next_cursor. Each observation uses the fields of a single rate response.

History requests raise start to the start of the plan's history window: Free 12 months, Basic 5 years, Pro full history. The United States, Australia, Czechia, Canada and Malaysia record decision dates only, and history does not carry an earlier rate forward into the window. If the window contains no decision, the response has an empty observations list ([]) and next_cursor set to null. A current-rate request without date returns the rate in force, with no history limit on any plan.

History with two observations
{
  "country": "USA",
  "observations": [
    {
      "country": "USA",
      "authority": "federal_reserve",
      "currency": "USD",
      "instrument": "federal_funds_target",
      "rate_type": "point",
      "rate": "1.00",
      "qualifier": "exact",
      "unit": "percent",
      "effective_on": "2008-10-29",
      "observed_on": null,
      "announced_on": null
    },
    {
      "country": "USA",
      "authority": "federal_reserve",
      "currency": "USD",
      "instrument": "federal_funds_target_range",
      "rate_type": "range",
      "lower_bound": "0.00",
      "upper_bound": "0.25",
      "unit": "percent",
      "effective_on": "2008-12-16",
      "observed_on": null,
      "announced_on": null
    }
  ],
  "next_cursor": "eyJhIjoiMjAwOC0xMi0xNiJ9"
}

Reserves

Returns total official reserve assets as published by the bank. Use YYYY-MM for period, or omit it to get the latest month.

Reserves
{
  "country": "AUS",
  "period": "2026-07",
  "value": "145344",
  "currency": "AUD",
  "scale": "millions",
  "released_on": "2026-08-07"
}

value is a positive decimal string. The bank's published unit determines scale, which is units or millions; currency identifies the value's currency. Narwhal never converts the scale or currency. The reference month is period, and released_on is the date the publisher last updated its file. Unpublished months remain absent and are never filled.

Reserves are available for Australia (RBA table A4), Malaysia (Bank Negara Malaysia, gross international reserves), and Germany, France, Ireland, the Netherlands, Portugal, Slovenia, Estonia, Latvia, Lithuania and Croatia, plus Czechia, through the ECB reserve-assets series in euros. Czechia's value is the Czech National Bank figure recorded by the ECB. Other countries return 404 series_not_found.

Balance sheets

Read a central bank's monthly total assets (balance-sheet total) through GET /v1/economics/{country}/central-bank/balance-sheet or MCP tool economics_get_central_bank_balance_sheet. Set the optional period to a reference month in YYYY-MM format, or omit it to return the latest month.

Saved response
{
  "country": "CAN",
  "period": "2026-09",
  "value": "242657",
  "currency": "CAD",
  "scale": "millions",
  "released_on": "2026-10-15"
}

period is the reference month, and released_on records the release date. For Canada, released_on is the date Narwhal captured the figure because the Bank of Canada's file has no update date. value is a positive decimal string exactly as published, with currency and scale (units or millions) identifying the bank's published units; Narwhal never converts it.

Monthly data is available on every plan for Canada (CAN, Bank of Canada, CAD) and Malaysia (MYS, Bank Negara Malaysia, MYR); every other country returns 404 series_not_found. An explicit period that ends before the plan's history window returns 403 plan_upgrade_required: Free has 12 months, Basic has 5 years, and Pro has full history.

Coverage

The euro area has one policy rate. Each listed euro member code returns the ECB deposit facility rate from that country's euro adoption date.

CountryCentral bankInstrumentHistory startsDate field
USAFederal Reservefederal_funds_target, then federal_funds_target_range2003-06-25effective_on
CANBank of Canadaovernight_rate_target2009-04-21observed_on
AUSReserve Bank of Australiacash_rate_target, with cash_rate_target_range early1990-01-23effective_on
CZECzech National Banktwo_week_repo_rate1995-12-08effective_on
MYSBank Negara Malaysiaovernight_policy_rate2004observed_on
SWESveriges Riksbankpolicy_rate1994-06-01observed_on
NORNorges Banksight_deposit_rate1991-01-01observed_on
DNKDanmarks Nationalbankcertificate_of_deposit_rate1992-04-01observed_on
BRABanco Central do Brasilselic_target1999-03-05observed_on
DEU, FRA, IRL, NLD, PRTEuropean Central Bankdeposit_facility_rate1999-01-01observed_on
SVNEuropean Central Bankdeposit_facility_rate2007-01-01observed_on
ESTEuropean Central Bankdeposit_facility_rate2011-01-01observed_on
LVAEuropean Central Bankdeposit_facility_rate2014-01-01observed_on
LTUEuropean Central Bankdeposit_facility_rate2015-01-01observed_on
HRVEuropean Central Bankdeposit_facility_rate2023-01-01observed_on

Rows for the United States, Australia, Czechia, Canada and Malaysia list rate-decision dates (changes only). Rows for Sweden, Norway, Denmark, Brazil and euro members list dated observations that can repeat the previous rate.

Sweden's policy_rate was the repo rate until 8 June 2022. Brazil has policy-rate coverage only, and dates not yet in force are excluded.

Sources and notices

The Bank of Canada, the ECB and the RBA publish their data free of charge on their websites. Narwhal changes the format and returns the published values. These institutions do not endorse Narwhal.

  • Source: Bank of Canada. This information is available free of charge on the Bank of Canada website: https://www.bankofcanada.ca.
  • Source: European Central Bank (ECB). This information is available free of charge on the ECB website: https://www.ecb.europa.eu.
  • Source: Reserve Bank of Australia 2026. This information is available free of charge on the RBA website: https://www.rba.gov.au.

Retain the source credit wherever you display the data. The Riksbank notice carries the date of the data on pages that read live data.

  • Source: Board of Governors of the Federal Reserve System
  • Source: Bank Negara Malaysia. Data and information are subject to Terms of Use for BNM Datasets.
  • Source: Sveriges Riksbank, with the date of the data.
  • Source: the CNB
  • Source: Norges Bank
  • Source: Danmarks Nationalbank
  • Source: Statistics Denmark - StatBank.dk/dnrentd
  • Source: Banco Central do Brasil (SGS 432), Open Data Commons Open Database License (ODbL).

Terms: Reserve Bank of Australia · Czech National Bank · Federal Reserve

Errors

  • 400 invalid_query Invalid country, date or filter.
  • 400 invalid_cursor Malformed cursor or a cursor issued for different filters.
  • 401 invalid_api_key Missing or rejected Bearer key.
  • 403 plan_upgrade_required The requested date or range ends before your plan's history window.
  • 404 series_not_found No rate matches the request, or the country has no coverage.
  • 409 cursor_expired The cursor is more than 24 hours old or its data has been withdrawn.
  • 429 rate_limit_exceeded A short-window limit has been reached. Wait for the time specified by Retry-After.
  • 429 quota_exhausted The account has used its monthly allowance.
  • 503 economics_unavailable The source data cannot be served safely.

Errors and quota · Economics API reference · Central bank interest rates API