Московская биржа — ISS (Informational & Statistical Server) API

Отрасль: Платежи и финансы. Актуально на 2026-10-24.

Информационно-статистический сервер Московской биржи отдаёт рыночные данные по HTTP в форматах XML и JSON. Данные устроены иерархически: торговые системы (engines) → рынки (markets) → режимы торгов (boards) → инструменты (securities). Есть итоги торгов за прошедшие дни (history). Описание собрано по официальным примерам клиентов MOEX (Python и VB.NET).

Сценарии

Получить итоги торгов по всем акциям за день

Цены закрытия, число сделок и объёмы по каждой бумаге — для аналитики, бэктестов и отчётов по портфелю.

  1. Запроси итоги: GET /iss/history/engines/{engine}/markets/{market}/boards/{board}/securities.json с engine = stock, market = shares, board — режимом торгов (основной для акций — TQBR) и date в формате YYYY-MM-DD.
  2. В ответе блок history: columns — названия колонок, data — строки. Нужные колонки — SECID (тикер), LEGALCLOSEPRICE (цена закрытия), NUMTRADES (число сделок).
  3. Ответ приходит частями: увеличивай start на число полученных строк и повторяй, пока data не станет пустым.
  4. Дробные числа — с точкой, пустые значения — null. Для части данных (реальное время) нужна авторизация через MOEX Passport: cookie MicexPassportCert передаётся в каждом запросе.
import requests

URL = "https://iss.moex.com/iss/history/engines/stock/markets/shares/boards/TQBR/securities.json"
rows, start = [], 0
while True:
    block = requests.get(URL, params={"date": "2026-10-23", "start": start}).json()["history"]
    if not block["data"]:
        break
    cols = block["columns"]
    rows += [dict(zip(cols, r)) for r in block["data"]]
    start += len(block["data"])

for r in rows[:5]:
    print(r["SECID"], r["LEGALCLOSEPRICE"], r["NUMTRADES"])

Найти нужный рынок и режим торгов

Разобраться в иерархии биржи: торговые системы → рынки → режимы торгов, чтобы правильно собрать адрес запроса.

  1. Список торговых систем: GET /iss/engines.xml — например, stock (фондовый рынок), currency, futures.
  2. Рынки торговой системы: GET /iss/engines/{engine}/markets.xml — у stock это shares, bonds и другие.
  3. Режимы торгов рынка: GET /iss/engines/{engine}/markets/{market}/boards.xml — в каждом режиме свои инструменты и итоги.
  4. Формат ответа задаётся расширением в адресе: .xml или .json. Метаданные справочников меняются редко — сохрани их у себя.
curl https://iss.moex.com/iss/engines.xml
curl https://iss.moex.com/iss/engines/stock/markets.xml
curl https://iss.moex.com/iss/engines/stock/markets/shares/boards.xml

Базовые URL

Авторизация

Тип: Basic Auth

Запрос к https://passport.moex.com/authenticate с заголовком Authorization: Basic base64(user:password) (учётная запись MOEX Passport). В ответ приходит cookie MicexPassportCert, которую нужно передавать в следующих запросах к ISS. По примерам, логин и пароль нужны для данных в реальном времени и для запрошенных в примере исторических данных. При истечении cookie авторизацию повторяют.

Методы

GET /iss/engines.xml — Список торговых систем

В блоке engines для каждой строки: name, title.

GET /iss/engines/{engine}/markets.xml — Рынки торговой системы

В блоке markets: name, title.

Параметр Где Тип Обяз. Описание
engine path string да Торговая система, например stock

GET /iss/engines/{engine}/markets/{market}/boards.xml — Режимы торгов рынка

Параметр Где Тип Обяз. Описание
engine path string да Торговая система
market path string да Рынок, например shares

GET /iss/history/engines/{engine}/markets/{market}/boards/{board}/securities.json — Итоги торгов по всем инструментам за дату

Ответ приходит частями: увеличивайте start на число полученных строк, пока ответ не станет пустым. В блоке history поле columns — список идентификаторов колонок, data — строки; среди колонок SECID, LEGALCLOSEPRICE, NUMTRADES.

Тот же запрос в XML — securities.xml: блок <data id="history">, строки в <rows>, значения в атрибутах.

Параметр Где Тип Обяз. Описание
engine path string да Торговая система, например stock
market path string да Рынок, например shares
board path string да Режим торгов, например eqne
date query string да Дата торгов YYYY-MM-DD, например 2010-04-29
start query integer нет Смещение для постраничной загрузки
iss.json query string нет extended — идентификаторы колонок вместе с данными в каждой строке (больше трафика)

Нюансы

Примеры кода

Шаблон запроса из официального примера на Python

requests = {'history_secs': 'http://iss.moex.com/iss/history/engines/%(engine)s/markets/%(market)s/boards/%(board)s/securities.json?date=%(date)s'}

Источники


Если этого недостаточно — официальная документация: https://iss.moex.com/iss/reference/ JSON: https://mcp-everything.ru/api/integrations/moex-iss. MCP: https://mcp-everything.ru/mcp