Tarkov Pilot
⬤
WS
⬤
Вышел Tarkov Pilot v2 — старые версии больше не работают, скачайте новую. Настройка проще, автообновление, все настройки в окне приложения. Для доступа из РФ используйте tarkov-market.ru
Цены, интерактивные карты и инструменты прогрессии

Tarkov Market API

Цены барахолки, цены торговцев и данные предметов Escape from Tarkov. Базовый url: https://api.tarkov-market.app/api/v1

Официальные клиенты, без зависимостей: Node.js, Python и Go — github.com/ggdiam/tarkov-market-api

API-ключ

Чтобы пользоваться API, нужен Pro-статус на сайте. В примерах ниже подставлен плейсхолдер your_api_key.

Авторизация

API-ключ также разрешает приложениям читать и менять прогресс ваших персонажей. Передавайте его только доверенным приложениям. Нужен PRO; генерация нового API-ключа отзывает старый. Запросы прогресса принимают x-api-key только в заголовке.

Ключ передаётся заголовком:

x-api-key: your_api_key

Или параметром запроса, если заголовки неудобны (браузер, стрим-боты, таблицы):

?x-api-key=your_api_key

Ключа нет, ключ неизвестен или выключен → 401 { "error": "Access denied" }

Режимы игры

Каждый эндпоинт предметов существует в трёх игровых режимах. Режим задаётся либо префиксом пути, либо параметром mode — ответ одинаковый:

Режим
Префикс пути
Параметр
Источник цен
PVP
/api/v1/…
по умолчанию
коллекция items
PVE
/api/v1/pve/…
mode=pve
скан PVE
Season
/api/v1/season/…
mode=season
скан сезона

Сезонные персонажи

Сезонная экономика сканируется отдельно и она молодая: цена барахолки появляется у предмета только после того, как сканер увидел его на сезонной барахолке, а avg24hPrice / diff24h наполняются по мере накопления истории сезонных цен. Поля, не зависящие от барахолки — basePrice и цена торговца — остаются значениями PVP, пока у сезона не появится свой дамп игровых данных.

Предмет без сезонной цены выглядит так (тот же предмет, тот же запрос, режим сезона):

{
    "uid": "a7f7568c-61fb-437e-9f71-06e58aae26ba",
    "name": "LEDX Skin Transilluminator",
    "price": 0,               // сезонной цены барахолки пока нет
    "avg24hPrice": 0,
    "diff24h": 0,
    "updated": "",            // на сезонной барахолке не видели ни разу
    "haveMarketData": false,  // цене этого предмета верить нельзя
    "basePrice": 970000,      // не данные барахолки — как в PVP
    "traderName": "Therapist",
    "traderPrice": 494700
}

Эндпоинты

GET/item?q=ledx
Поиск предмета по имени, uid или bsgId.
qИмя или короткое имя предмета на любой поддерживаемой локали. Вернётся до 5 совпадений, точное — первым
uiduid предмета в Tarkov Market — вернётся ровно один предмет
bsgIdid предмета из файлов игры — вернётся ровно один предмет
langЛокаль имён и ссылки на сайт. Одна из: en, ru, ch, cz, de, es, fr, hu, it, jp, kr, mx, pl, po, ro, sk, tr. По умолчанию en
URL
https://api.tarkov-market.app/api/v1/item?q=ledx&x-api-key=your_api_key
curl
curl -H "x-api-key: your_api_key" "https://api.tarkov-market.app/api/v1/item?q=ledx"
Пример ответа
[
    {
        "uid": "a7f7568c-61fb-437e-9f71-06e58aae26ba",
        "name": "LEDX Skin Transilluminator",
        "bannedOnFlea": false,
        "haveMarketData": true,
        "tags": ["Barter"],
        "shortName": "LEDX",
        "price": 550000,
        "basePrice": 970000,
        "avg24hPrice": 598993,
        "avg7daysPrice": 671670,
        "traderName": "Therapist",
        "traderPrice": 494700,
        "traderPriceCur": "₽",
        "traderPriceRub": 494700,
        "updated": "2026-08-05T17:34:28.319Z",
        "slots": 1,
        "diff24h": -8.18,
        "diff7days": -18.11,
        "icon": "https://cdn.tarkov-market.app/images/items/a7f7568c-61fb-437e-9f71-06e58aae26ba_sm.png",
        "link": "https://tarkov-market.com/item/ledx_skin_transilluminator",
        "wikiLink": "https://escapefromtarkov.fandom.com/wiki/LEDX_Skin_Transilluminator",
        "img": "https://cdn.tarkov-market.app/images/items/a7f7568c-61fb-437e-9f71-06e58aae26ba_sm.png",
        "imgBig": "https://cdn.tarkov-market.app/images/items/ledx_skin_transilluminator_lg.png",
        "bsgId": "5c0530ee86f774697952d952",
        "isFunctional": true,
        "reference": "https://www.patreon.com/tarkov_market"
    }
]
POST/item
Тот же поиск, но с json-телом — так удобнее искать не на латинице, не нужно url-кодировать запрос.
q / uid / bsgIdТо же, что в GET, но в json-теле
langТо же, что в GET
curl
curl https://api.tarkov-market.app/api/v1/item \
  -H "x-api-key: your_api_key" \
  -H "Content-Type: application/json" \
  -X POST --data '{"q":"AI-2急救组合","lang":"ch"}'
