Skip to content

API仕様

netkeiba.com 利用API

本ツールが使用するnetkeiba.comのエンドポイント一覧。

1. レーススケジュール

項目
URLhttps://race.netkeiba.com/top/race_list_sub.html?kaisai_date={YYYYMMDD}
メソッドGET
レスポンスHTML
パーサーBeautifulSoup (lxml)

パース対象要素:

  • li.RaceList_DataItem - 各レースのリスト項目
  • a[href*="race_id="] - レースIDを含むリンク
  • .RaceList_Itemtime - 発走時刻
  • .RaceList_ItemTitle - レース名

2. 単勝オッズ

項目
URLhttps://race.netkeiba.com/api/api_get_jra_odds.html?race_id={ID}&type=1&action=update
メソッドGET
レスポンスJSON (またはJSONP)
パーサーjson.loads

パラメータ:

パラメータ説明
race_idレースID (12桁)例: 202609010711
typeオッズ種別1 = 単勝
actionアクションupdate

レスポンス構造:

json
{
  "status": "result",
  "data": {
    "odds": {
      "1": {
        "01": ["3.5", "", "2"],
        "02": ["12.8", "", "5"]
      }
    }
  }
}

配列の意味: [単勝オッズ, (未使用), 人気順位]

3. 出馬表

項目
URLhttps://race.netkeiba.com/race/shutuba.html?race_id={ID}
メソッドGET
レスポンスHTML (EUC-JP)
パーサーBeautifulSoup (lxml)

パース対象要素:

  • table.Shutuba_Table - 出馬表テーブル
  • td.Umaban - 馬番
  • span.HorseName a - 馬名
  • td.Jockey a - 騎手名

設定パラメータ (.env)

変数名デフォルト説明
SLACK_WEBHOOK_URLstring(空)Slack Webhook URL
POLL_INTERVALint60ポーリング間隔 (秒)
POLL_INTERVAL_NEAR_POSTint30発走前ポーリング間隔 (秒)
ALERT_THRESHOLD_PCTfloat20.0Slack通知閾値 (%)
DISPLAY_THRESHOLD_PCTfloat5.0ターミナル表示閾値 (%)
SLACK_COOLDOWN_MINUTESint5通知クールダウン (分)
TARGET_DATEstring(当日)対象日 (YYYYMMDD)
TARGET_RACE_IDSstring(全レース)対象レースID (カンマ区切り)
REQUEST_TIMEOUTint15HTTPタイムアウト (秒)
REQUEST_DELAYfloat1.0リクエスト間隔 (秒)
DB_PATHstringdata/odds.dbSQLiteパス

CLIオプション

bash
python main.py [OPTIONS]
オプション説明
--date YYYYMMDD対象日指定--date 20260315
--race-id ID [ID...]特定レースのみ--race-id 202609010711
--interval Nポーリング間隔 (秒)--interval 30
--no-slackSlack通知無効--no-slack
--test-slackテスト通知送信--test-slack

HorseRacingDataChecker Design Document