BYTETOOLS

BIS Statistics API

Free Bank for International Settlements statistics API with no key: central bank policy rates, credit, debt securities and effective exchange rates as SDMX-JSON. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 21 Aug 2026

What is the BIS Statistics API?

The Bank for International Settlements serves its statistical datasets through a free SDMX REST API at stats.bis.org with no key. The WS_CBPOL dataflow returns central bank policy rates for dozens of countries on a common basis.

The BIS's value here is comparability. Central banks each publish their own policy rate in their own format, on their own calendar, in their own language; the BIS restates them on a common basis in one dataflow, so comparing the US, euro area and Japanese policy rates becomes a matter of changing one dimension in a key rather than integrating three separate APIs.

Format negotiation is done through the `Accept` header, not a query parameter, and getting it wrong returns HTTP 406 rather than a helpful message. Send `Accept: application/vnd.sdmx.data+json;version=1.0.0` for SDMX-JSON. The payload that comes back is normalised to a fault: observations are positional arrays indexed against dimension lists held elsewhere in the document, so decoding it means walking `structure.dimensions` to map indices to codes before any value means anything.

Quick facts

Base URL
https://stats.bis.org/api/v2/data
Authentication
No key or registration. Published by the BIS as open statistical data.
Rate limit
No documented limit. Most series update daily or monthly.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the BIS Statistics API

Every request below was executed against the live API on 21 Aug 2026, and the response shown is the real body it returned — not an illustration.

1. Last three US central bank policy rate observations

GET https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBPOL/1.0/D.US?lastNObservations=3

curl
curl 'https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBPOL/1.0/D.US?lastNObservations=3' \
  -H 'Accept: application/vnd.sdmx.data+json;version=1.0.0'