Пример ответа
[
    {
        "uid": "2335b619-c562-41da-962f-e7b5aba5d45c",
        "name": "AI-2急救组合",
        "shortName": "AI-2",
        "tags": ["Meds"],
        "price": 6900,
        "basePrice": 4160,
        "avg24hPrice": 6695,
        "avg7daysPrice": 5912,
        "traderName": "Therapist",
        "traderPrice": 2121,
        "traderPriceCur": "₽",
        "traderPriceRub": 2121,
        "diff24h": 3.06,
        "diff7days": 16.71,
        "updated": "2026-08-05T17:07:42.165Z",
        "link": "https://tarkov-market.com/ch/item/ai-2_medikit",
        "bsgId": "5755356824597772cb798962",
        "isFunctional": true
    }
]
GET/items/all5 зап/мин
Все предметы одним массивом. Данные кешируются на 5 минут, опрашивать чаще смысла нет.
tagsОставить только предметы с этими тегами, через запятую: tags=Ammo,Magazines
sortСортировка по полю ответа, например sort=price
sort_directionasc (по умолчанию) или desc
langЛокаль имён и ссылок на сайт
URL
https://api.tarkov-market.app/api/v1/items/all?x-api-key=your_api_key
curl
curl -H "x-api-key: your_api_key" "https://api.tarkov-market.app/api/v1/items/all"
Пример ответа
[
    {
        "uid": "f0fa8457-6638-4ad2-b7e8-4708033d8f39",
        "name": "Secure Flash drive",
        "shortName": "Flash drive",
        "price": 37400,
        ...
    },
    {
        "uid": "33c15349-44e6-4553-9705-1b6417a1ad6a",
        "name": "SSD drive",
        ...
    },
    ...
]
GET/items/all/download5 зап/мин
Тот же полный список, но файлом json на скачивание.
langЛокаль имён и ссылок на сайт
URL
https://api.tarkov-market.app/api/v1/items/all/download?x-api-key=your_api_key
curl
curl -H "x-api-key: your_api_key" "https://api.tarkov-market.app/api/v1/items/all/download"

Поля ответа

Поле
Что означает
uid
id предмета в Tarkov Market — постоянный, используйте его как ключ у себя
bsgId
id предмета из файлов игры
name / shortName
Название предмета на запрошенной локали
tags
Категории предмета, те же, по которым фильтрует сайт
price
Последняя известная цена барахолки, ₽. 0 — цены для этого режима нет
avg24hPrice / avg7daysPrice
Средняя цена барахолки за последние 24 часа / 7 дней, ₽
diff24h / diff7days
Изменение последней цены относительно этих средних, %
basePrice
Базовая цена предмета (из справочника), ₽ — от неё считается выкуп у торговцев
traderName
Торговец, который платит за предмет больше всех
traderPrice / traderPriceCur
Сколько платит этот торговец, в его валюте (₽, $ или €)
traderPriceRub
Та же цена торговца, пересчитанная в ₽ по внутриигровому курсу
bannedOnFlea
Предмет нельзя продать на барахолке
haveMarketData
Предмет торгуется на барахолке и его цена свежая — false значит цене верить нельзя
isFunctional
false у предметов, удалённых из игры или недоступных
updated
Когда сканер последний раз видел цену на барахолке. Пусто — не видел ни разу
slots
Размер предмета в инвентаре, в ячейках
img / imgBig
Иконка и большая картинка предмета на нашем cdn
icon
Легаси-алиас img — тот же url
link / wikiLink
Страница предмета на tarkov-market.com и на вики

Прогресс персонажа

Базовый URL API прогресса: https://api.tarkov-market.app/api/v1

