경기별 팀 기록 (Match Record)
시간대별 세부 지표 접두어 규칙 (Prefix Guide)
본 명세서의 슈팅, 파울, 점유율 등 시간대별 수치 항목에 사용되는 접두어(Prefix)는 다음과 같습니다.
기본 (경기 전체)
B_ (전반전)
A_ (후반전)
EB_ (연장전반)
EA_ (연장후반)
GET
/api/matchRecord.do
경기에 참여한 양 팀의 상세 팀 스탯(슈팅, 골킥, 파울, 점유율 등)을 전/후반 및 연장별로 종합 제공합니다.
요청 파라미터 (Request Parameters)
| 파라미터명 | 타입(Size) | 필수여부 | 설명 |
|---|---|---|---|
| authKey | varchar |
Y | API 인증키 (Header 전송 권장) |
| meet_year | varchar(4) |
Y | 대회년도 (예: 2026) |
| meet_seq | varchar(2) |
Y | 대회순번 (예: 1) |
| game_id | varchar(3) |
Y | 경기번호 (예: 1) |
응답 필드 상세 (Response Fields)
| 필드명 | 데이터 타입 | 설명 및 비고 |
|---|---|---|
| [Common] 공통 응답 필드 (JSON Header) | ||
| meet_year | varchar(4) | 요청한 대회년도 |
| meet_seq | varchar(2) | 요청한 대회순번 |
| apiName | varchar(30) | 호출된 API 명칭 (matchRecord) |
| resultCode | varchar(3) |
결과 코드 (00: 성공, 그 외 에러는 API 개요 참조) |
| resultMsg | varchar(100) | 결과 메시지 ("success") |
| [Section 1] 경기 및 팀 마스터 정보 | ||
| MEET_YEAR / MEET_SEQ / GAME_ID | varchar(4) / numeric(2,0) / numeric(3,0) | 대회년도 / 대회순번 / 경기번호 |
| TEAM_ID / HOME_TYPE | varchar(3) / numeric(4,0) | 구단 코드 / Home 구분 (1:홈, 2:어웨이 / 공통코드:58) |
| WIN_TYPE | numeric(4,0) | 승패 구분 (1:승, 2:패, 3:무 / 공통코드:59) |
| GAME_DATE | varchar(10) | 경기일자 (YYYY/MM/DD) |
| MANAGER_ID / MANAGER_NAME | varchar(8) / varchar(20) | 감독 선수코드 / 감독명 |
| FORMATION | varchar(40) | 포메이션 (예: 4-4-2, 4-3-3 등 / 공통코드:147) |
| [Section 2] 득점, 실점 및 승점 기록 | ||
| GAIN_GOAL / LOSS_GOAL / GAP_GOAL | int | 총 득점 / 총 실점 / 득실차 |
| HALF_B_GOAL / HALF_A_GOAL | int | 전반전 득점 / 후반전 득점 |
| EXTEND_B_GOAL / EXTEND_A_GOAL / EXTEND_GOAL | int | 연장전반 득점 / 연장후반 득점 / 연장전 총 득점 |
| TK_POINT / SELF_GOAL | int | 승부차기 득점 / 자책골 수 |
| GAIN_POINT / GAIN_POINT_MINUS | float | 획득 승점 / 징계 차감 조정 승점 |
| [Section 3] 경기 세부 스탯 (전체 / 전반 B_ / 후반 A_ / 연장전반 EB_ / 연장후반 EA_) | ||
| GK_QTY / B_GK_QTY / A_GK_QTY / EB_GK_QTY / EA_GK_QTY | int | 골킥 시도 수 (전체 / 전반 / 후반 / 연장전반 / 연장후반) |
| ST_QTY / B_ST_QTY / A_ST_QTY / EB_ST_QTY / EA_ST_QTY | int | 슈팅 수 (전체 / 전반 / 후반 / 연장전반 / 연장후반) |
| VALID_ST_QTY / B_VALID_ST_QTY / A_VALID_ST_QTY / EB_VALID_ST_QTY / EA_VALID_ST_QTY | int | 유효슈팅 수 (전체 / 전반 / 후반 / 연장전반 / 연장후반) |
| CK_QTY / B_CK_QTY / A_CK_QTY / EB_CK_QTY / EA_CK_QTY | int | 코너킥 수 (전체 / 전반 / 후반 / 연장전반 / 연장후반) |
| FO_QTY / B_FO_QTY / A_FO_QTY / EB_FO_QTY / EA_FO_QTY | int | 파울 수 (전체 / 전반 / 후반 / 연장전반 / 연장후반) |
| FS_QTY / B_FS_QTY / A_FS_QTY / EB_FS_QTY / EA_FS_QTY | int | 피파울 수 (전체 / 전반 / 후반 / 연장전반 / 연장후반) |
| OS_QTY / B_OS_QTY / A_OS_QTY / EB_OS_QTY / EA_OS_QTY | int | 오프사이드 수 (전체 / 전반 / 후반 / 연장전반 / 연장후반) |
| AS_QTY / B_AS_QTY / A_AS_QTY / EB_AS_QTY / EA_AS_QTY | int | 도움 수 (전체 / 전반 / 후반 / 연장전반 / 연장후반) |
| PK_QTY / B_PK_QTY / A_PK_QTY / EB_PK_QTY / EA_PK_QTY | int | PK 시도 수 (전체 / 전반 / 후반 / 연장전반 / 연장후반) |
| PK_Y_QTY / PK_N_QTY | int | PK 득점 성공 수 / PK 실축 수 |
| [Section 4] 경고 및 퇴장 기록 | ||
| WARN_QTY / B_WARN_QTY / A_WARN_QTY / EB_WARN_QTY / EA_WARN_QTY | int | 경고 수 (전체 / 전반 / 후반 / 연장전반 / 연장후반) |
| EXIT_QTY / B_EXIT_QTY / A_EXIT_QTY / EB_EXIT_QTY / EA_EXIT_QTY | int | 퇴장 수 (전체 / 전반 / 후반 / 연장전반 / 연장후반) |
| [Section 5] 점유시간 및 점유율 지표 | ||
| TEAM_TIME / B_TEAM_TIME / A_TEAM_TIME / EB_TEAM_TIME / EA_TEAM_TIME | varchar(5) | 점유시간 표기 (전체 / 전반 / 후반 / 연장전반 / 연장후반 - MM:SS) |
| TEAM_SHARE / B_TEAM_SHARE / A_TEAM_SHARE / EB_TEAM_SHARE / EA_TEAM_SHARE | numeric(5,2) | 점유율 (전체 / 전반 / 후반 / 연장전반 / 연장후반 - %) |
| B_TEAM_TIME_TOINT / A_TEAM_TIME_TOINT / EB_TEAM_TIME_TOINT / EA_TEAM_TIME_TOINT | int | 점유시간 초 단위 환산 값 (전반 / 후반 / 연장전반 / 연장후반) |
| [Section 6] 공격 방향 및 데이터 비율 분석 | ||
| ATTACKDIRECTION / ATTACKDIRECTION_OVER | varchar(5) | 공격 방향 ('RIGHT' / 'LEFT') |
| GAINGOAL_PER_STQTY | numeric(14,3) | 슈팅 대비 득점율 (GAIN_GOAL / ST_QTY) |
| STVALIDQTY_PER_STQTY | numeric(14,3) | 슈팅 대비 유효슈팅율 (VALID_ST_QTY / ST_QTY) |
| CHANGE_QTY | int | 교체 선수 수 |
| FIRST_KICK_YN / FIRST_KICK_YN_OVER | varchar(1) | 선축 여부 (Y/N) |
| LEAGUE_ID / GUBUN_CODE / REC_SAVE / YR_SAVE | numeric(4,0) / char(1) | 유니폼/기록 유지 관련 내부 코드 |
JSON 응답 샘플 (Full Data)
{
"response": {
"meet_year": "2026",
"apiName": "matchRecord",
"resultCode": "00",
"meet_seq": "1",
"list": [
{
"MEET_YEAR": "2026",
"MEET_SEQ": 1,
"GAME_ID": 1,
"TEAM_ID": "K18",
"HOME_TYPE": 1,
"WIN_TYPE": 2,
"GAME_DATE": "2026/02/28",
"GAIN_GOAL": 1,
"LOSS_GOAL": 2,
"HALF_B_GOAL": 0,
"HALF_A_GOAL": 1,
"EXTEND_B_GOAL": 0,
"EXTEND_A_GOAL": 0,
"EXTEND_GOAL": 0,
"TK_POINT": 0,
"SELF_GOAL": 0,
"GAIN_POINT": 0.0,
"GAIN_POINT_MINUS": 0.0,
"FIRST_KICK_YN": "",
"MATCH_TYPE": 1,
"LEAGUE_ID": 0,
"GUBUN_CODE": 0,
"REC_SAVE": "0",
"YR_SAVE": "0",
"FIRST_KICK_YN_OVER": "",
"MANAGER_ID": "19970118",
"MANAGER_NAME": "윤정환",
"GK_QTY": 0,
"CK_QTY": 6,
"FO_QTY": 14,
"OS_QTY": 1,
"ST_QTY": 7,
"VALID_ST_QTY": 2,
"B_GK_QTY": 0,
"B_CK_QTY": 2,
"B_FO_QTY": 9,
"B_OS_QTY": 0,
"B_ST_QTY": 3,
"B_VALID_ST_QTY": 1,
"A_GK_QTY": 0,
"A_CK_QTY": 4,
"A_FO_QTY": 5,
"A_OS_QTY": 1,
"A_ST_QTY": 4,
"A_VALID_ST_QTY": 1,
"EB_GK_QTY": 0,
"EB_CK_QTY": 0,
"EB_FO_QTY": 0,
"EB_OS_QTY": 0,
"EB_ST_QTY": 0,
"EB_VALID_ST_QTY": 0,
"EA_GK_QTY": 0,
"EA_CK_QTY": 0,
"EA_FO_QTY": 0,
"EA_OS_QTY": 0,
"EA_ST_QTY": 0,
"EA_VALID_ST_QTY": 0,
"WARN_QTY": 0,
"EXIT_QTY": 0,
"B_WARN_QTY": 0,
"B_EXIT_QTY": 0,
"A_WARN_QTY": 0,
"A_EXIT_QTY": 0,
"EB_WARN_QTY": 0,
"EB_EXIT_QTY": 0,
"EA_WARN_QTY": 0,
"EA_EXIT_QTY": 0,
"AS_QTY": 0,
"PK_QTY": 1,
"B_AS_QTY": 0,
"B_PK_QTY": 0,
"A_AS_QTY": 0,
"A_PK_QTY": 1,
"EB_AS_QTY": 0,
"EB_PK_QTY": 0,
"EA_AS_QTY": 0,
"EA_PK_QTY": 0,
"TEAM_TIME": "28:54",
"B_TEAM_TIME": "11:31",
"A_TEAM_TIME": "17:22",
"EB_TEAM_TIME": "",
"EA_TEAM_TIME": "",
"TEAM_SHARE": 57.15,
"B_TEAM_SHARE": 48.72,
"A_TEAM_SHARE": 64.56,
"EB_TEAM_SHARE": 0.00,
"EA_TEAM_SHARE": 0.00,
"ATTACKDIRECTION": "RIGHT",
"ATTACKDIRECTION_OVER": "",
"FORMATION": "4-4-2",
"PK_Y_QTY": 1,
"PK_N_QTY": 0,
"FS_QTY": 18,
"B_FS_QTY": 10,
"A_FS_QTY": 8,
"EB_FS_QTY": 0,
"EA_FS_QTY": 0,
"B_TEAM_TIME_TOINT": 691,
"A_TEAM_TIME_TOINT": 1042,
"EB_TEAM_TIME_TOINT": 0,
"EA_TEAM_TIME_TOINT": 0,
"GAINGOAL_PER_STQTY": 0.143,
"STVALIDQTY_PER_STQTY": 0.286,
"CHANGE_QTY": 5,
"GAP_GOAL": -1
},
{
"MEET_YEAR": "2026",
"MEET_SEQ": 1,
"GAME_ID": 1,
"TEAM_ID": "K09",
"HOME_TYPE": 2,
"WIN_TYPE": 1,
"GAME_DATE": "2026/02/28",
"GAIN_GOAL": 2,
"LOSS_GOAL": 1,
"HALF_B_GOAL": 0,
"HALF_A_GOAL": 2,
"EXTEND_B_GOAL": 0,
"EXTEND_A_GOAL": 0,
"EXTEND_GOAL": 0,
"TK_POINT": 0,
"SELF_GOAL": 0,
"GAIN_POINT": 3.0,
"GAIN_POINT_MINUS": 0.0,
"FIRST_KICK_YN": "Y",
"MATCH_TYPE": 1,
"LEAGUE_ID": 0,
"GUBUN_CODE": 0,
"REC_SAVE": "0",
"YR_SAVE": "0",
"FIRST_KICK_YN_OVER": "",
"MANAGER_ID": "19970114",
"MANAGER_NAME": "김기동",
"GK_QTY": 0,
"CK_QTY": 3,
"FO_QTY": 18,
"OS_QTY": 0,
"ST_QTY": 10,
"VALID_ST_QTY": 8,
"B_GK_QTY": 0,
"B_CK_QTY": 3,
"B_FO_QTY": 10,
"B_OS_QTY": 0,
"B_ST_QTY": 5,
"B_VALID_ST_QTY": 4,
"A_GK_QTY": 0,
"A_CK_QTY": 0,
"A_FO_QTY": 8,
"A_OS_QTY": 0,
"A_ST_QTY": 5,
"A_VALID_ST_QTY": 4,
"EB_GK_QTY": 0,
"EB_CK_QTY": 0,
"EB_FO_QTY": 0,
"EB_OS_QTY": 0,
"EB_ST_QTY": 0,
"EB_VALID_ST_QTY": 0,
"EA_GK_QTY": 0,
"EA_CK_QTY": 0,
"EA_FO_QTY": 0,
"EA_OS_QTY": 0,
"EA_ST_QTY": 0,
"EA_VALID_ST_QTY": 0,
"WARN_QTY": 5,
"EXIT_QTY": 0,
"B_WARN_QTY": 2,
"B_EXIT_QTY": 0,
"A_WARN_QTY": 3,
"A_EXIT_QTY": 0,
"EB_WARN_QTY": 0,
"EB_EXIT_QTY": 0,
"EA_WARN_QTY": 0,
"EA_EXIT_QTY": 0,
"AS_QTY": 1,
"PK_QTY": 0,
"B_AS_QTY": 0,
"B_PK_QTY": 0,
"A_AS_QTY": 1,
"A_PK_QTY": 0,
"EB_AS_QTY": 0,
"EB_PK_QTY": 0,
"EA_AS_QTY": 0,
"EA_PK_QTY": 0,
"TEAM_TIME": "21:40",
"B_TEAM_TIME": "12:08",
"A_TEAM_TIME": "09:32",
"EB_TEAM_TIME": "",
"EA_TEAM_TIME": "",
"TEAM_SHARE": 42.85,
"B_TEAM_SHARE": 51.28,
"A_TEAM_SHARE": 35.44,
"EB_TEAM_SHARE": 0.00,
"EA_TEAM_SHARE": 0.00,
"ATTACKDIRECTION": "LEFT",
"ATTACKDIRECTION_OVER": "",
"FORMATION": "4-4-2",
"PK_Y_QTY": 0,
"PK_N_QTY": 0,
"FS_QTY": 14,
"B_FS_QTY": 9,
"A_FS_QTY": 5,
"EB_FS_QTY": 0,
"EA_FS_QTY": 0,
"B_TEAM_TIME_TOINT": 728,
"A_TEAM_TIME_TOINT": 572,
"EB_TEAM_TIME_TOINT": 0,
"EA_TEAM_TIME_TOINT": 0,
"GAINGOAL_PER_STQTY": 0.200,
"STVALIDQTY_PER_STQTY": 0.800,
"CHANGE_QTY": 5,
"GAP_GOAL": 1
}
],
"resultMsg": "success"
}
}
호출 샘플 소스 (Sample Code)
Auth: Header or QueryString
인증 로드맵: 현재
authKey 기반 인증을 지원하며, 2027년부터 표준 Bearer Token 인증 체계로 통합 확장될 예정입니다.
OkHttpClient client = new OkHttpClient();
// [방법 1] Query String 방식
String url1 = "https://api.kleague.com/api/matchRecord.do?authKey=YOUR_API_KEY&meet_year=2026&meet_seq=1&game_id=1";
Request request1 = new Request.Builder().url(url1).get().build();
// [방법 2] Header 방식 (현재 권장)
String url2 = "https://api.kleague.com/api/matchRecord.do?meet_year=2026&meet_seq=1&game_id=1";
Request request2 = new Request.Builder()
.url(url2)
.addHeader("authKey", "YOUR_API_KEY")
.build();
// [방법 3] Bearer Token 방식 (2027년 지원 예정)
Request request3 = new Request.Builder()
.url(url2)
.addHeader("Authorization", "Bearer YOUR_ACCESS_TOKEN")
.build();
import requests
url = "https://api.kleague.com/api/matchRecord.do"
params = {
"meet_year": "2026",
"meet_seq": "1",
"game_id": "1"
}
# [방법 1] Query String 방식
response1 = requests.get(url, params={**params, "authKey": "YOUR_API_KEY"})
# [방법 2] Header 인증 방식 (현재 추천)
headers2 = { "authKey": "YOUR_API_KEY" }
response2 = requests.get(url, headers=headers2, params=params)
# [방법 3] Bearer Token 방식 (2027년 도입 예정)
# headers3 = { "Authorization": "Bearer YOUR_ACCESS_TOKEN" }
# response3 = requests.get(url, headers=headers3, params=params)
const url = 'https://api.kleague.com/api/matchRecord.do';
const params = { meet_year: '2026', meet_seq: '1', game_id: '1' };
// [방법 1] Query String 방식
axios.get(url, { params: { ...params, authKey: 'YOUR_API_KEY' } });
// [방법 2] Header 방식 (현재 권장)
axios.get(url, {
params: params,
headers: { 'authKey': 'YOUR_API_KEY' }
});
// [방법 3] Bearer 방식 (2027년 로드맵 대비)
// axios.get(url, { params: params, headers: { 'Authorization': 'Bearer YOUR_TOKEN' } });