/Tebiz DataДокументацияorder@tebiz.ruВыбрать данные
Документация

Tebiz Data — REST и MCP

Доступ к наборам данных по токену. Одинаковое ядро, два интерфейса: REST для приложений и MCP для ИИ-агентов.

Источники — официальные государственные ресурсы: бухгалтерская отчётность — от ФНС России; госзакупки — по 44-ФЗ.

Быстрый старт

Тестовый токен уже в примере — скопируйте в терминал и получите реальную бухотчётность «Татнефти». Регистрация не нужна.

curl -H "Authorization: Bearer tbz_live_ItPY9Edf209jODxMstCXtbKsXETPGTJHiNTFf20m" \
  "https://api.tebiz.ru/v1/financials?inn=eq.1644003838&select=year,name,2110&limit=2"
import requests

r = requests.get(
    "https://api.tebiz.ru/v1/financials",
    headers={"Authorization": "Bearer tbz_live_ItPY9Edf209jODxMstCXtbKsXETPGTJHiNTFf20m"},
    params={"inn": "eq.1644003838", "select": "year,name,2110", "limit": 2},
)
print(r.json()["data"])
const r = await fetch(
  "https://api.tebiz.ru/v1/financials?inn=eq.1644003838&select=year,name,2110&limit=2",
  { headers: { Authorization: "Bearer tbz_live_ItPY9Edf209jODxMstCXtbKsXETPGTJHiNTFf20m" } }
);
console.log((await r.json()).data);

Ответ

{
  "data": [
    { "year": 2023, "name": "ПАО \"ТАТНЕФТЬ\" …", "2110": 1313569025 },
    { "year": 2024, "name": "ПАО \"ТАТНЕФТЬ\" …", "2110": 1563778385 }
  ],
  "next_cursor": "eyJ5ZWFyIjogMjAyNCwgImlubiI6ICIxNjQ0MDAzODM4In0="
}

Тестовый токен ограничен демо-набором (несколько компаний по отчётности и кодов ОКПД2 по закупкам) — полный список в DEMO_DATA. Больше готовых примеров — в репозитории ↗. Доступ ко всему массиву — по своему токену из каталога.

Доступ по токену

Каждый запрос несёт токен в заголовке. Токен выдаётся после оформления подписки и показывается один раз — сохраните его.

Authorization: Bearer tbz_live_...

Хотите просто попробовать? В блоке «Быстрый старт» — рабочий тестовый токен, регистрация не нужна.

Токен привязан к набору грантов (какие наборы доступны) и к лимитам. У подписки есть срок действия — по его истечении токен перестаёт работать (нужно продлить). Потеряли — обратитесь за перевыпуском.

REST API

База: https://api.tebiz.ru/v1/<набор>. Ответ — JSON {"data":[...],"next_cursor":...}.

Фильтры

Синтаксис ?колонка=оператор.значение; несколько фильтров объединяются по И. Какие операторы доступны колонке — зависит от её типа (см. страницу набора).

ОператорСмыслПример
eqравноyear=eq.2024
neне равноokfs=ne.34
gt · gteбольше · больше-равноyear=gte.2022
lt · lteменьше · меньше-равноyear=lte.2023
likeшаблон, * — любой хвостokved=like.62*
inодин из списка (через запятую)inn=in.7707083893,7708004767
is_nullпусто, без значенияkpp=is_null
curl -H "Authorization: Bearer tbz_live_..." \
  "https://api.tebiz.ru/v1/financials?limit=5&year=eq.VALUE&select=year,inn,name"

Выбор колонок и лимит

select=a,b,c — только эти колонки. limit=N — размер страницы (не больше максимума набора). Фильтров не более 50, список in — не более 1000 значений.

Пагинация курсором

Сортировки нет — порядок задаёт курсор. В ответе есть next_cursor; если он не null, повторите запрос с cursor=<значение> до null.

Первый запрос к большому набору делайте с фильтром (например ?year=eq.2025). Запрос без единого фильтра и без курсора к крупному набору вернёт 400 с подсказкой — это защита от полного скана.

cursor = None
while True:
    params = {"year": "eq.2024", "limit": 500}
    if cursor:
        params["cursor"] = cursor
    body = requests.get(URL, headers=HEADERS, params=params).json()
    process(body["data"])
    cursor = body["next_cursor"]
    if not cursor:            # null — данные закончились
        break

Лимиты в заголовках

ЗаголовокСмысл
X-RateLimit-RemainingОстаток запросов в окне
X-Quota-Rows-RemainingОстаток квоты строк в текущем месяце
X-Quota-ScopeКакая квота ближе: resource или global
Retry-AfterЧерез сколько секунд повторять (при 429)

MCP — для ИИ-агентов

Эндпоинт https://api.tebiz.ru/mcp/ (со слэшем), транспорт Streamable HTTP, тот же токен авторизации.

{
  "mcpServers": {
    "tebiz": {
      "url": "https://api.tebiz.ru/mcp/",
      "headers": { "Authorization": "Bearer tbz_live_..." }
    }
  }
}

Формат url+headers понимают клиенты с нативной поддержкой удалённых MCP-серверов (напр. Cursor). Для Claude Desktop нужен мост mcp-remote — готовый конфиг в mcp/ ↗.

list_resources
Список доступных наборов. Вызвать первым.
describe_resource
Колонки, типы, операторы, 3 примера строк.
query
Выборка: filters, select, limit, cursor. Колоночный ответ.
Сценарий
list_resources → describe_resource("financials") → query.

Наборы данных

Список из реестра — при добавлении набора обновляется автоматически. Откройте набор, чтобы увидеть полный справочник колонок, типы и примеры.

Коды ошибок

Тело — JSON {"error":"...","detail":"..."}. В detail — что поправить.

HTTPКод ошибкиПричина
200Тело {"data":[]} — запрос корректен, но под фильтр ничего не попало (у тестового токена — данные вне демо-набора). Это не ошибка.
400bad_requestНеизвестная колонка/оператор, битое значение или cursor; либо первая страница большого набора без фильтра — добавьте фильтр.
401unauthorizedНет/невалидный токен.
404not_foundРесурс не существует или нет гранта (не различаем).
429rate_limit_exceeded / row_quota_exceededПревышен лимит запросов или квота строк.
504timeoutЗапрос не уложился в лимит времени — добавьте фильтры.