Получите charUid через /characters. Персонаж задаёт PVP, PVE или SEASON; переключатель выше относится к ценам. itemId и questId — BSG ID, включая алиасы и ссылки на цели. upgradeKey обозначает уровень убежища, например Workbench_2.

GET возвращает revision и ETag. Замените шаблоны в примерах на персонажа, BSG ID и revision; в каждом PATCH передавайте If-Match: "{revision}". Запись задаёт абсолютное значение. После 409 перечитайте прогресс и согласуйте изменение. Повтор уже применённого значения успешен без новой записи.

Прогресс: 300 запросов/мин на ключ и владельца; 60 попыток PATCH/мин на владельца. Эти лимиты отдельны от запросов цен. 429 содержит Retry-After: 60. Личные снимки не кешируются.

GET/characters
Список персонажей владельца API-ключа.
curl
curl -H "x-api-key: your_api_key" "https://api.tarkov-market.app/api/v1/characters"
Пример ответа
{
    "characters": [
        {
            "charUid": "{charUid}",
            "name": "Main",
            "gameMode": "PVP"
        }
    ]
}
GET/characters/{charUid}/tracked-items
Имена и иконки предметов: requiredQuantity — оставшиеся обязательные требования, spentQuantity — уже учтённое, availableQuantity — запас, remainingQuantity = max(0, requiredQuantity − availableQuantity), sources — источники. Стартовая выдача и сданные шаги уменьшают потребность. Опциональные цели исключены; firInventorySeparate:false означает отсутствие отдельного FiR-запаса. PATCH меняет availableQuantity; произвольные цели добавлять и удалять нельзя. Цены: /api/v1/item?bsgId={itemId}&mode={mode}, /api/v1/items/all?mode={mode}. Используйте режим персонажа (pvp/pve/season); цену на слот рассчитывайте как price / slots.
langЛокаль имён и ссылки на сайт. Одна из: en, ru, kr, it, es, de, jp, ch, tr, fr, pl, po, cz, sk, hu, ro, mx. По умолчанию en
curl
curl -H "x-api-key: your_api_key" "https://api.tarkov-market.app/api/v1/characters/{charUid}/tracked-items"
Пример ответа
{
    "charUid": "{charUid}",
    "gameMode": "PVP",
    "revision": "{revision}",
    "firInventorySeparate": false,
    "items": [
        {
            "itemId": "5c0530ee86f774697952d952",
            "name": "LEDX Skin Transilluminator",
            "shortName": "LEDX",
            "slots": 1,
            "icon": "https://cdn.tarkov-market.app/images/items/a7f7568c-61fb-437e-9f71-06e58aae26ba_sm.png",
            "requiredQuantity": 10,
            "spentQuantity": 0,
            "availableQuantity": 5,
            "remainingQuantity": 5,
            "sources": [
                {
                    "type": "quest",
                    "questId": "{BSG quest ID}",
                    "amount": 10,
                    "remainingRequiredQuantity": 10,
                    "fir": true,
                    "completed": false,
                    "canceled": false
                }
            ]
        }
    ]
}
PATCH/characters/{charUid}/tracked-items/{itemId}
Установить абсолютное значение из JSON, передав revision из GET в If-Match.
availableQuantityЕдинственное допустимое поле JSON, обязательное: целое число от 0 до 1 000 000 000. Задаёт абсолютный доступный запас, а не изменение на это число; 0 обнуляет запас. Остальные поля предмета доступны только для чтения. Пропуск, неверное значение или дополнительные поля — 400 invalid_quantity.
curl
curl "https://api.tarkov-market.app/api/v1/characters/{charUid}/tracked-items/{itemId}" \
  -H "x-api-key: your_api_key" \
  -H 'If-Match: "{revision}"' \
  -H "Content-Type: application/json" \
  -X PATCH --data '{"availableQuantity":4}'
