o2o-triple-pick/docs/DATA_SOURCES.md

2.7 KiB

야구(KBO/MLB) 데이터 소스 카탈로그 (실검증: 2026-07-21)

소스 총평

소스 상태 요약
네이버 스포츠 API (비공식) KBO 주력 일정·결과·순위·프리뷰·박스스코어·문자중계(투구 단위)까지 전부. 키 불필요, UA 헤더만
MLB 공식 Stats API MLB 주력 statsapi.mlb.com — 키 불필요·공식. 일정·결과·순위·예고선발·투구 단위 라이브 피드
TheSportsDB ⚠️ 유료 전용 무료 키 123은 next/past 조회당 1경기만(전 리그 공통). 유료 ~$10/월
API-Sports 야구 미사용 KBO=league 5 존재하나 무료는 2022~24 시즌만

네이버 (api-gw.sports.naver.com) — KBO

  • 인증 없음, User-Agent 필수. gameId = {yyyymmdd}{원정}{홈}0{연도}
  • 팀코드: HT(KIA) LG OB(두산) SS(삼성) LT(롯데) SK(SSG) KT NC WO(키움) HH(한화)
  • GET /schedule/games?...&categoryId=kbo&fromDate=&toDate= — 일정·스코어·statusInfo("N회초/말")·cancel·suspended
  • GET /schedule/games/{id}/preview — 예고 선발투수(구종·상대전적)·핫콜드존·시즌 상대전적·순위
  • GET /schedule/games/{id}/record — R/H/E/B·이닝별·타자/투수 박스스코어·교체·홈런일지
  • GET /schedule/games/{id}/relay?inning=N — currentGameState(투수/타자/볼카운트/주자)·라인업(seqno=교체)·투구단위 텍스트
  • GET /stats/categories/kbo/seasons/{year}/teams — 순위·승률·최근5·팀 공격/수비 풀스탯
  • 리스크: 비공식(약관·차단). 로컬/데모용 — 상용 전환 시 정식 소스 교체

MLB 공식 (statsapi.mlb.com) — MLB

  • GET /api/v1/schedule?sportId=1&startDate=&endDate= (+&hydrate=probablePitcher)
  • GET /api/v1/standings?leagueId=103|104&season= — AL/NL 지구 순위
  • GET /api/v1.1/game/{gamePk}/feed/live — linescore(B/S/O·주자)·offense(batter/onDeck/inHole/pitcher)·boxscore(타순·포지션)·plays(투구 단위)
  • 팀 로고: https://www.mlbstatic.com/team-logos/{teamId}.svg (공식 CDN)
  • 한글 팀명은 자체 매핑(teams_baseball.py), 선수명은 영문

구현 위치 (backend/app)

  • teams_baseball.py — KBO 10 + MLB 30 (한글·statsapi id·로고)
  • services/baseball_fetch.py — 일정·결과 수집 (리그별 어댑터)
  • services/baseball_sync.py — (리그, KST날짜, 팀쌍) 키 동기화 · 우천취소 제거
  • services/baseball_details.py — 프리뷰·순위 캐시(DataCache) + 라이브 필드 뷰 프록시(15s TTL)
  • services/baseball_data.py — AI 프롬프트 데이터 블록 (자체 DB 폼 + 캐시)
  • 호출량: 동기화 하루 2회 + 정산 5분 폴링 + 라이브는 경기당 최대 4콜/분(캐시 상한)