2.7 KiB
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·suspendedGET /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콜/분(캐시 상한)