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.
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 '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'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);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()){
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
dataflow/{agency}/{id}/{version} | path | Required | Identifies the dataset, for example `BIS/WS_CBPOL/1.0` for central bank policy rates. BIS/WS_CBPOL/1.0 |
{key} | path | Required | Dot-separated dimension values. `D.US` is daily frequency, United States. A blank position matches everything. D.US |
lastNObservations | query | Optional | Return only the most recent N observations per series. 3 |
startPeriod / endPeriod | query | Optional | Restrict the window, in the dataflow's own period format. 2026-01-01 |
Accept | header | Required | `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
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON Path Finder
Evaluate a dot/bracket path against your JSON and list every leaf path for discovery. Free online JSON path finder that runs 100% in your browser.
Percentage Change Calculator
Work out the percentage increase or decrease between an old and a new value. See the absolute change and whether it went up or down, instantly and privately.
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.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| CoinGecko | Free 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 key | Yes | 19 Aug 2026 |
| Binance Public API | Binance 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 key | Yes | 19 Aug 2026 |
| Coinbase Exchange Rates | Coinbase 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 key | Yes | 19 Aug 2026 |
| Frankfurter | Free 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 key | Yes | 19 Aug 2026 |
| Bitcoin Halving API | Free 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 key | Yes | 21 Aug 2026 |
| Bitfinex | Free 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 key | No | 21 Aug 2026 |
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.