Отрасль: Платежи и финансы. Актуально на 2026-10-24.
Информационно-статистический сервер Московской биржи отдаёт рыночные данные по HTTP в форматах XML и JSON. Данные устроены иерархически: торговые системы (engines) → рынки (markets) → режимы торгов (boards) → инструменты (securities). Есть итоги торгов за прошедшие дни (history). Описание собрано по официальным примерам клиентов MOEX (Python и VB.NET).
Цены закрытия, число сделок и объёмы по каждой бумаге — для аналитики, бэктестов и отчётов по портфелю.
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"])
Разобраться в иерархии биржи: торговые системы → рынки → режимы торгов, чтобы правильно собрать адрес запроса.
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
http://iss.moex.comhttps://passport.moex.com/authenticate.xmlТип: Basic Auth
Запрос к https://passport.moex.com/authenticate с заголовком Authorization: Basic base64(user:password) (учётная запись MOEX Passport). В ответ приходит cookie MicexPassportCert, которую нужно передавать в следующих запросах к ISS. По примерам, логин и пароль нужны для данных в реальном времени и для запрошенных в примере исторических данных. При истечении cookie авторизацию повторяют.
В блоке engines для каждой строки: name, title.
В блоке markets: name, title.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
engine |
path | string | да | Торговая система, например stock |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
engine |
path | string | да | Торговая система |
market |
path | string | да | Рынок, например shares |
Ответ приходит частями: увеличивайте 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 — идентификаторы колонок вместе с данными в каждой строке (больше трафика) |
history), в каждом columns и data; метаданные рекомендуется хранить отдельно.start.null.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