# CBR Russia FX API
> Live official exchange rates from the Central Bank of Russia (Bank of Russia) — the daily fixing the regulator publishes for the rouble (RUB) against 50+ currencies. Unlike euro- or dollar-based feeds, this is the rouble's own official reference board: every currency with the bank's nominal, the official RUB value, the previous-day value and the day-over-day change in absolute and percentage terms. Get the whole board with per-unit RUB values, one currency's official fixing in full, an official CBR cross rate between any two currencies via the rouble, or a ranking of the biggest daily gainers and losers against the rouble. Live, no key, nothing stored. Distinct from the ECB, SNB, Bank of Canada, Norges Bank, NBP, CNB and BCB feeds and from market mid-rates — this is the Central Bank of Russia's official rouble fixing with day-over-day deltas and official cross rates. Perfect for FX, treasury, accounting, remittance and analytics apps.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/cbr-api/..."
```

## Pricing
- **Free** (Free) — 8,000 calls/Mo, 2 req/s
- **Starter** ($6/Mo) — 160,000 calls/Mo, 5 req/s
- **Pro** ($17/Mo) — 950,000 calls/Mo, 12 req/s
- **Business** ($43/Mo) — 5,300,000 calls/Mo, 30 req/s

## Endpoints

### Rates

#### `GET /v1/movers` — Biggest daily gainers and losers

**Parameters:**
- `limit` (query, optional, string) — Max 1-54 Example: `10`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/cbr-api/v1/movers?limit=10"
```

**Response:**
```json
{
    "data": {
        "base": "RUB",
        "date": "2026-06-10T11:30:00+03:00",
        "losers": [
            {
                "name": "Норвежских крон",
                "nominal": 10,
                "num_code": "578",
                "char_code": "NOK",
                "value_rub": 75.8288,
                "change_pct": -3.5731,
                "change_rub": -0.28098,
                "previous_rub": 78.6386,
                "unit_value_rub": 7.58288,
                "unit_previous_rub": 7.86386
            },
            {
                "name": "Молдавских леев",
                "nominal": 10,
                "num_code": "498",
                "char_code": "MDL",
                "value_rub": 41.1009,
                "change_pct": -3.076,
                "change_rub": -0.13044,
                "previous_rub": 42.4053,
                "unit_value_rub": 4.11009,
                "unit_previous_rub": 4.24053
            },
            {
                "name": "Шведских крон",
                "nominal": 10,
                "num_code": "752",
                "char_code": "SEK",
                "value_rub": 76.1112,
                "change_pct": -3.0088,
                "change_rub": -0.23611,
                "previous_rub": 78.4723,
                "unit_value_rub": 7.61112,
                "unit_previous_rub": 7.84723
            },
            {
                "name": "Австралийский доллар",
                "n
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/rate` — One currency official fixing

**Parameters:**
- `code` (query, required, string) — 3-letter ISO currency code Example: `USD`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/cbr-api/v1/rate?code=USD"
```

**Response:**
```json
{
    "data": {
        "base": "RUB",
        "date": "2026-06-10T11:30:00+03:00",
        "name": "Доллар США",
        "source": "Central Bank of Russia",
        "nominal": 1,
        "num_code": "840",
        "char_code": "USD",
        "value_rub": 71.7318,
        "change_pct": -2.0919,
        "change_rub": -1.5326,
        "previous_rub": 73.2644,
        "previous_date": "2026-06-09T11:30:00+03:00",
        "unit_value_rub": 71.7318,
        "unit_previous_rub": 73.2644
    },
    "meta": {
        "timestamp": "2026-06-09T20:24:35.417Z",
        "request_id": "284e00bc-55d9-4072-b5ca-ecad6d99c724"
    },
    "status": "ok",
    "message": "Rate retrieved successfully",
    "success": true
}
```

#### `GET /v1/rates` — Whole RUB fixing board

**Parameters:**
- `sort` (query, optional, string) — code, change or value Example: `change`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/cbr-api/v1/rates?sort=change"
```

**Response:**
```json
{
    "data": {
        "base": "RUB",
        "date": "2026-06-10T11:30:00+03:00",
        "sort": "change",
        "count": 54,
        "rates": [
            {
                "name": "Белорусский рубль",
                "nominal": 1,
                "num_code": "933",
                "char_code": "BYN",
                "value_rub": 25.9231,
                "change_pct": -0.7333,
                "change_rub": -0.1915,
                "previous_rub": 26.1146,
                "unit_value_rub": 25.9231,
                "unit_previous_rub": 26.1146
            },
            {
                "name": "Египетских фунтов",
                "nominal": 10,
                "num_code": "818",
                "char_code": "EGP",
                "value_rub": 13.8692,
                "change_pct": -1.2608,
                "change_rub": -0.01771,
                "previous_rub": 14.0463,
                "unit_value_rub": 1.38692,
                "unit_previous_rub": 1.40463
            },
            {
                "name": "Форинтов",
                "nominal": 100,
                "num_code": "348",
                "char_code": "HUF",
                "value_rub": 23.3312,
                "change_pct": -1.3914,
                "change_rub": -0.003292,
                "previous_rub": 23.6604,
                "unit_value_rub": 0.233312,
                "unit_previous_rub": 0.236604
            },
            {
                "name": "Рэндов
…(truncated, see openapi.json for full schema)
```

### Convert

#### `GET /v1/convert` — Official CBR cross rate via the rouble

**Parameters:**
- `from` (query, required, string) — Source ISO code Example: `USD`
- `to` (query, required, string) — Target ISO code Example: `EUR`
- `amount` (query, optional, string) — Amount to convert Example: `100`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/cbr-api/v1/convert?from=USD&to=EUR&amount=100"
```

**Response:**
```json
{
    "data": {
        "to": "EUR",
        "base": "RUB",
        "date": "2026-06-10T11:30:00+03:00",
        "from": "USD",
        "note": "official CBR cross rate via the rouble",
        "rate": 0.8665511,
        "amount": 100,
        "result": 86.65511,
        "source": "Central Bank of Russia",
        "to_unit_rub": 82.7785,
        "from_unit_rub": 71.7318
    },
    "meta": {
        "timestamp": "2026-06-09T20:24:35.745Z",
        "request_id": "15322b87-5cc9-4ba4-af81-02533e58f86e"
    },
    "status": "ok",
    "message": "Conversion completed successfully",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/cbr-api
OpenAPI spec: https://www.oanor.com/api/cbr-api/openapi.json
