Tarkov Pilot
⬤
Tarkov Pilot v2 released — old versions don't work anymore, please download the new one. Easier setup, auto-update, all settings in the app window.
Śledzenie cen, interaktywne mapy i narzędzia postępu

Tarkov Market API

Ceny pchlego targu, ceny handlarzy i dane przedmiotów Escape from Tarkov. Bazowy URL: https://api.tarkov-market.app/api/v1

Oficjalne klienty bez zależności: Node.js, Python i Go — github.com/ggdiam/tarkov-market-api

Klucz API

Aby korzystać z API, potrzebujesz statusu PRO na stronie. Poniższe przykłady używają wartości zastępczej your_api_key.

Uwierzytelnianie

Klucz API pozwala aplikacjom również odczytywać i zmieniać postęp twoich postaci. Udostępniaj go tylko zaufanym aplikacjom. Wymagane PRO; nowy klucz API unieważnia stary. Postęp przyjmuje x-api-key tylko w nagłówku.

Przekaż klucz w nagłówku:

x-api-key: your_api_key

Lub jako parametr zapytania, jeśli nagłówki są niewygodne (przeglądarka, boty streamerskie, arkusze):

?x-api-key=your_api_key

Brakujący, nieznany lub wyłączony klucz → 401 { "error": "Access denied" }

Tryby gry

Każdy endpoint przedmiotów istnieje w trzech trybach gry. Tryb można ustawić prefiksem ścieżki lub parametrem mode — oba sposoby dają tę samą odpowiedź:

Tryb
Prefiks ścieżki
Parametr
Źródło cen
PVP
/api/v1/…
domyślny
kolekcja items
PVE
/api/v1/pve/…
mode=pve
skan PVE
Season
/api/v1/season/…
mode=season
skan sezonowy

Postacie sezonowe

Gospodarka sezonowa jest skanowana osobno i dopiero się rozwija: przedmiot ma cenę targową dopiero po zauważeniu go przez skaner na targu sezonowym, a avg24hPrice / diff24h wypełniają się wraz ze zbieraniem historii cen. Pola niezależne od targu — basePrice i cena handlarza — używają wartości PVP, dopóki sezon nie otrzyma własnego zrzutu danych gry.

Tak wygląda brak ceny sezonowej (ten sam przedmiot, to samo żądanie, tryb sezonowy):

{
    "uid": "a7f7568c-61fb-437e-9f71-06e58aae26ba",
    "name": "LEDX Skin Transilluminator",
    "price": 0,               // brak ceny targowej sezonu
    "avg24hPrice": 0,
    "diff24h": 0,
    "updated": "",            // nigdy nie widziano na targu sezonowym
    "haveMarketData": false,  // nie używaj ceny tego przedmiotu
    "basePrice": 970000,      // dane spoza targu — takie same jak PVP
    "traderName": "Therapist",
    "traderPrice": 494700
}

Endpointy