JavaScript (fetch)
const res = await fetch("https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBPOL/1.0/D.US?lastNObservations=3", {
  headers: {
    "Accept": "application/vnd.sdmx.data+json;version=1.0.0",
  },
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

headers = {
    "Accept": "application/vnd.sdmx.data+json;version=1.0.0",
}

res = requests.get("https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBPOL/1.0/D.US?lastNObservations=3", headers=headers, timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "meta": {
    "id": "IDREF07c1e12c-2c27-419b-9ef9-9036a37e02f5",
    "prepared": "2026-08-21T07:45:40",
    "test": false,
    "datasetId": "65801925-d3c1-435a-9dfe-ecd76e54e1ca",
    "sender": {
      "id": "UNKNOWN"
    },
    "receiver": {
      "id": "guest"
    },
    "links": [
      {
        "rel": "self",
        "href": "/data/dataflow/BIS/WS_CBPOL/1.0/D.US?lastNObservations=3",
        "uri": "https://raw.githubusercontent.com/sdmx-twg/sdmx-json/develop/structure-message/tools/schemas/1.0/sdmx-json-structure-schema.json"
      }
    ]
  },
  "data": {
    "dataSets": [
      {
        "links": [
          {
            "rel": "dataflow",
            "urn": "urn:sdmx:org.sdmx.infomodel.datastructure.Dataflow=BIS:WS_CBPOL(1.0)"
          }
        ],
        "reportingBegin": "2026-08-16T00:00:00",
        "reportingEnd": "2026-08-18T23:59:59",
        "action": "Information",
        "series": {
          "0:0": {
            "attributes": [
              null,
              0,
              0,
              0,
              null,
              0
            ],
            "observations": {
              "0": [
                "3.625",
                0,
                0,
                null
              ],
              "1": [
                "3.625",
                0,
                0,
                null
              ],
              "2": [
                "3.625",
                0,
                0,
                null
              ]
            }
          }
        },
        "attributes": [
          0,
          0
        ]
      }
    ],

Parameters

ParameterTypeRequiredDescription
dataflow/{agency}/{id}/{version}pathRequiredIdentifies the dataset, for example `BIS/WS_CBPOL/1.0` for central bank policy rates. BIS/WS_CBPOL/1.0
{key}pathRequiredDot-separated dimension values. `D.US` is daily frequency, United States. A blank position matches everything. D.US
lastNObservationsqueryOptionalReturn only the most recent N observations per series. 3
startPeriod / endPeriodqueryOptionalRestrict the window, in the dataflow's own period format. 2026-01-01
AcceptheaderRequired`application/vnd.sdmx.data+json;version=1.0.0` for SDMX-JSON. Omitting it returns XML or 406. application/vnd.sdmx.data+json;version=1.0.0

Response fields

metaobject
Message metadata — a generated id, the preparation timestamp and self links.
data.dataSets[]array
The observations, keyed by positional dimension indices such as `"0:0"`.
data.dataSets[].seriesobject
Each series maps observation index to a value array whose first element is the number.
data.structures[].dimensionsobject
The dimension definitions that positional keys index into. You must walk this to decode anything.
attributesarray
Observation attributes as indices into an attribute value list, again resolved through the structure block.

What you can build with the BIS Statistics API

  • Compare central bank policy rates across countries on a common basis
  • Pull BIS credit-to-GDP or debt securities statistics for research
  • Fetch effective exchange rate indices for a set of economies
  • Build a policy rate chart without integrating a dozen central bank APIs

Common errors and how to fix them

406 Not Acceptable

No usable `Accept` header was sent.

Fix: Set `Accept: application/vnd.sdmx.data+json;version=1.0.0`. A `format=jsondata` query parameter does not work on this API.

404

The dataflow id, agency or version is wrong.

Fix: Query the dataflow list endpoint first; version numbers change and old ones are removed.

Values are meaningless numbers

Positional arrays were read without resolving the structure block.

Fix: Map `series` keys and observation indices through `data.structures[].dimensions` before interpreting anything.

BIS Statistics API — frequently asked questions

Is the BIS statistics API free?

Yes. stats.bis.org requires no key or registration and serves the BIS's published statistical datasets over a standard SDMX REST interface.

How do I get JSON instead of XML?

Through the `Accept` header — `application/vnd.sdmx.data+json;version=1.0.0`. This API does not honour a `format` query parameter and returns HTTP 406 if the header is missing.

What is the WS_CBPOL dataflow?

It holds central bank policy rates restated on a common basis across dozens of jurisdictions. That common basis is the point: comparing the US, euro area and Japanese policy rates becomes a matter of changing one dimension in the key rather than integrating three separate central bank APIs.

Why is the SDMX-JSON so hard to read?

SDMX normalises data aggressively: observations are positional arrays and dimension values are indices into definitions stored elsewhere in the document. Write a small decoder once that resolves the structure block, and every SDMX API becomes usable.

Tools that pair with this API

Alternatives to BIS Statistics API

If BIS Statistics does not fit, these finance & crypto apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
CoinGeckoFree cryptocurrency price API covering 10,000+ coins. Live prices, market cap and volume in any currency, no API key on the public tier. Tested curl example.No keyYes19 Aug 2026
Binance Public APIBinance public market data API needs no API key: live ticker prices, order books, klines and 24h stats for every trading pair. Tested curl example and response.No keyYes19 Aug 2026
Coinbase Exchange RatesCoinbase public exchange rates API with no key: convert any cryptocurrency to 100+ fiat currencies in a single request. Tested curl example and live JSON.No keyYes19 Aug 2026
FrankfurterFree currency exchange rate API with no key, built on European Central Bank data. Latest and historical rates, time series and conversion. Tested curl example.No keyYes19 Aug 2026
Bitcoin Halving APIFree Bitcoin halving API with no key: era, block reward, blocks into the era and blocks until the next halving for any block height. Tested example and live response.No keyYes21 Aug 2026
BitfinexFree Bitfinex public API with no key: real-time ticker, order book, trades and candles for crypto and forex pairs. Tested curl example and live response.No keyNo21 Aug 2026
All Finance & Crypto APIs

BIS Statistics is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 21 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.