BYTETOOLS

CBR-XML-Daily (Bank of Russia rates) API

Free JSON feed of the Bank of Russia official RUB exchange rate fixing, with the previous day's rate on every currency. No key, permissive CORS, tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 21 Aug 2026

What is the CBR-XML-Daily (Bank of Russia rates) API?

CBR-XML-Daily republishes the Bank of Russia's official daily exchange rate fixing as JSON at a stable URL, with no key and no registration. Each currency carries its nominal, today's rouble value and the previous published value.

The Bank of Russia itself publishes only XML, from an endpoint that in practice refuses TLS connections from much of the world. This mirror solves both problems: it converts the same fixing to JSON, sends permissive CORS headers, and keeps a dated archive at predictable URLs. It is a community project rather than an official channel, and you should say so wherever the number is shown to users.

Two details make this feed unusually convenient. Every currency object carries `Previous` alongside `Value`, so a day-on-day change needs no second request and no local state. And `PreviousURL` points at the archived file for the prior publication, which turns backfilling a history into a walk down a linked list rather than a date-arithmetic exercise over weekends and Russian holidays.

Quick facts

Base URL
https://www.cbr-xml-daily.ru
Authentication
No key or registration. This is an unofficial mirror of the Bank of Russia fixing, not a Bank of Russia service — attribute it as such.
Rate limit
No published limit. The file changes once per working day; cache it and honour the returned `Timestamp`.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the CBR-XML-Daily (Bank of Russia rates) 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. Today's official RUB fixing for every quoted currency

GET https://www.cbr-xml-daily.ru/daily_json.js

curl
curl 'https://www.cbr-xml-daily.ru/daily_json.js'
JavaScript (fetch)
const res = await fetch("https://www.cbr-xml-daily.ru/daily_json.js");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://www.cbr-xml-daily.ru/daily_json.js", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "Date": "2026-08-21T11:30:00+03:00",
  "PreviousDate": "2026-08-20T11:30:00+03:00",
  "PreviousURL": "//www.cbr-xml-daily.ru/archive/2026/08/20/daily_json.js",
  "Timestamp": "2026-08-20T20:00:00+03:00",
  "Valute": {
    "AUD": {
      "ID": "R01010",
      "NumCode": "036",
      "CharCode": "AUD",
      "Nominal": 1,
      "Name": "Австралийский доллар",
      "Value": 59.3154,
      "Previous": 60.1864
    },
    "AZN": {
      "ID": "R01020A",
      "NumCode": "944",
      "CharCode": "AZN",
      "Nominal": 1,
      "Name": "Азербайджанский манат",
      "Value": 49.0324,
      "Previous": 50.0761
    },
    "DZD": {
      "ID": "R01030",
      "NumCode": "012",
      "CharCode": "DZD",
      "Nominal": 100,
      "Name": "Алжирских динаров",
      "Value": 62.7817,
      "Previous": 64.0566
    },
    "GBP": {
      "ID": "R01035",
      "NumCode": "826",
      "CharCode": "GBP",
      "Nominal": 1,
      "Name": "Фунт стерлингов",
      "Value": 113.4295,
      "Previous": 115.2906
    },
    "AMD": {
      "ID": "R01060",
      "NumCode": "051",
      "CharCode": "AMD",
      "Nominal": 100,
      "Name": "Армянских драмов",
      "Value": 22.8207,
      "Previous": 23.3257
    },
    "BHD": {
      "ID": "R01080",
      "NumCode": "048",
      "CharCode": "BHD",
      "Nominal": 1,
      "Name": "Бахрейнский динар",
      "Value": 221.6409,
      "Previous": 226.3588
    },
    "BYN": {
      "ID": "R01090B",
      "NumCode": "933",
      "CharCode": "BYN",
      "Nominal": 1,
      "Name": "Белорусский рубль",
      "Value": 27.9443,
      "Previous": 28.1103

Parameters

ParameterTypeRequiredDescription
(none)pathOptional`/daily_json.js` takes no parameters. Dated archives live at `/archive/YYYY/MM/DD/daily_json.js`.
archive pathpathOptionalFollow `PreviousURL` from any response to reach the previous publication without doing date arithmetic. /archive/2026/08/20/daily_json.js

Response fields

Datestring
The date the rates take effect, with a +03:00 Moscow offset.
PreviousDate / PreviousURLstring
Timestamp and archive URL of the preceding publication.
Timestampstring
When the Bank of Russia generated this fixing.
Valuteobject
Map keyed by ISO code rather than an array, so `Valute.USD` addresses a currency directly.
Valute.*.Nominalinteger
Units the rate applies to — 1, 10, 100 or 1000. The Algerian dinar is quoted per 100.
Valute.*.Valuenumber
Roubles per `Nominal` units. Divide by `Nominal` for a per-unit rate.
Valute.*.Previousnumber
The same rate at the previous publication, for computing daily change without a second call.

What you can build with the CBR-XML-Daily (Bank of Russia rates) API

  • Show the official RUB rate with its day-on-day movement in one request
  • Backfill a rouble series by following `PreviousURL` backwards
  • Convert rouble-denominated amounts in accounting exports
  • Compare the official fixing against market quotes from an exchange API

Common errors and how to fix them

404 on an archive path

No fixing was published that day.

Fix: Weekends and Russian public holidays have no publication. Walk `PreviousURL` instead of constructing dates yourself.

Content-Type is application/javascript

The file is served with a JS content type for historical reasons.

Fix: The body is plain JSON. Parse it as JSON and ignore the header, or strip the check in strict HTTP clients.

Rate looks 100x too large

`Nominal` was ignored.

Fix: Divide `Value` by `Nominal`. Several currencies are quoted per 10, 100 or 1000 units.

CBR-XML-Daily (Bank of Russia rates) API — frequently asked questions

Is this the official Bank of Russia API?

No. It is a community mirror that republishes the Bank of Russia's official daily fixing as JSON, because the bank itself serves only XML from an endpoint that is frequently unreachable outside Russia. Credit the Bank of Russia as the source and the mirror as the transport.

How often does the Bank of Russia rate change?

Once per working day. The `Timestamp` field records when the fixing was generated and `Date` is the day it takes effect, typically the next business day.

Why are currency names in Russian?

The feed passes through the Bank of Russia's own Cyrillic labels. Use the `CharCode` key or the ISO code in `Valute` for anything programmatic and treat `Name` as display text only.

Can I call this from browser JavaScript?

Yes. The mirror returns a permissive Access-Control-Allow-Origin header, so a direct fetch from front-end code works without a proxy.

Tools that pair with this API

Alternatives to CBR-XML-Daily (Bank of Russia rates) API

If CBR-XML-Daily (Bank of Russia rates) 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
CFPB Consumer ComplaintsFree Consumer Financial Protection Bureau complaint database API with no key: millions of US consumer complaints by product, company, state and issue, with narratives.No keyNo21 Aug 2026
CoinLoreFree cryptocurrency API with no key and no registration: prices, market cap, volume and supply for 10,000+ coins with generous limits. Tested curl example.No keyYes19 Aug 2026
All Finance & Crypto APIs

CBR-XML-Daily (Bank of Russia rates) 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.