Tony Wang7 分で読めますStravaを2026年にスクレイピングする方法(APIとPython)
Stravaは公式のOAuth APIを提供していますが、利用規約でスクレイピングを明確に禁止しています。公開されている情報(ルート、クラブ、チャレンジ)と、その取得方法を解説します。
Stravaは、こっそりルールの隙間を縫ってスクレイピングできるようなプラットフォームではありません。developers.strava.comで文書化されたOAuth 2.0 APIを公式に提供している一方、利用規約はウェブサイト自体に対する「screen scraping」や「crawlers」を別途明確に禁止しています。2026年半ば、非公開のIPO申請を控える中でStravaは両面をさらに厳格化しました — 定額の開発者料金を導入し、複数のAPIエンドポイントを廃止し、これまで誰でも見えていたデータをログインの背後に置いたのです。このガイドでは、公式APIの実際の範囲と制限、なぜここで自作スクレイピングが得策ではないのか、そして構造化APIがどのように公開のルート・クラブ・チャレンジデータを返せるのか — 特定のアスリートの非公開の活動データや位置情報履歴は決して含まれません — を扱います。
なぜStravaのデータをスクレイピングするのか?
- ルートとトレイルのリサーチ — フィットネスアプリ、ガイドブック、アウトドア用品サイトのために、特定地域で最も人気のあるハイキング・ランニング・サイクリングルートを洗い出す。
- クラブとコミュニティの分析 — ラン/ライドクラブの発見やスポンサーシップリサーチのために、クラブの規模・成長・所在地を追跡する。
- チャレンジとイベントの追跡 — 季節ごとのフィットネスマーケティングのトレンドを把握するために、Stravaの現在の公開チャレンジギャラリーを監視する。
- フィットネスアプリの市場調査 — 特定のスポーツや地域で、競合アプリやクラブがどのように見えているかをベンチマークする。
- AI/LLMパイプライン — 「Xの近くのベストなハイキングトレイル」のようなクエリに答えるエージェントに、公開のルートおよびクラブのサマリーを供給する。
Stravaのスクレイピングは合法ですか?
選択肢1:Strava公式API(とその制限)
公式のStrava API v3はOAuth 2.0ベースです。あなたのアプリはアスリートをStravaの同意画面へリダイレクトし、Stravaはそのアスリートに限定されたトークンを発行します。セグメントとルートのデータは、以前は認証済みのアプリであれば誰でも閲覧できましたが、Stravaは着実にその範囲を狭めてきました。
- アスリート単位のスコープ。 特定のアスリートのOAuth許可がなければ、自分自身のデータしか取得できません(テストには便利です)。他のユーザーのデータを取得するには、その一人ひとりが個別にあなたのアプリを認可する必要があります。
- レート制限。 新規アプリは「single-player mode」で開始し、おおよそ15分あたり200リクエスト、1日あたり2,000リクエストです。接続アスリート数が10を超えて拡大するにはアプリレビューが必要で、通過後は15分あたり約400、1日あたり約4,000まで上限が引き上げられます。
- 2026年の廃止予定。 公式のチェンジログによれば、Club Activities、Club Members、Club Adminsの各エンドポイントは2026年9月1日に削除され、Explore Segmentsエンドポイントも同日、承認制の「Extended Access Tier」に制限されます。新しいAPIベースURL(
api-v3.strava.com)が2027年1月4日から旧URLを置き換えます。 - 新しい開発者料金。 2026年6月の一連の変更の一環として、Stravaは以前無料だった段階的プログラムに代えて、API利用に定額の月額料金(報道によれば月額約11.99ドル)を導入しました。
- AI学習禁止、一括エクスポート禁止、他ユーザーデータの再表示禁止。 これらの制限は2024年後半にAPI Agreementに追加され、現在も有効です。
ユースケースが「アスリート自身のStravaアカウントを自分のアプリに接続させる」というものであれば、公式APIが正しく、唯一許可されたツールです。プラットフォーム全体のルート・クラブ・アスリートに関する汎用的なデータセットを構築するようには設計されていません。
選択肢2:Pythonで自作する(そしてなぜ破綻するのか)
requestsやヘッドレスブラウザをStravaの公開ページに向けること自体を止めるものは何もありません — しかしStrava自身の利用規約はまさにそれを禁止しており、robots.txtも既知のAIクローラーを全面的にブロックしています(GPTBot、Google-Extended、ClaudeBot、Meta-ExternalAgentはいずれもサイト全体で禁止されています)。法的リスクに加えて次の点もあります。
- ログインウォール。 2026年6月の変更以降、クラブ一覧を含め、以前は誰にでも表示されていたデータがログイン済みセッションを必要とするようになり、未認証のスクレイパーが見られる範囲は以前よりもはるかに狭くなりました。
- アンチボット対策。 StravaはIPOを前にサイトのスクレイパー対策を積極的に強化しており、利用規約上のリスクに加えて、フィンガープリンティング、レート制限、IPブロックを覚悟する必要があります。
- 安定した公開JSONがない。 ルート、クラブ、チャレンジの各ページはサーバーサイドでレンダリングされたHTMLであり、文書化されたAPIではないため、デザイン変更のたびにセレクタが壊れます。
利用規約による明確な禁止があることを踏まえると、Stravaの自作スクレイピングは、他のhow-to-scrapeガイドのDIYセクションとは実質的に異なるリスクプロファイルを持ちます — それを前提に計画してください。
選択肢3:構造化されたStrava API
公開のルート・クラブ・チャレンジデータ — 特定のアスリートの非公開の活動、GPSトレース、ログインの背後にあるコンテンツは決して含みません — については、Stravaスクレイピング APIがStravaの公開ルートエクスプローラー、クラブプロフィール、チャレンジギャラリーの各ページから正規化されたJSONを返せます。スポーツ・国・地域別にルートを閲覧します。
curl "https://api.crawlora.net/api/v1/strava/routes?sport=hiking&country=usa®ion=colorado" \
-H "x-api-key: $CRAWLORA_API_KEY"
同じ呼び出しをPythonで書くと次のようになります。
import requests
resp = requests.get(
"https://api.crawlora.net/api/v1/strava/routes",
headers={"x-api-key": "YOUR_API_KEY"},
params={"sport": "hiking", "country": "usa", "region": "colorado"},
)
routes = resp.json()["data"]["routes"]
for r in routes[:5]:
print(r["rank"], r["name"], r["distance_raw"], r["difficulty"])
レスポンスはランク付けされたルートインデックスです(示されているフィールドは説明用です — 現在のスキーマはドキュメントを確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"sport": "hiking",
"country": "usa",
"region": "colorado",
"title": "Top 318 hiking trails in Colorado",
"total_pages": 16,
"total_results": 318,
"routes": [
{
"rank": 1,
"name": "Mallory Cave via N.C.A.R. Trail",
"path": "hiking/usa/colorado/boulder/mallory-cave_5171952737974445730",
"difficulty": "Easy",
"distance_raw": "1.46 mi",
"elevation_gain_raw": "345 ft"
}
]
}
}
インデックスのpathを使って、1件のルートの完全な詳細を取得します。
curl "https://api.crawlora.net/api/v1/strava/routes/detail?path=hiking/usa/colorado/boulder/mallory-cave_5171952737974445730" \
-H "x-api-key: $CRAWLORA_API_KEY"
クラブIDでその公開プロフィールを調べたり、Stravaの現在の公開チャレンジギャラリーを取得したりできます。
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/strava"
club = requests.get(f"{base}/clubs/521703", headers=h).json()["data"]
print(club["name"], club["member_count"], club["location"])
challenges = requests.get(f"{base}/challenges", headers=h).json()["data"]
print(challenges["promoted_challenge"]["name"])
取得できるもの
これは公開のルート・クラブ・チャレンジ一覧に限定されており、いかなるアスリートの非公開の活動フィード、GPSトレース、フレンドリストも対象外です。
- ルートインデックスと詳細 — スポーツ/国/地域別の公開ルートについて、名前、スポーツ、難易度、距離、獲得標高、所要時間の目安、説明。
- クラブの公開プロフィール — クラブIDに対する名前、所在地、メンバー数、認証ステータス、説明 — クラブの公開ページで見えるのと同じフィールドであり、メンバー名簿や活動フィードではありません。
- 公開チャレンジギャラリー — Stravaの現在のプロモート対象およびカテゴリ別チャレンジ(名前、目標、期間)で、strava.com/challengesに表示されるのと同じ一覧です。
制約
- 非公開のアスリートデータは一切含まれません。 個々の活動、特定の人物が走った/漕いだGPSルート、心拍数、フレンド/フォロワーは対象外です — それらのデータには、Strava公式APIを通じたそのアスリート本人のOAuth同意が必要です。
- Stravaの利用規約は自動収集を制限しています。 このシリーズの他の多くのプラットフォームよりもリスクの高いカテゴリとして扱ってください — 収集を拡大する前に、StravaのAPI PolicyとTerms of Serviceを必ずご自身で確認してください。
- ログインゲートは拡大しています。 2026年6月のアンチスクレイパー強化以降、以前はアカウントなしで見えていたものがさらにログインの背後に移行していく可能性があり、公開ページを情報源とするあらゆる手段が到達できる範囲は時間とともに狭まりうります。
- アスリートの活動データの一括エクスポートではありません。 個々のアスリートのトレーニングデータが必要なユースケースの場合、それは各アスリートの同意を伴う公式OAuth APIを通じてのみ存在します — それを回避する正当な近道はありません。
どこで使われるか
- アウトドア・フィットネスコンテンツ — 旅行サイトやギアサイトのために、地域で高評価のトレイルやルートを洗い出す。
- クラブ発見とスポンサーシップリサーチ — コミュニティパートナーシップのために、所在地別にラン/ライドクラブを発見し規模を把握する。
- フィットネスマーケティングのトレンド追跡 — Stravaがスポーツや季節ごとにどのチャレンジをプロモートしているかを監視する。
出典
収集を始める
まずは無料でお試しください: 任意の公開URLを無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップ不要です。
routesエンドポイントをプレイグラウンドで試し、APIドキュメントで現在のレスポンススキーマを確認し、料金ページでクレジットコストを確認してください。フィットネス・アクティビティ系のプラットフォームを比較検討しているなら、ブランドのソーシャルでの存在感を見るためにInstagramのスクレイピング方法を、あるいは人気のトレイルヘッド周辺の地元ビジネスを見るためにGoogle Mapsのスクレイピング方法を組み合わせてください。大規模に稼働するものを構築する前に、2026年、ウェブスクレイピングは合法か?を読んでください — Strava自身の利用規約は他の多くのプラットフォームより厳格です。
よくある質問
Stravaには公式APIがありますか?
はい。Stravaはdevelopers.strava.comで文書化されたOAuth 2.0 API(v3)を提供しています。あなたのアプリはアスリートをStravaの同意画面へリダイレクトし、そのアスリート本人のデータに限定されたトークンを受け取ります — プラットフォーム全体を対象とした汎用的なエクスポート機能ではありません。
他のアスリートの非公開の活動やGPSデータをスクレイピングできますか?
いいえ。非公開の活動データ、GPSトレース、心拍数などアスリート固有のデータは、Strava公式のOAuth APIを通じて、あなたのアプリを明示的に認可した特定のアスリートについてのみアクセスできます。本人の同意なしに他人の非公開の活動データへアクセスする正当な方法はありません。
Stravaのスクレイピングは合法ですか?
Stravaは他の多くのプラットフォームより厳格なケースとして扱ってください。利用規約はログイン状況にかかわらず、自動アクセス、データマイニング、スクリーンスクレイピング、クローラーを明確に禁止しており、APIポリシーも別途ウェブスクレイピングと一括データ抽出を禁じています。必ずご自身でStravaの利用規約を確認し、大規模に構築する前に弁護士に相談してください。
構造化APIで収集できる公開のStravaデータは何ですか?
スポーツ/国/地域別の公開ルートインデックスとルート詳細、クラブの公開プロフィール(名前、所在地、メンバー数、説明)、そしてStravaの現在の公開チャレンジギャラリーです — いずれもStravaの公開ページに表示されている情報であり、非公開のアスリートデータではありません。
なぜStravaは2026年に、以前は公開されていたデータへのアクセスを制限したのですか?
2026年6月、非公開のIPO申請を控える中、Stravaは以前はアカウントなしで閲覧できたデータ(クラブ一覧を含む)をログインの背後に置き、定額の開発者料金を導入し、複数のAPIエンドポイントを廃止しました。理由として、AI企業が学習データ用にサイトをスクレイピングする圧力を挙げています。
2026年に廃止されるStrava APIのエンドポイントはどれですか?
Strava公式のAPIチェンジログによれば、Club Activities、Club Members、Club Adminsの各エンドポイントは2026年9月1日に削除され、Explore Segmentsエンドポイントも同日、承認制のExtended Access Tierに制限されます。
Strava APIのレート制限はどのくらいですか?
新規の開発者アプリはsingle-player modeで開始し、おおよそ15分あたり200リクエスト、1日あたり2,000リクエストです。接続アスリート数10以上でアプリレビューを通過すると、上限は15分あたり約400、1日あたり約4,000まで引き上げられます。