Библиотека Python для доступа к данным ЦБ: cbrapi

01 ноября 2025

Всем привет, я хотел бы рассказать о нашем новом проекте cbrapi, который может здорово помочь всем, кто работает с финансовыми данными Центробанка России.

cbrapi - бесплатная библиотека с открытым исходным кодом на Python, которая превращает сложное взаимодействие с SOAP API ЦБ в простой и понятный инструмент.

Если вы когда-нибудь пытались работать напрямую с API Центробанка, то наверняка сталкивались с неудобностью SOAP-сервисов, XML-разборок и прочими неудобными стандартами.

Наша библиотека берет всю эту сложность на себя, оставляя вам чистый и удобный Python-интерфейс.

Вместо запутанных запросов вроде:

POST /DailyInfoWebServ/DailyInfo.asmx HTTP/1.1
Host: www.cbr.ru
Content-Type: text/xml; charset=utf-8
Content-Length: 356
SOAPAction: "http://web.cbr.ru/DragMetDynamic"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <DragMetDynamic xmlns="http://web.cbr.ru/">
      <fromDate>2024-01-01</fromDate>
      <ToDate>2024-12-31</ToDate>
    </DragMetDynamic>
  </soap:Body>
</soap:Envelope>

Теперь достаточно писать:

import cbrapi

cbrapi.get_metals_prices('2024-01-01', '2024-12-31')

Что такое SOAP API?

Банк России для доступа к данным использует SOAP API. Этот протокол немного устарел (появился в 1998 году). В современных проектах его почти полностью вытеснили REST и современные подходы вроде GraphQL и gRPC. Но в банковской среде SOAP всё еще встречается часто.

В отличие от REST в SOAP используется XML для форматирования данных и присутствуют строгие стандарты, которые делают его достаточно надежным и безопасным для передачи данных.

Установка cbrapi

Установка библиотеки делается просто.

pip install cbrapi

После этого можно импортировать и пользоваться библиотекой.

Курсы валют и цены золота

Импортируем библиотеку:

import cbrapi as cbr

Самая популярная часть базы данных ЦБ - это официальные курсы валют к рублю.

# Ознакомиться со списком доступных валют (более 150 наименований):
cbr.get_currencies_list()

После выбора конкретной валюты можно посмотреть ее историю и построить график.

df = cbr.get_time_series(symbol='USDRUB', first_date='2019-01-01', last_date='2020-12-31', period='M')
df.plot(title='График курса USDRUB')

Данные ЦБ для удобства дополнены нами в праздничные и выходные дни (курс в выходные - это курс предыдущего дня).

Полезными будут и данные по ценам драгметаллов, например, золота.

df = cbr.get_metals_prices(first_date='2020-10-15', last_date='2025-10-15', period='M')
df['GOLD'].plot(title='Цена на золото')

Другие полезные функции cbrapi

Кроме курсов валют в базе данных Цетнального банка есть еще много полезного. 

История ключевой ставки:

cbr.get_key_rate('2005-01-01', '2025-10-01', period='M')  # можно указать периодичность данных: месяц 'M' или день 'D'

Международные резервы Российской Федерации:

cbr.get_mrrf('2020-10-01', '2025-10-01')

Ставка RUONIA overnight:

cbr.get_ruonia_overnight('2024-10-01', '2025-10-01')

В cbrapi есть и другие виды ставки RUONIA, ставки ROISfix и еще много чего. Полный перечень функций доступен в README.

Где мы используем cbrapi?

Библиотека cbrapi применяется в наших собственных проектах. Поэтому будет активно поддерживаться. Мы используем данные ЦБ в базе данных okama для получения истории официальных курсов валют ЦБ (например EURRUB.CBR), ключевой ставки (RUS_CBR.RATE), ставок RUONIA (RUONIA.RATE) и др. Все эти данные вместе с историей торгов бирж мира, криптовалют, драгметаллов, коммодитиз и недвижимости доступны бесплатно на API okama.

Кроме того cbrapi активно используется в нашем проекте подготовки налоговых деклараций по зарубежным инвестициям (рабочее место налогового консультанта инвестора).

Проблемы с открытыми API

В России формально существует множество открытых финансовых данных, но их использование на практике сопряжено с серьезными трудностями. Большая часть государственных источников предоставляет информацию в устаревших форматах. Например, Росстат по-прежнему распространяет данные в виде Excel-файлов. Крупный проект ЕМИСС, являющийся интегратором статистической информации, не имеет открытого API. Сайт работает медленно и нестабильно. У Минфина тоже нет API.

На этом фоне положительно выделяются проекты Московской биржи и Центрального банка — они развивают открытые API, позволяющие интегрировать данные в финансовые приложения и аналитические сервисы.

Отдельного внимания заслуживает инициатива Ассоциации Финтех Концепция открытых API — попытка создать единый технологический стандарт для финансового сектора. Но этот проект на первых стадиях затрагивает только банковскую среду. Только на поздних этапах планируется сделать единый стандарт и для сектора финансовых данных в учреждениях.

Приглашаем всех желающих поучаствовать в развитии проекта

Вы можете:

  • Предлагать новые идеи
  • Участвовать в разработке кода
  • Сообщать об ошибках

Репозиторий библиотеки находится на GitHub


Комментарии

    Оставьте комментарий

    ё