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.
시세 추적, 인터랙티브 지도, 진행도 도구

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,  // 이 아이템의 price는 신뢰하지 마십시오
    "basePrice": 970000,      // 플리마켓 데이터가 아니라 PVP와 동일합니다
    "traderName": "Therapist",
    "traderPrice": 494700
}

엔드포인트

GET/item?q=ledx
이름, uid 또는 bsgId로 아이템을 찾습니다.
q아이템 이름 또는 짧은 이름이며, 지원하는 아무 로케일이나 됩니다. 최대 5개가 반환되고 정확히 일치하는 항목이 먼저 옵니다
uidTarkov Market 아이템 uid — 정확히 하나의 아이템을 반환합니다
bsgId게임 파일의 아이템 id — 정확히 하나의 아이템을 반환합니다
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 / bsgIdGET과 동일하며 json 본문으로 전달합니다
langGET과 동일
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/all분당 5회
모든 아이템을 배열 하나로 반환합니다. 데이터는 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/download분당 5회
같은 전체 목록을 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
Tarkov Market 아이템 id — 값이 바뀌지 않으므로 이쪽 키로 사용하십시오
bsgId
게임 파일의 아이템 id
name / shortName
요청한 로케일의 아이템 이름
tags
아이템 카테고리이며, 사이트에서 필터에 쓰는 것과 같습니다
price
마지막으로 알려진 플리마켓 가격, ₽. 0은 이 모드에 가격이 없다는 뜻입니다
avg24hPrice / avg7daysPrice
최근 24시간 / 7일 플리마켓 평균 가격, ₽
diff24h / diff7days
그 평균 대비 최근 가격의 변동률, %
basePrice
아이템 기본 가격(도감 기준), ₽ — 상인 매입가는 이 값에서 계산됩니다
traderName
이 아이템을 가장 비싸게 사들이는 상인
traderPrice / traderPriceCur
그 상인이 지불하는 금액이며 해당 상인의 화폐 기준입니다 (₽, $ 또는 €)
traderPriceRub
같은 상인 가격을 게임 내 환율로 ₽로 환산한 값
bannedOnFlea
플리마켓에서 판매할 수 없는 아이템
haveMarketData
플리마켓에서 거래되며 가격이 최신이라는 뜻입니다 — false면 price를 신뢰하지 마십시오
isFunctional
게임에서 제거되었거나 획득할 수 없는 아이템은 false입니다
updated
스캐너가 플리마켓 가격을 마지막으로 본 시각입니다. 비어 있으면 한 번도 본 적이 없다는 뜻입니다
slots
인벤토리에서 아이템이 차지하는 칸 수
img / imgBig
우리 cdn에 있는 아이템 아이콘과 큰 이미지
icon
img의 레거시 별칭 — 같은 url입니다
link / wikiLink
tarkov-market.com과 위키의 아이템 페이지

캐릭터 진행 상황

진행 상황 API 기본 URL: https://api.tarkov-market.app/api/v1

/characters에서 charUid를 받습니다. 캐릭터가 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의 절댓값을 설정하고 GET의 revision을 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의 절댓값을 설정하고 GET의 revision을 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의 절댓값을 설정하고 GET의 revision을 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 접근 권한을 재판매하는 경우, 사전 통보나 보상 없이 접근이 차단됩니다.