GET/item?q=ledx
Znajdź przedmiot po nazwie, uid lub bsgId.
qNazwa lub skrócona nazwa przedmiotu w dowolnym obsługiwanym języku. Zwraca do 5 dopasowań, dokładne jako pierwsze
uiduid przedmiotu Tarkov Market — zwraca dokładnie jeden przedmiot
bsgIdIdentyfikator przedmiotu z plików gry — zwraca dokładnie jeden przedmiot
langJęzyk nazw i linku do strony. Jeden z: en, ru, ch, cz, de, es, fr, hu, it, jp, kr, mx, pl, po, ro, sk, tr. Domyślnie 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"
Przykład odpowiedzi
[
    {
        "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
To samo wyszukiwanie, ale z treścią JSON. Użyj go do zapytań spoza alfabetu łacińskiego, aby uniknąć kodowania URL.
q / uid / bsgIdTakie same jak w GET, przekazane w treści JSON
langTak samo jak w 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"}'
Przykład odpowiedzi
[
    {
        "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 żądań/min
Wszystkie przedmioty w jednej tablicy. Dane są buforowane przez 5 minut, więc częstsze odpytywanie nic nie daje.
tagsZachowaj tylko przedmioty z tymi tagami, rozdzielonymi przecinkami: tags=Ammo,Magazines
sortSortuj według pola odpowiedzi, np. sort=price
sort_directionasc (domyślnie) lub desc
langJęzyk nazw i linków do strony
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"
Przykład odpowiedzi
[
    {
        "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 żądań/min
Ta sama pełna lista jako plik JSON do pobrania.
langJęzyk nazw i linków do strony
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"

Pola odpowiedzi

Pole
Znaczenie
uid
Identyfikator przedmiotu Tarkov Market — stały, używaj go jako klucza u siebie
bsgId
Identyfikator przedmiotu z plików gry
name / shortName
Nazwa przedmiotu w żądanym języku
tags
Kategorie przedmiotu, takie same jak filtry na stronie
price
Ostatnia znana cena targowa, ₽. 0 oznacza brak ceny dla tego trybu
avg24hPrice / avg7daysPrice
Średnia cena targowa z ostatnich 24 godzin / 7 dni, ₽
diff24h / diff7days
Zmiana ostatniej ceny względem tych średnich, %
basePrice
Cena bazowa przedmiotu z katalogu, ₽ — podstawa obliczania ceny skupu handlarza
traderName
Handlarz płacący najwięcej za przedmiot
traderPrice / traderPriceCur
Kwota płacona przez tego handlarza w jego walucie (₽, $ lub €)
traderPriceRub
Ta sama cena handlarza przeliczona na ₽ po kursie w grze
bannedOnFlea
Przedmiotu nie można sprzedać na pchlim targu
haveMarketData
Przedmiotem można handlować na targu, a cena jest aktualna. false oznacza, że nie należy ufać cenie
isFunctional
false dla przedmiotów usuniętych z gry lub niemożliwych do zdobycia
updated
Kiedy skaner ostatnio widział cenę targową. Pusta wartość oznacza, że nigdy
slots
Rozmiar przedmiotu w polach ekwipunku
img / imgBig
Ikona i duży obraz przedmiotu na moim CDN
icon
Starszy alias img — ten sam URL
link / wikiLink
Strona przedmiotu na tarkov-market.com i wiki

Postęp postaci

Bazowy URL API postępu: https://api.tarkov-market.app/api/v1

Pobierz charUid z /characters. Postać określa PVP, PVE lub SEASON; przełącznik powyżej dotyczy cen. itemId i questId to ID BSG, także aliasy i odwołania celów. upgradeKey oznacza poziom kryjówki, np. Workbench_2.

GET zwraca revision i ETag. Zastąp szablony postacią, ID BSG i revision; wyślij If-Match: "{revision}" przy każdym PATCH. Zapis ustawia wartość bezwzględną. Po 409 odczytaj aktualny postęp i uzgodnij zmianę. Powtórzenie zapisanej wartości udaje się bez kolejnego zapisu.

Postęp: 300 żądań/minutę na klucz i właściciela; 60 prób PATCH/minutę na właściciela. Budżety osobne od cen. 429 zawiera Retry-After: 60. Prywatne stany nie są buforowane.

GET/characters
Lista postaci właściciela klucza API.
curl
curl -H "x-api-key: your_api_key" "https://api.tarkov-market.app/api/v1/characters"
Przykład odpowiedzi
{
    "characters": [
        {
            "charUid": "{charUid}",
            "name": "Main",
            "gameMode": "PVP"
        }
    ]
}
GET/characters/{charUid}/tracked-items
Nazwy i ikony z requiredQuantity (pozostałe obowiązkowe wymagania), spentQuantity (już uwzględnione), availableQuantity (zapas), remainingQuantity = max(0, requiredQuantity − availableQuantity) oraz sources. Przedmioty początkowe i oddane etapy zmniejszają wymagania. Cele opcjonalne są wykluczone; firInventorySeparate:false oznacza brak osobnego zapasu FiR. PATCH ustawia availableQuantity; nie dodaje ani usuwa własnych celów. Ceny: /api/v1/item?bsgId={itemId}&mode={mode}, /api/v1/items/all?mode={mode}. Użyj trybu postaci (pvp/pve/season); oblicz cenę za pole jako price / slots.
langJęzyk nazw i linku do strony. Jeden z: en, ru, kr, it, es, de, jp, ch, tr, fr, pl, po, cz, sk, hu, ro, mx. Domyślnie en
curl
curl -H "x-api-key: your_api_key" "https://api.tarkov-market.app/api/v1/characters/{charUid}/tracked-items"
Przykład odpowiedzi
{
    "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}
Ustaw wartość bezwzględną z JSON i wyślij revision z GET w If-Match.
availableQuantityJedyne dozwolone pole JSON, wymagane: liczba całkowita od 0 do 1 000 000 000. Ustawia bezwzględny dostępny zapas, zamiast zmieniać go o podaną wartość; 0 zeruje zapas. Pozostałe pola są tylko do odczytu. Brak pola, błędna wartość lub dodatkowe pola: 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}'
Przykład odpowiedzi
{
    "ok": true,
    "changed": true,
    "revision": "{newRevision}",
    "notificationDelivered": true
}
GET/characters/{charUid}/quests
Zadania zgodne z postacią. status jest obliczany: completed, failed, unreachable, available lub locked; nie oznacza przyjęcia zadania w grze. PATCH completed:true lub false. Reset zachowuje oznaczenia etapów i ukończenie powiązanych zadań.
langJęzyk nazw i linku do strony. Jeden z: en, ru, kr, it, es, de, jp, ch, tr, fr, pl, po, cz, sk, hu, ro, mx. Domyślnie en
curl
curl -H "x-api-key: your_api_key" "https://api.tarkov-market.app/api/v1/characters/{charUid}/quests"
Przykład odpowiedzi
{
    "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}
Ustaw wartość bezwzględną z JSON i wyślij revision z GET w If-Match.
completedJedyne dozwolone pole JSON, wymagane: wartość logiczna. true kończy zadanie; false resetuje ukończenie, zachowując zaznaczone etapy i ukończenie powiązanych zadań. Nie można tu zmieniać status, etapów ani innych pól. Brak pola, błędna wartość lub dodatkowe pola: 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}'
Przykład odpowiedzi
{
    "ok": true,
    "changed": true,
    "revision": "{newRevision}",
    "notificationDelivered": true
}
GET/characters/{charUid}/hideout
Każdy poziom kryjówki: upgradeKey, moduleId (ID BSG lub null), completed, prebuilt i canComplete. PATCH completed:true lub false. Najpierw ukończ wymagane moduły, przy resecie najpierw zależne. Początkowych budowli edycji nie można resetować. canComplete sprawdza zależności modułów, nie pieniądze ani umiejętności w grze.
langJęzyk nazw i linku do strony. Jeden z: en, ru, kr, it, es, de, jp, ch, tr, fr, pl, po, cz, sk, hu, ro, mx. Domyślnie en
curl
curl -H "x-api-key: your_api_key" "https://api.tarkov-market.app/api/v1/characters/{charUid}/hideout"
Przykład odpowiedzi
{
    "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}
Ustaw wartość bezwzględną z JSON i wyślij revision z GET w If-Match.
completedJedyne dozwolone pole JSON, wymagane: wartość logiczna. true zapisuje ulepszenie jako zbudowane; false resetuje budowę. Pozostałe pola są tylko do odczytu. Brak pola, błędna wartość lub dodatkowe pola: 400 invalid_completed; ograniczenia zależności lub budowli początkowych: 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}'
Przykład odpowiedzi
{
    "ok": true,
    "changed": true,
    "revision": "{newRevision}",
    "notificationDelivered": true
}

Błędy: 400 nieprawidłowe dane; 401 brak klucza, klucz wyłączony, unieważniony, bez właściciela lub właściciel zbanowany; 403 wymagane PRO/sezon wyłączony; 404 niedostępna postać/nieznany obiekt; 409 konflikt, niejednoznaczny ID BSG lub ograniczenia budowy; 413 duża treść; 428 brak If-Match; 429 limit; 503 usługa niedostępna. Treść: {"error":"code"}.

notificationDelivered:false oznacza zapisane dane bez potwierdzenia powiadomienia strony. Odśwież postęp; zapis się powiódł.

Limity i błędy

Zasada
Szczegóły
300 żądań/min
Na klucz, we wszystkich endpointach cen. Postęp ma osobne limity żądań i zapisów.
5 żądań/min
Pełna lista przedmiotów i jej pobieranie we wszystkich trybach. Ceny i tak są buforowane przez 5 minut.
401
Brakujący, nieznany lub wyłączony klucz.
429
Osiągnięto limit żądań. Treść odpowiedzi wskazuje, który limit.

Warunki

API jest przeznaczone do użytku osobistego.

Jeśli używasz go w publicznym projekcie, podaj link do tarkov-market.com jako dostawcy danych.

Jeśli twój publiczny projekt kopiuje większość funkcji tarkov-market, dostęp może zostać odebrany bez ostrzeżenia i rekompensaty.

Jeśli odsprzedajesz API, dostęp zostanie odebrany bez ostrzeżenia i rekompensaty.