JOHAP · DATA CONTRACT · 확인 2026.10.10
공식 통계 API가 제공하는 값
Blizzard 공식 영웅 통계 웹사이트의 실제 JSON 응답과 화면 필터를 대조했습니다. 원본 데이터와 Johap의 추론·편집 점수를 구별합니다.
API 키·OAuth·로그인 없이 익명 GET 요청을 읽었습니다. 현재 공식 개발자 문서의 API 제품 목록에서 Overwatch 항목을 찾지 못했습니다. 여기서 사용하는 자료는 공식 웹의 내부 JSON과 공개 HTML이며, 정식 Battle.net Overwatch 개발자 API의 버전·호환성 보장 계약이라고 주장하지 않습니다. 응답 구조·선택 범위·영웅 목록·백분율을 검증한 뒤 자료를 반영합니다.
실제 API 예시 · PC / 아시아 / 경쟁전 / 66번 국도 / 골드 ↗
GET https://overwatch.blizzard.com/ko-kr/rates/data/?input=PC&map=route-66®ion=Asia&role=All&rq=2&tier=Gold초기 관측에서는 경쟁전 값이 1이었고 이후 공식 화면·응답에서 2로 돌아온 것을 확인했습니다. 수집마다 의미를 읽고 응답의 6개 필터를 대조합니다. 과거 관측의 값과 수집 시각은 보존하며, 시점이 다른 예시 URL을 현행 범위라고 그대로 재사용하지 않습니다.
추천에 직접 활용할 수 있는 원본
| 자료 | 원본 제공 범위 | Johap의 사용 방식 |
|---|---|---|
| 승률 | 선택한 맵·티어·지역·입력·큐의 공식 표시 승률 | 요청 범위의 직접 값을 우선 사용하고 미확보 범위는 추정·대체 여부를 표시합니다. |
| 픽률 | 영웅 사용시간 기반 선택 지표 | 희귀 픽의 점수 영향도를 할인하는 편집 근거입니다. 경기 수·미러전 비율로 바꾸지 않습니다. |
| 밴률 | 선택 범위의 공식 금지율 | 비교 정보로 표시합니다. 높은 밴률을 무조건 성능 보너스로 더하지 않습니다. |
| 영웅 정보 | ID·이름·역할·하위 역할·색상·초상화·역할 아이콘 | 현재 역할과 등록 목록을 대조합니다. 기술·피해량·쿨타임은 이 응답의 항목이 아닙니다. |
| 표시 메타 | 선택 필터·열 설정·최솟값과 최댓값 | 잘못된 범위를 거부합니다. 막대의 범위를 신뢰도나 추천 점수로 사용하지 않습니다. |
실제 화면에서 확인한 6개 필터
입력 2가지, 지역 3가지, 전체 맵과 31개 맵, 전체 티어와 8개 등급 그룹을 확인했습니다. 그랜드마스터와 챔피언은 한 통합 그룹입니다. 관측한 필터에는 자유 역할·6대6·챔피언 단독·시즌 선택이 없습니다.
| 파라미터 | 공식 화면의 선택 값 |
|---|---|
role | 모든 역할 All · 공격 damage · 측면 공격가 flanker · 명사수 sharpshooter · 전문가 specialist · 수색가 recon · 지원 support · 의무관 medic · 전술가 tactician · 생존왕 survivor · 돌격 tank · 강건한 자 stalwart · 개시자 initiator · 투사 bruiser |
input | 마우스 및 키보드 PC · 컨트롤러 Console |
rq | 빠른 대전 - 역할 고정 0 · 경쟁전 - 역할 고정 1 |
tier | 모든 등급 단계 All · 브론즈 Bronze · 실버 Silver · 골드 Gold · 플래티넘 Platinum · 에메랄드 Emerald · 다이아몬드 Diamond · 마스터 Master · 그랜드마스터 및 챔피언 Grandmaster |
map | 모든 전장 all-maps · 남극 반도 antarctic-peninsula · 네팔 nepal · 리장 타워 lijiang-tower · 부산 busan · 사모아 samoa · 오아시스 oasis · 일리오스 ilios · 66번 국도 route-66 · 감시 기지: 지브롤터 watchpoint-gibraltar · 그림스뵈튼 grimsvotn · 도라도 dorado · 리알토 rialto · 샴발리 수도원 shambali-monastery · 서킷 로얄 circuit-royal · 쓰레기촌 junkertown · 하바나 havana · 뉴 정크 시티 new-junk-city · 수라바사 suravasa · 아틀리스 aatlis · 네온 교차로 neon-junction · 눔바니 numbani · 미드타운 midtown · 블리자드 월드 blizzard-world · 아이헨발데 eichenwalde · 왕의 길 kings-row · 파라이수 paraiso · 할리우드 hollywood · 뉴 퀸 스트리트 new-queen-street · 루나사피 runasapi · 이스페란사 esperanca · 콜로세오 colosseo |
region | 아메리카 Americas · 아시아 Asia · 유럽 Europe |
역할은 표시 필터입니다. FAQ와 직접 요청 대조에서 role=support 응답에도 54명의 세 역할 영웅이 모두 포함됨을 확인했습니다. 지원만 보는 표는 받은 행을 역할별로 구분합니다.
응답의 전체 필드
상위 객체는 rates와 columns입니다. 관측한 필드 34개를 정리했습니다. 필드명은 실제 응답의 대소문자를 따릅니다.
| 경로 | 형식 | 단위 | 의미와 범위 |
|---|---|---|---|
rates | object | — | 통계 행·표시 범위·선택 필터를 담는 객체 |
rates.rates | array<object> | — | 현재 요청의 영웅별 행. 현재 관측 응답은 54개이며 향후 목록 변경 가능 |
rates.rates[].id | string | — | 영웅 식별자. 예: doctrine, sombra, roadhog |
rates.rates[].cells | object | — | 표에 표시하는 이름과 통계 값 |
rates.rates[].cells.name | string | — | 요청 URL 언어의 영웅 표시 이름 |
rates.rates[].cells.winrate | number | percent 0–100 | 원본 사이트 표시 승률. 현재 응답은 미러 포함 기준·승패 시간 분모를 제공하지 않으므로 비미러/전체경기 승률로 재변환하지 않는다 실제관측결측표식-1은백분율값이아니므로0%로바꾸지않는다. |
rates.rates[].cells.pickrate | number | percent 0–100 | 영웅 사용시간 기반 선택 지표. 경기 수·승패 수·미러 수가 아니다. 현재 Gold/Route66 역할별 합계는 돌격 약100%, 공격 약200%, 지원 약200%; 이를 원시 경기 분모로 환산하지 않는다 실제관측결측표식-1은백분율값이아니므로0%로바꾸지않는다. |
rates.rates[].cells.banrate | number | percent 0–100 | 원본 금지율. 해당 응답은 금지 횟수와 분모를 제공하지 않는다. rq0 관측에서0은 실제 표시값이며 null로 바꾸지 않는다 실제관측결측표식-1은백분율값이아니므로0%로바꾸지않는다. |
rates.rates[].hero | object | — | 표시용 영웅 메타데이터. 기술·능력·피해량 데이터가 아니다 |
rates.rates[].hero.color | string | RGBA hexadecimal | UI 표시 색상. 관측값은8자리16진수 |
rates.rates[].hero.name | string | — | 표시용 영웅 이름 |
rates.rates[].hero.portrait | string | HTTPS image URL | 영웅 초상화 이미지 주소 |
rates.rates[].hero.subrole | string | — | 하위 역할 식별자. 현재 필터 옵션과 대응하는 의미의 태그 |
rates.rates[].hero.role | string enum TANK | DAMAGE | SUPPORT | — | 역할. 현재 Doctrine과Sombra는 SUPPORT로 관측 |
rates.rates[].hero.roleIcon | string | HTTPS SVG URL | 역할 표시 아이콘 주소 |
rates.extrema | object<category, object> | — | 진행 막대 등 표시용 최솟값/최댓값 메타. 표본 수·신뢰도·승리확률이 아니다 |
rates.extrema.<category> | object | — | all 및 역할/하위역할 키. 관측 응답의 범위가 여러 카테고리에 반복되므로 독립적인 역할별 분석 통계라고 단정하지 않는다 |
rates.extrema.<category>.winrate | object<{min:number,max:number}> | percent | 승률 표시값의 범위 메타 |
rates.extrema.<category>.pickrate | object<{min:number,max:number}> | percent | 픽률 표시값의 범위 메타 |
rates.extrema.<category>.banrate | object<{min:number,max:number}> | percent | 금지율 표시값의 범위 메타 |
rates.selected | object<string,string> | — | 응답에 적용된6개 필터 값. 허용되는 모든 값의 목록은 아니며 요청과 정확히 대조해야 한다 |
rates.selected.input | string | — | PC 또는Console 입력 방식 선택 값 |
rates.selected.map | string | — | all-maps 또는 맵 ID. grimsvotn이공식선택값이며OverFast/OWTics의다른slug를그대로넣지않는다 |
rates.selected.region | string | — | Americas, Asia 또는Europe 지역 선택 값 |
rates.selected.role | string | — | All 또는 역할/하위역할 표시 필터. FAQ는역할만행을숨기는필터라고설명하며실제support요청도54명·3역할을모두반환했다 |
rates.selected.rq | string | — | 현재 0=빠른 대전 역할 고정, 1=경쟁전 역할 고정. 2026-10-10 확인에서 과거 2는 0으로 되돌아가 현재 경쟁전 값으로 사용할 수 없습니다. 자유 역할 큐·6v6로 해석하지 않습니다. |
rates.selected.tier | string | — | 전체 또는8개 등급 그룹. Grandmaster는그랜드마스터+챔피언통합이며챔피언단독숫자로분리할수없다 |
columns | array<object> | — | 표시할열의설정. 관측순서:name,pickrate,winrate,banrate |
columns[].id | string | — | 행cells와연결되는열ID |
columns[].text | string | — | 열표시명 또는번역키. 관측응답은일부hero/pick_rate/win_rate키와한글금지율을반환 |
columns[].sortable | boolean | — | 표의정렬가능여부 |
columns[].sortDirection | string, optional | — | 기본정렬방향. 현재name열에서asc를관측 |
rates.extrema.<category>.<metric>.min | number | percent | 해당표시값의최솟값메타이며표본수아님 |
rates.extrema.<category>.<metric>.max | number | percent | 해당표시값의최댓값메타이며표본수아님 |
큐 숫자는 고정 계약이 아닙니다
10월 10일 새 관측에서 경쟁전 역할 고정의 값은 2로 돌아왔습니다. 이전 관측의 1을 항상 적용하지 않습니다. 수집마다 공식 화면의 의미를 읽고 6개 요청 조건의 응답을 대조하며, 그 관측 시각과 값을 통계의 queueContract에 보존합니다. 알 수 없는 값·의미 변경은 자료를 덮어쓰지 않고 보류합니다.
공식 자료로 교체할 수 있는 범위
2026년 10월 10일 공식 한국어 영웅 목록·로드호그 기술·특전 페이지, 통계 HTML·JSON, 공개 프로필 검색 응답·프로필 HTML과 패치 노트를 직접 읽어 재확인했습니다. 10월 8일 수입한 전체 영웅 설명은 당시 수집 시각을 유지합니다. 공식 웹의 내부 JSON과 HTML 수집을 정식 Battle.net 개발자 API 제품으로 표시하지 않습니다.
| 정보 | 확인한 공식 자료 | 반영과 제한 |
|---|---|---|
| 승률·픽률·밴률 | Blizzard 통계 웹 JSON | 공식 원본 사용. 맵×티어 직접 범위와 누락·수집 시각을 검증합니다. 외부 통계 사이트에 요청하지 않습니다. |
| 54명 영웅 목록·이름·역할·초상화 | 공식 영웅 목록 HTML와 공식 통계 metadata | 공식 목록과 현재 역할로 수입·검증합니다. 솜브라는 지원 영웅이며 로드호그·독트린의 현재 기술 설명을 유지합니다. |
| 기술·특전 이름과 설명 | 공식 개별 영웅 HTML | OverFast 영웅 미러 대신 공식 페이지를 직접 수입합니다. 설명에 없는 기술 계수나 생명력 숫자를 추정하지 않습니다. |
| 10개 하위 역할의 효과 설명 | 공식 개별 영웅 HTML의 하위 역할 설명 | 12개 기존 패시브 행의 설명을 공식 표현으로 교체합니다. 공식 설명에 없는 숫자·단위는 기존 원출처를 별도 기록하며 보존합니다. |
| 31개 맵 ID·이름 | 공식 통계 화면의 맵 선택 목록 | 카탈로그 출처를 공식으로 대조·교체합니다. 서브맵·지형 해석·실시간 경쟁전 맵 로테이션 정보는 이 목록이 제공하지 않습니다. |
| 배틀태그 검색·공개 누적 전적 | 공식 프로필 검색 내부 JSON와 공개 프로필 HTML | 서버 환경에서 익명 응답을 읽을 수 있지만, 공식 응답이 교차 출처 브라우저 호출을 허용하지 않습니다. GitHub Pages의 정적 웹에는 자체 중계 서버가 없어 현재 OverFast 중계를 유지합니다. 공식 프로필 직접 링크도 제공합니다. 최근 경기 목록으로 해석하지 않습니다. |
| 검색 응답 필드 | 공식 배틀태그 이름 검색 JSON 예시 | name, url, isPublic, lastUpdated, avatar, namecard, 다국어 title을 확인했습니다. 응답에 교차 출처 허용 헤더가 없어 브라우저 직접 호출 기능으로 표시하지 않습니다. |
| 공개 프로필 누적 지표 | 검색으로 연결되는 공개 프로필 HTML | 경쟁전 역할별 등급·디비전, 영웅별 플레이 시간·승리한 게임·승률, 명중률·목숨당 처치·최고 기록, 처치·죽음·결정타·단독 처치·임무 기여·피해·치유의 10분당 평균을 확인했습니다. 해당 프로필에 실제 공개된 항목만 읽을 수 있으며 최근 경기 목록·비공개 전적은 제공하지 않습니다. |
| 패치 내용 | 공식 패치 노트 HTML | 패치 날짜, 영웅 기술·특전·맵·모드 변경과 문서에 적힌 수치를 가져올 수 있습니다. 모든 영웅의 현재 수치를 완전하게 담은 JSON은 아닙니다. |
| 체력·기술 계수·상성·궁합·거점 지형 | 현재 통계 JSON·영웅 HTML에 없는 항목 | 기존 수치의 출처와 검토 상태, 전술 편집 자료를 별도로 보존합니다. 공식 API가 제공하거나 검증한 값으로 표시하지 않습니다. |
기술·특전 설명을 수집할 때 응답과 영웅 목록을 검증하고, 기존 영웅이 사라지거나 현재 역할과 충돌하면 갱신을 거부합니다. 실제 수입한 공식 영웅·맵 목록과 수집 시각 →
공개 전적 중계를 자체 서버로 바꿀 경우 허용 경로 제한, 짧은 캐시, 요청 제한과 공식 응답 검증이 필요합니다. 구현·배포하지 않은 중계를 현재 지원 기능으로 표시하지 않습니다.
원본이 제공하지 않는 정보
- 경기 표본 수, 승·패 횟수, 영웅 사용시간의 초 단위 원자료
- 미러전 비율·미러/비미러 사용시간·승패 시간 분수·별도 비미러 승률
- 실제 집계일·패치 ID·시즌 ID
- 개별 거점·공격/수비별 승률
- 아군 조합·상대 영웅별 조건부 승률, 개인 전적·최근 경기의 세부 기록
거점 지형·탱커의 복수 카운터·팀 연계는 기술 설명, 공식 맵 변경과 검토한 전술 문맥을 쓰는 별도 모델입니다. 이 계산과 계수를 API가 제공한다고 표시하지 않습니다.
픽률 보정과 미러전
픽률은 사용시간 지표입니다. 원시 경기 수가 없으므로 픽률만으로 미러전 비율이나 작은 비미러 분모를 역산할 수 없습니다. 현재 cells.winrate의 미러 포함 기준은 응답과 현행 FAQ에서 확정하지 못해 공식 표시값으로 보존했습니다.
Blizzard의 2022년 베타 분석은 맵 사용시간에 따른 승패 분수와, 한 팀만 해당 영웅을 쓰는 시간 구간의 비미러 계산을 설명합니다. 현재 응답 필드와 같은 지표라는 연결은 확인되지 않아 임의 적용하지 않습니다. 당시 공식 방법 설명 ↗
희귀 픽은 통계 점수의 신뢰 가중치와 허용 변화폭을 함께 줄입니다. 원본 100%를 새 실측 승률로 바꾸는 작업이 아닙니다. 계산식과 영웅 상세에 편집 규칙과 실제 적용값을 공개합니다.
누락값과 실제 0%
10월 8일에는 그랜드마스터·챔피언 라이프위버의 원본 -1 세 값을 공식 화면의 --와 대조했습니다. 10월 10일 초기 관측의 경쟁전 rq=1 4개 요청 범위에는 -1이 없었습니다. 과거 결측 관측을 현재 결측으로 표시하지 않습니다. 결측은 미확인으로 유지하며 실제 0%와 100%는 원래 숫자로 보존합니다. FAQ는 드문 선택·미러 상황·새 패치의 데이터 부족을 대시 표시의 가능한 이유로 설명합니다.
FAQ는 최신 패치 시작부터 집계하고 업데이트 반영에 하루까지 걸릴 수 있다고 설명합니다. 정확한 패치 ID·집계 시작시각이 없어 수집 시각과 원본 측정 시각을 구분합니다. 공식 통계와 FAQ ↗
OWTics와 숫자가 다를 때
2026년 10월 8일 실제 비교 화면은 한국·모든 티어·4시즌 미드시즌을 표시했습니다. Johap의 현재 수집 범위는 PC·아시아·역할 고정과 요청 티어입니다. 지역·기간·티어가 다른 두 값을 같은 표본으로 비교하지 않습니다.