netkeibaから競馬データを自動で集めたい。でも「スクレイピングは規約違反なのか」「どこまでやると制限されるのか」「2024年11月の対策強化で何が変わったのか」——こうした疑問に直面して手が止まる方は多いはずです。本記事では、netkeibaのスクレイピングに関する規約・制限の仕組みを徹底的に整理した上で、技術的な注意点、実際に起きるエラーとその対処、そして業務・研究で破綻しない代替手段まで、網羅的に解説します。
netkeibaのスクレイピングは、利用規約・運用の両面で高リスクです。特にデータベース領域(/db/配下)への自動アクセスは、通信制限(IP制限等)につながりやすく、継続運用には向きません。2024年11月以降はクローラー対策が強化され、User-Agent未設定ではHTTP 400エラーが返るようになっています。競馬データを継続的に扱うなら、JRA-VAN等の正規データ提供サービスの活用が現実的な選択肢です。
本記事は一般的な技術・法務観点の整理であり、個別案件の適法性や契約解釈の最終判断ではありません。商用利用・大規模収集・再配布が絡む場合は、必ず利用規約の原文確認と、必要に応じて弁護士への相談を行ってください。
netkeibaのヘルプ(FAQ)には、「データベースの閲覧ができない・通信制限がかかった(スクレイビングについて)」という案内が存在します。この中で、利用規約の禁止事項(第17条の特定項目)に触れうる行為としてスクレイピングに直接言及しており、運営側が検知・制限の対象として明確に扱っています。
「スクレイピングはご自身の責任で、上記利用規約に抵触しないかを確認をお願いいたします。」(netkeibaヘルプ)
netkeibaスクレイピングは規約違反?制限の仕組みと競馬データ取得の現実的な方法
結論
netkeibaのスクレイピングは規約違反なのか
公式が示す見解
つまり、単に”技術的に可能”という話ではなく、運営側が運用上の制限対象として扱う前提がある、ということです。「少量なら大丈夫」「個人利用だから問題ない」といった解釈は、規約上は根拠がありません。
利用規約第17条の該当箇所
netkeibaの利用規約では、以下の行為が禁止事項として挙げられています。スクレイピングはこれらに抵触する可能性があります。
- サーバーに過度の負荷をかける行為
- 自動化されたプログラムによるアクセス
- データの無断複製・再配布
- サービスの正常な運営を妨害する行為
規約違反と法的リスクの関係
「規約違反=直ちに刑事罰」とは限りません。しかし、規約違反があると、以下のような実務上のリスクが現実化します。
- アカウント停止:プレミアム会員の場合、課金中でもアクセス遮断される可能性
- IP単位のアクセスブロック:同一IPからの全アクセスが制限対象に
- 損害賠償請求:大規模収集やサーバー負荷が発生した場合の民事リスク
- 不正アクセス禁止法:アクセス制御の回避(認証突破等)を伴う場合は刑事リスクにも発展
実務上の判断基準:個人学習の少量取得でも、再現可能なパイプラインとして組むと「自動化」「大量アクセス」になりやすく、運営側の検知・制限に触れます。研究や業務で長期運用したいなら、最初から”許諾ベース”に寄せる方が結果的に早いです。
通信制限の仕組み——何がどう検知されるのか
netkeibaのボット検知シグナル
多くのWebサービスと同様に、netkeibaも単純な「秒間リクエスト数」だけでなく、複数のシグナルを組み合わせてボット判定を行っています。確認されている検知シグナルは以下の通りです。
- 同一IPからの短時間の大量アクセス:1時間あたりのリクエスト数が一定閾値を超えると制限
- User-Agentの異常:未設定、または一般的なブラウザと一致しないUA
- リファラの欠落:直接URLを叩いているパターン
- アクセスパターンの不自然さ:人間がブラウザで閲覧する場合のランダム性がない、機械的な等間隔アクセス
- Cookie/JavaScriptの不整合:ブラウザ前提の挙動が欠落している場合
netkeibaで通信制限がかかった場合、以下のような挙動が報告されています。
プロキシローテーションやUA偽装などの「検知回避」を前提に設計すると、規約上の説明がさらにつきにくくなり、紛争リスクが高まります。仮に短期的に取得できても、長期運用ではほぼ確実に破綻します。
2024年11月初旬、netkeibaでクローラー対策が大幅に強化されました。それまで動作していたスクレイピングコードが軒並み動かなくなり、多くの個人ブログや技術記事で対応方法が議論されています。確認されている主な変更は以下の通りです。
動的ページとは:HTMLソース上にデータが存在せず、JavaScriptが実行されて初めてデータが表示されるページのこと。requestsライブラリではJavaScriptを実行できないため、SeleniumやPlaywrightなどのブラウザ自動化ツールが必要になります。静的・動的の判別方法は、ブラウザの「JavaScript無効化」で確認できます。
2024年11月以降、最も多く報告されているエラーです。原因はUser-Agentヘッダーの未設定です。
requestsライブラリのデフォルトUser-Agentは
アクセスが明示的に拒否されている状態です。主な原因は以下の通りです。
レート制限に達した場合に返されるステータスコードです。短時間に大量のリクエストを送信した場合に発生します。
HTTPステータスは200(成功)だが、取得したHTMLにデータが含まれていないケースです。これは動的レンダリングページにrequestsでアクセスした場合に起こります。JavaScriptが実行されないため、データ部分が空のHTMLが返されます。この場合はSeleniumやPlaywrightなどを使う必要があります。
以下は技術的な解説です。これらの手法を実行する場合、netkeibaの利用規約に抵触する可能性があります。実行はご自身の責任で判断してください。
スクレイピングにおけるリクエスト間隔は、サーバーへの負荷とブロック回避の両面で重要です。一般的なガイドラインとして、以下の考え方があります。
netkeibaの通信制限は1時間単位で判定されているとの検証報告があり、短時間に集中させるより、長時間にわたって低頻度でアクセスする方が制限を受けにくいとされています。ただし、具体的な閾値は公開されていません。
netkeibaのページは、静的にHTMLが生成されるものと、JavaScriptで動的にデータが描画されるものが混在しています。どちらかによって、使用するツール(requests vs Selenium)が変わります。
判別方法:ブラウザの開発者ツールで「JavaScriptを無効化」した状態でページを読み込み、データが表示されるかどうかを確認します。データが消える場合は動的ページです。Chrome拡張「JavaScript Switcher」を使うと手軽に切り替えできます。
netkeibaの
netkeibaのスクレイピングが抱える根本的な問題は、「仕様変更で突然動かなくなる」「制限で途中からデータが取れなくなる」という不安定さです。機械学習のトレーニングデータとして使う場合、データの一貫性・再現性は最重要であり、途中でデータソースが遮断されると、学習データ全体の信頼性が崩れます。
JRA-VANは、JRA(日本中央競馬会)の公式データを提供するサービスです。Data Lab.では、1986年以降の全レース結果、血統情報、馬体重、調教データなど、netkeibaで取得できるデータの大半を、正規ルートで安定的に取得できます。
JRAのWebサイトは二次利用について注意喚起があり、「私的使用」や「引用」の範囲を超えた複製・転載等は著作権法等に違反し得る旨が示されています。用途が公開・配布・商用に近づくほど、正規の提供形態や契約ベースの手段へ寄せる必要があります。
現実的な推奨:継続的にデータを回すなら、最初から「正規提供(契約)」を前提に設計し、スクレイピングは”最後の手段”に留めるのが堅実です。途中で遮断されると、学習データの再現性も運用コストも崩れます。
日本の著作権法では、「選択又は体系的な構成によって創作性を有するデータベース」は著作物として保護されます。netkeibaのデータベースは、レース結果・馬情報・血統を独自の体系で整理・構成しているため、データベースの著作物として保護される可能性があります。
ただし、個々のデータ(着順、タイムなど)そのものは事実情報であり、著作権の対象外です。問題になるのは、データの「選択・配列」を丸ごと複製するような利用態様です。
通信制限がかかるとどうなるか
2024年11月の対策強化——何が変わったのか
主な変更点
影響を受けるデータ取得パターン
データ種別
ページ種別
取得方法
変更前
変更後
レース結果
静的
requests + BS4
UA不要で取得可
UA必須(400エラー)
出馬表
動的
Selenium
requests可
Selenium必須の場合あり
オッズ
動的
Selenium
一部requests可
Selenium推奨
馬柱・血統
静的
requests + BS4
UA不要で取得可
UA必須(400エラー)
払い戻し
静的
requests + BS4
UA不要で取得可
UA必須(400エラー)
よくあるエラーと原因
HTTP 400 Bad Request
python-requests/x.x.xとなるため、netkeibaのサーバー側でボットと判定されます。一般的なブラウザのUser-Agentを設定することで回避できますが、これは「ボットであることを隠す行為」であり、規約上のリスクをさらに高める点に注意が必要です。
HTTP 403 Forbidden
HTTP 429 Too Many Requests
データが空で返ってくる
スクレイピング時の技術的な注意点
リクエスト間隔(sleep)の設定
静的ページと動的ページの見分け方
robots.txtの確認
robots.txt(https://db.netkeiba.com/robots.txt など)では、特定のパスへのクローラーアクセスが制限されている場合があります。robots.txt自体にはアクセスを制御する法的拘束力はありませんが、「無視してアクセスした」という事実は、紛争時に不利に働く可能性があります。
取得できる主なデータの種類
データ種別
URL例
含まれる情報
レース結果
/race/result/{race_id}/
着順、馬名、騎手、タイム、人気、オッズ等
出馬表
/race/shutuba/{race_id}/
馬番、馬名、騎手、斤量、調教師、前走成績等
馬の過去成績
/horse/{horse_id}/
過去の全レース成績、獲得賞金等
血統
/horse/ped/{horse_id}/
父・母・祖先の血統情報
払い戻し
/race/pay/{race_id}/
単勝・複勝・馬連・三連複等の払い戻し金額
オッズ
/odds/{type}/{race_id}/
各券種のオッズ(動的ページが多い)
競馬データ入手の現実的な代替手段
なぜ代替手段を検討すべきか
代表的な取得ルート比較
手段
合法性・規約
データの安定性
コスト
向く用途
netkeibaをスクレイピング
規約・運用上リスク高
低い(仕様変更・遮断リスク)
無料(技術コストは発生)
個人の短期検証(非推奨)
JRA-VAN Data Lab.
契約に基づく正規利用
高い
月額550円〜
本格的な分析・AI開発
JRA公式サイト
私的使用・引用の範囲で参照
中
無料
目視確認、引用を伴う解説
地方競馬情報(NAR)
利用条件に準拠
中
無料〜有料
地方競馬のデータ分析
データ提供元への個別許諾
条件を明文化できる
高い(契約次第)
交渉次第
商用、再配布、長期運用
JRA-VAN Data Lab.とは
法務で押さえる論点
著作権とデータベース保護
不正競争防止法:限定提供データ
2019年の改正不正競争防止法により、「限定提供データ」制度が導入されました。要件を満たすデータを不正に取得・使用・提供する行為は不正競争となり得ます。netkeibaのプレミアム会員向けデータ(ログイン必須のデータ)は、この「限定提供データ」に該当する可能性があります。
具体的には、以下の3要件を全て満たすデータが「限定提供データ」に該当します。
- 限定提供性:業として特定の者に提供する情報(会員限定データなど)
- 相当量蓄積性:電磁的方法で相当量蓄積されている情報
- 電磁的管理性:ID/パスワード等で管理されている情報
不正アクセス禁止法
通常のWebスクレイピング(公開ページへのHTTPリクエスト)は、不正アクセス禁止法の対象外です。しかし、以下の行為は抵触する可能性があります。
- 他人のアカウントを使ったアクセス
- 認証メカニズムを技術的に回避するアクセス
- アクセス制御機能を回避する行為
「robots.txtで禁止されている=違法」「robots.txtに書いてない=自由」という単純図式ではありません。規約(契約)・技術的制限・取得手段・利用態様(再配布や商用利用)を分けて判断してください。
よくある質問
少量なら問題ない?
少量でも規約上NGになり得る点は変わりません。また、技術的には少量でも「機械的なアクセス」は検知されることがあります。とはいえ、数ページを手動で閲覧してデータを書き写す行為まで禁止されているわけではありません。問題になるのは「自動化」の度合いです。再現可能な収集パイプラインとして組む場合は、早めに正規ルートへ切り替えることを推奨します。
Seleniumやブラウザ自動化なら大丈夫?
ヘッドレスブラウザで人間の閲覧に似せても、「自動化」である限り規約・運用上のリスクは変わりません。むしろ、Seleniumはrequestsより1リクエストあたりの時間が長い(ブラウザ起動・レンダリングのオーバーヘッド)ため、大量データ取得には効率が悪い面もあります。また、対策回避に近い設計は、紛争時の説明がさらに難しくなります。
スプレッドシートに直接取り込める?
GoogleスプレッドシートのIMPORTHTML関数やIMPORTXML関数を使えば、コードを書かずにWebページのテーブルデータを取り込めます。ただし、netkeibaの一部ページは動的レンダリングのため、これらの関数では取得できない場合があります。また、定期的に自動取得を行うと、サーバー側からIPブロックされるリスクがあります。
APIが無いならどうする?
netkeibaは公式APIを提供していません。現実的な選択肢は以下の3つです。
- 正規データ提供を利用する:JRA-VAN Data Lab.など、契約に基づくサービスを使う
- 許諾を取る:netkeiba運営元に直接連絡し、データ利用の許諾を得る
- 用途を限定する:「引用・私的使用」の範囲で、手作業中心にデータを収集する
「技術的に取れるから取る」は、長期運用ではほぼ破綻します。
過去のコードが動かなくなった(「できなくなった」)
2024年11月のクローラー対策強化により、User-Agent未設定のリクエストはHTTP 400エラーが返るようになりました。まずはUser-Agentの設定を確認してください。それでも動かない場合、対象ページが動的レンダリングに変わっている可能性があります。ブラウザの開発者ツールでJavaScriptを無効にして、データが表示されるか確認してください。
sleepは何秒に設定すべき?
「何秒なら安全」という明確な基準はありません。ただし、一般的なガイドラインとして、最低1秒以上のインターバルを設け、ランダムな揺らぎ(1〜3秒程度)を加えることが推奨されます。大量データの取得では、1時間あたりのリクエスト数に自主的な上限を設けることが重要です。
収集設計を見直しませんか?
規約リスクを避けつつ競馬データを継続運用するには、取得経路とデータ設計の整合が重要です。要件整理から許諾・代替ルートの検討まで支援します。
まとめ
- netkeibaはスクレイピングに関連して通信制限が起きる旨を公式に案内しており、規約・運用上のリスクが高い
- 2024年11月のクローラー対策強化により、User-Agent未設定ではHTTP 400エラーが返るようになった
- ボット対策は複数シグナル(IP、UA、アクセスパターン等)で行われ、回避前提の設計は長期運用で破綻しやすい
- 通信制限はIPベースで、24時間程度で自動解除されるが、繰り返すと永続的なブロックの可能性もある
- 継続的な競馬データ活用は、JRA-VAN Data Lab.等の正規サービスや許諾ベースの入手が現実解
- 公開・商用・再配布が絡むほど、著作権・契約・不競法(限定提供データ)などの論点整理が重要