---
slug: "moex-iss"
name: "Московская биржа — ISS (Informational & Statistical Server)"
vendor: "Московская биржа (MOEX)"
industry: "finance"
docsUrl: "https://iss.moex.com/iss/reference/"
version: 2
updatedAt: "2026-10-24"
---

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

Отрасль: Платежи и финансы. Актуально на 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 передаётся в каждом запросе.

```python
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. Метаданные справочников меняются редко — сохрани их у себя.

```bash
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

- Боевой: `http://iss.moex.com`
- Авторизация (MOEX Passport): `https://passport.moex.com/authenticate`
- Формат ответа задаётся расширением в пути: `.xml`

## Авторизация

Тип: 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 — идентификаторы колонок вместе с данными в каждой строке (больше трафика) |

## Нюансы

- Ответ JSON состоит из блоков (например, `history`), в каждом `columns` и `data`; метаданные рекомендуется хранить отдельно.
- Дробные числа в ответах всегда с точкой в качестве разделителя.
- Длинные ответы разбиты на страницы — всегда используйте `start`.
- Пустые значения приходят как `null`.

## Примеры кода

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

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

## Источники

- [Справочник ISS](https://iss.moex.com/iss/reference/)

---

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