Пример ответа
{
    "ok": true,
    "changed": true,
    "revision": "{newRevision}",
    "notificationDelivered": true
}
GET/characters/{charUid}/quests
Квесты, подходящие персонажу. status вычисляется: completed, failed, unreachable, available или locked; это не факт принятия квеста в игре. PATCH completed:true или false. Сброс сохраняет галочки шагов и завершение связанных квестов.
langЛокаль имён и ссылки на сайт. Одна из: en, ru, kr, it, es, de, jp, ch, tr, fr, pl, po, cz, sk, hu, ro, mx. По умолчанию en
curl
curl -H "x-api-key: your_api_key" "https://api.tarkov-market.app/api/v1/characters/{charUid}/quests"
Пример ответа
{
    "charUid": "{charUid}",
    "gameMode": "PVP",
    "revision": "{revision}",
    "quests": [
        {
            "questId": "{BSG quest ID}",
            "questIdAliases": [],
            "name": "Quest name",
            "trader": "Therapist",
            "completed": false,
            "status": "available"
        }
    ]
}
PATCH/characters/{charUid}/quests/{questId}
Установить абсолютное значение из JSON, передав revision из GET в If-Match.
completedЕдинственное допустимое поле JSON, обязательное: логическое значение. true завершает квест; false сбрасывает завершение, сохраняя галочки шагов и завершение связанных квестов. status, шаги и другие поля этой ручкой менять нельзя. Пропуск, неверное значение или дополнительные поля — 400 invalid_completed.
curl
curl "https://api.tarkov-market.app/api/v1/characters/{charUid}/quests/{questId}" \
  -H "x-api-key: your_api_key" \
  -H 'If-Match: "{revision}"' \
  -H "Content-Type: application/json" \
  -X PATCH --data '{"completed":true}'
Пример ответа
{
    "ok": true,
    "changed": true,
    "revision": "{newRevision}",
    "notificationDelivered": true
}
GET/characters/{charUid}/hideout
Каждый уровень убежища: upgradeKey, moduleId (BSG ID или null), completed, prebuilt и canComplete. PATCH completed:true или false. Сначала завершите зависимости; при сбросе сначала сбросьте зависимые постройки. Стартовые постройки издания сбрасывать нельзя. canComplete проверяет зависимости модулей, а не деньги и навыки в игре.
langЛокаль имён и ссылки на сайт. Одна из: en, ru, kr, it, es, de, jp, ch, tr, fr, pl, po, cz, sk, hu, ro, mx. По умолчанию en
curl
curl -H "x-api-key: your_api_key" "https://api.tarkov-market.app/api/v1/characters/{charUid}/hideout"
Пример ответа
{
    "charUid": "{charUid}",
    "gameMode": "PVP",
    "revision": "{revision}",
    "modules": [
        {
            "upgradeKey": "Workbench_2",
            "moduleId": "{BSG module ID}",
            "name": "Workbench",
            "level": 2,
            "completed": false,
            "prebuilt": false,
            "canComplete": true
        }
    ]
}
PATCH/characters/{charUid}/hideout/{upgradeKey}
Установить абсолютное значение из JSON, передав revision из GET в If-Match.
completedЕдинственное допустимое поле JSON, обязательное: логическое значение. true отмечает этот уровень построенным; false сбрасывает постройку. Остальные поля доступны только для чтения. Пропуск, неверное значение или дополнительные поля — 400 invalid_completed; ограничения зависимостей и стартовых построек — 409.
curl
curl "https://api.tarkov-market.app/api/v1/characters/{charUid}/hideout/{upgradeKey}" \
  -H "x-api-key: your_api_key" \
  -H 'If-Match: "{revision}"' \
  -H "Content-Type: application/json" \
  -X PATCH --data '{"completed":true}'
Пример ответа
{
    "ok": true,
    "changed": true,
    "revision": "{newRevision}",
    "notificationDelivered": true
}

Ошибки: 400 — неверные данные; 401 — отсутствующий, отключённый, отозванный ключ, ключ без владельца или бан; 403 — нужен PRO или сезон отключён; 404 — недоступный персонаж или неизвестная сущность; 409 — конфликт прогресса, неоднозначный BSG ID или ограничения постройки; 413 — большое тело; 428 — нет If-Match; 429 — лимит; 503 — сервис недоступен. Тело: {"error":"code"}.

notificationDelivered:false означает, что изменение сохранено, но уведомление сайта не подтверждено. Обновите прогресс; это не ошибка записи.

Лимиты и ошибки

Правило
Подробности
300 зап/мин
На ключ, по всем ценовым ручкам. У прогресса отдельные лимиты запросов и записей.
5 зап/мин
Полный список предметов и его скачивание, во всех режимах. Цены всё равно кешируются на 5 минут.
401
Ключа нет, он неизвестен или выключен.
429
Лимит запросов исчерпан — в теле ответа сказано, какой именно.

Условия

API предназначен для личного использования.

Если используете его в публичном проекте, поставьте ссылку на tarkov-market.com как на источник данных.

Если ваш публичный проект копирует большую часть возможностей tarkov-market, доступ может быть закрыт без предупреждения и компенсации.

Если вы перепродаёте доступ к API, он будет закрыт без предупреждения и компенсации.