REST API
Базовый адрес — https://scinscope.com/api/v2. Ответы в JSON,
кодировка UTF-8, время в RFC 3339 с зоной, денежные значения — числа с двумя знаками.
Аутентификация
Токен передаётся в заголовке. Области — read и write.
Authorization: Bearer sst_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Лимиты запросов
Лимит зависит от тарифа: 20, 120 или 600 запросов в минуту. Остаток возвращается
в X-Rate-Limit-Remaining, момент сброса — в X-Rate-Limit-Reset.
При исчерпании приходит 429 с Retry-After.
Каталог
get /items
Поиск позиций. Параметры: q — свободная строка, wear — фильтр
по качеству, limit до 200, cursor для страниц.
GET /api/v2/items?q=Asiimov&wear=fn&limit=50
get /items/{id}
Одна позиция: сводная цена, число сделок за сутки, диапазон цен активных лотов, список площадок, где позиция сейчас представлена.
get /items/{id}/history
История цен и объёмов. Параметры from, to, step
(1h, 1d, 1w). Окно не может превышать глубину истории
на тарифе.
{
"item": "itm_9c1af730",
"step": "1d",
"points": [
["2026-08-24", 14.90, 388],
["2026-08-25", 14.71, 402],
["2026-08-26", 14.62, 412]
]
}
Порядок значений в точке: дата, сводная цена, число сделок. Если сделок за интервал было
меньше пяти, цена приходит как null.
Лоты
get /items/{id}/listings
Активные лоты по позиции. Фильтры: venue, float_min,
float_max, pattern, price_max,
stickers (any, none).
{
"items": [
{
"id": "lst_4b70d2",
"venue": "venue_c",
"price": 13.10,
"float": 0.2043,
"pattern": 661,
"stickers": [],
"seen_at": "2026-08-26T11:02:55Z"
}
],
"next": "eyJvIjoyMDB9"
}
Спреды
get /items/{id}/spread
Лучшая пара площадок для позиции. Параметр venues ограничивает расчёт
списком площадок, full=1 возвращает все пары, а не только лучшую.
get /spreads
Спреды по всему каталогу, отсортированные по убыванию процента.
| Параметр | Тип | Описание |
|---|---|---|
min_spread_pct | число | Нижняя граница спреда в процентах. По умолчанию 5. |
min_trades_24h | целое | Отсечь неликвид. По умолчанию 5. |
max_hold_days | целое | Максимальный срок удержания на площадке покупки. |
price_min, price_max | число | Диапазон цены покупки. |
venues | список | Учитывать только эти площадки, через запятую. |
/spreads кешируется на 20 секунд и одинакова для всех клиентов.
Опрашивать её чаще смысла нет — за as_of видно возраст расчёта.
Площадки
get /venues
Комиссии, сроки вывода и правила удержания — те самые значения, которые используются в расчёте спреда.
{
"items": [
{
"id": "venue_a",
"fee": 0.125,
"withdraw_fee": 0.35,
"hold_days": 7,
"status": "ok"
}
]
}
Поле status принимает значения ok, degraded и
down. Площадка в состоянии down в расчёт спредов не попадает,
а её последние известные цены помечаются как устаревшие.
Инвентарь
get /inventory
Разбор инвентаря по публичному профилю. Параметр profile обязателен.
Возвращается состав, оценка по сводным ценам и оценка по лучшим ценам продажи за вычетом
комиссий.
{
"profile": "76561198000000000",
"count": 148,
"value_quote": 2140.55,
"value_net": 1863.20,
"top": [
{ "item": "itm_5d2b91cc", "count": 1, "quote": 412.00 }
]
}
Закрытый профиль даёт 403 с кодом inventory_private.
Это ограничение площадки, а не сервиса.
Отслеживания
get /watches
post /watches
Создание требует области write. Поле kind принимает
spread или listing: первое следит за разницей между площадками,
второе — за появлением конкретного лота дешевле указанной цены.
{
"item": "itm_9c1af730",
"kind": "listing",
"price_max": 12.50,
"float_max": 0.22,
"venues": ["venue_a", "venue_c"],
"channels": ["default"]
}
Ошибки
| Код | Когда |
|---|---|
400 | Некорректные параметры: неизвестный step, окно шире тарифа, битая дата. |
401 | Токен отсутствует, истёк или отозван. |
403 | Не хватает области, либо профиль инвентаря закрыт. |
404 | Позиция не найдена. Позиция без активных лотов даёт 200 с пустым списком. |
422 | Условия отслеживания несовместимы — например, float_max ниже границы указанного качества. |
429 | Превышен лимит запросов. |
503 | Хранилище временно недоступно; повторяйте по Retry-After. |
{
"error": {
"code": "window_too_wide",
"message": "Запрошено 400 дней при глубине истории 30 дней",
"field": "from"
}
}