Tony Wang5 分で読めますReddit をスクレイピングする方法(2026年版・API と Python)
2026年に Reddit の投稿・コメント・サブレディットを収集する3つの方法 — 自作 Python、ノーコードツール、構造化 API — それぞれ何が取得でき、法的な基礎知識も解説します。
2026年に Reddit を最速でスクレイピングする方法は、Reddit のレート制限やログインの壁を自分で回避するのではなく、正規化された JSON(スコア・投稿者・タイムスタンプ付きの投稿・コメント・サブレディットのフィード)を返す構造化 API を呼び出すことです。自作も可能ですが、2023年に Reddit の公式 Data API が有料化され厳しいレート制限がかかって以来、手軽なスクレイピングはすぐに機能しなくなります。
Reddit は AI の回答で最も多く引用されるソース のひとつであり、まさにそれこそが、各チームがコミュニティ調査やセンチメント分析、グラウンディングデータのために Reddit を収集する理由です。構造化されたエンドポイントを使えば、トークンやクォータを管理することなく、スレッドをきれいな JSON として取得できます。
Reddit のスクレイピングは合法ですか?
Reddit のコンテンツは公開されていますが、投稿やコメントは人間が書いたものなので、必要に応じて個人データとして扱ってください。
- 収集するのは 公開 の投稿・コメント・サブレディットのみとし、非公開または隔離(quarantined)アクセスのコンテンツは扱わないでください。
- Reddit には公式の API 利用規約とレート制限があります。商用利用や AI 学習用途の前に、それらとお住まいの地域の法律を確認してください。
- 保存するユーザー識別データ(ユーザー名など)は最小限に抑え、保護してください。
- プラットフォーム規約やユーザーの期待に反する形でコンテンツを再公開しないでください。
これは法的助言ではありません。公開データと個人データの違いについては ウェブスクレイピングは2026年に合法ですか? をご覧ください。
選択肢1:Python での自作(そしてなぜもう機能しないのか)
かつては長年にわたって、Reddit の未認証 .json エンドポイントに直接アクセスできました。それは2026年5月に機能しなくなりました — Reddit は 未認証の .json アクセスを廃止 し、以下の呼び出しは現在 403 Forbidden を返します。
import requests
resp = requests.get(
"https://www.reddit.com/r/webdev/top.json",
params={"limit": 25},
headers={"User-Agent": "my-app/0.1"},
)
data = resp.json()
# ...then handle 429s, pagination cursors, and comment trees yourself
繰り返し発生する悩みどころ:
- 未認証の
.jsonは終了しました(2026年)。 上記の呼び出しは現在 403 を返します — なぜ Reddit がブロックしたのか をご覧ください。自作は今や、認証済みの OAuth API か、実際にログイン済みのブラウザセッションを意味し、さらに TLS フィンガープリントや IP レピュテーションのハードルが加わります。 - 認証の手間とコスト — 公式ルートは OAuth アプリとトークンを意味し、Reddit の Data API は無料の非商用利用(100 リクエスト/分)を超えると有料です。商用アクセスは1,000リクエストあたり約 $0.24、エンタープライズ契約は年間 $12,000 近くから始まります。
- コメントツリー — ネストされた返信には、再帰的な走査と丁寧なフラット化が必要です。
- ページネーションのカーソル —
afterトークンをすべての呼び出しに引き継ぐ必要があります。
選択肢2:ノーコードおよび既製ツール
ブラウザツールでスレッドを1つ取得することはできますが、ソーシャルリスニングとは、多数のサブレディットやクエリを時間をかけて監視し、その履歴を保存することを意味します。それはパイプラインであり、手動エクスポートよりも API のほうが適しています。
選択肢3:構造化された Reddit API
Crawlora の Reddit API は、検索・個別投稿・コメントスレッド・サブレディットフィード向けの文書化されたエンドポイントを公開しており、1つの API キーから正規化された JSON を返します。
curl -G "https://api.crawlora.net/api/v1/reddit/search" \
-H "x-api-key: $CRAWLORA_API_KEY" \
--data-urlencode "q=web scraping" \
--data-urlencode "sort=top" \
--data-urlencode "limit=25"
import requests
resp = requests.get(
"https://api.crawlora.net/api/v1/reddit/search",
headers={"x-api-key": "YOUR_API_KEY"},
params={"q": "web scraping", "sort": "top", "limit": 25},
)
for post in resp.json()["data"]["posts"]:
print(post["score"], post["subreddit"], post["title"])
レスポンスは正規化された JSON です(フィールドは説明用の例です — スキーマは ドキュメント で確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"posts": [
{
"id": "abc123",
"subreddit": "webdev",
"title": "Example post title",
"author": "example_user",
"score": 482,
"num_comments": 73,
"created_utc": 1780387665
}
]
}
}
投稿の id から、そのコメントを取得したり、サブレディットのエンドポイントでコミュニティをフォローしたりできます。
post_id = "abc123"
h = {"x-api-key": "YOUR_API_KEY"}
comments = requests.get(f"https://api.crawlora.net/api/v1/reddit/comments/{post_id}",
headers=h, params={"limit": 100}).json()
hot = requests.get("https://api.crawlora.net/api/v1/reddit/subreddit/webdev/posts",
headers=h, params={"sort": "hot"}).json()["data"]["posts"]
コメントエンドポイントは フラットな公開コメント を返し(走査すべき再帰的な返信ツリーはありません)、すべてのリストは after トークンでページネーションされます。これらは、当社の コンテンツと SEO 戦略 で紹介している r/SaaS ケーススタディの背後にあるのと同じエンドポイントです — 投稿またはコメントごとに1行を保存し、継続的なソーシャルリスニングのためにスケジュールで再実行してください。
収集できるもの
- Reddit 全体の検索結果:タイトル・サブレディット・投稿者・スコア・コメント数
idによる投稿の詳細全体とフラットな公開コメント- hot・new・top・rising で並べ替えたサブレディットフィード
afterによるページネーション、およびtime・sortフィルター
制約とよくある課題
- 公式 API は高コストな手段です。 無料利用は非商用のみで、100 リクエスト/分に制限されています。商用アクセスは1,000リクエストあたり約 $0.24、エンタープライズ契約は年間 $12,000 近くから始まります。各チームがフォールバックとして使っていた無料の公開
.jsonエンドポイントは 2026年5月時点でなくなり、有料 API かマネージドスクレイパーのどちらかが残された選択肢となっています。 - コメントはフラットで返ってきます。 公開コメントデータはネストされた返信ツリーではなくフラットなリストです — 保存はシンプルですが、スレッド構造が必要な場合は親 id から自分で再構築してください。
- ページネーション。 リストは
afterトークンでページ送りされます。すべてを一度に取得できると期待するのではなく、すべての呼び出しに引き継いでください。 - ユーザー名は個人データです。 投稿者やコメント本文は GDPR/CCPA の下で個人データになり得ると考え、保存する内容を最小限に抑え、特に AI 学習用途では適法な根拠を確保してください。
- 自作にはレート制限とブロックが伴います。 未認証リクエストはすぐに 429 を受けます。構造化 API は、ペース調整・プロキシ・リトライを1つのキーの背後で処理します。
出典
この機能が役立つ場面
まずは無料でお試しください: 任意の公開 URL を 無料ウェブスクレイパー で実行するか、アンチボットチェッカー でサイトがボットをブロックしているかを確認できます — サインアップ不要です。
Reddit のデータは、コミュニティ調査、ブランドや製品のセンチメント分析、AI 向けのグラウンディングデータを支えます。MCP インテグレーション と AI エージェントのウェブデータ ワークフローでスレッドを検索パイプラインやエージェントに取り込んだり、レビュー・評判モニタリング と並行してブランドの言及を追跡したりできます。また、Reddit の構造化されていない声と並べて置く構造化されたビジネスレビューについては、Trustpilot のレビューをスクレイピングする方法 をご覧ください。ソーシャル系のスタック全般については、YouTube をスクレイピングする方法、TikTok をスクレイピングする方法、LinkedIn をスクレイピングする方法、Twitter/X をスクレイピングする方法 を、より広いツールキットについては ウェブスクレイピング API の選び方 をご覧ください。
Playground でエンドポイントをテストし、API ドキュメント でリクエストとレスポンスのスキーマを読み、料金ページ でクレジット費用を確認して、まず始めてみましょう。
よくある質問
ブロックされずに Reddit をスクレイピングできますか?
Crawlora は API の背後でレート制限・プロキシ・リトライを処理するため、Reddit に直接アクセスする際の 429 やトークン管理を避けつつ、正規化された JSON を取得できます。
Reddit にはまだ無料の API がありますか?
Reddit の公式 Data API は非商用利用のみ無料で、100 リクエスト/分に制限されています。2023年に有料化され、厳しいレート制限がかかりました。Crawlora の Reddit エンドポイントは、公開の投稿・コメント・サブレディットフィードを、1つの Crawlora API キーから正規化された JSON として返します。
Reddit API の費用はいくらですか?
非商用利用は無料です(OAuth/PRAW 経由で100 リクエスト/分)。商用アクセスは1,000リクエストあたり約 $0.24、エンタープライズ契約は年間 $12,000 近くから始まります — そのため多くのチームは現在、代わりにマネージドスクレイパー API を使っています。無料の公開 .json エンドポイントは2026年5月に廃止されました。
Reddit のコメントスレッド全体を取得できますか?
Crawlora のコメントエンドポイントは、投稿に対するフラットな公開コメントを返します(互換性のために sort と depth を受け付けますが、公開コメントデータはフラットです)。保存はよりシンプルです。返信ツリーが必要な場合は、親 id から自分でスレッド構造を再構築してください。
非公開データや個人データをスクレイピングできますか?
できません。対象となるのは公開の投稿・コメント・サブレディットのみです。ユーザー名やコンテンツは個人データとして扱い、商用利用や AI 学習用途の前に Reddit の規約とお住まいの地域の法律を確認してください。
Reddit から何を収集できますか?
検索結果、投稿の詳細全体、フラットな公開コメント、サブレディットフィードを、sort・time・limit、および after カーソルによるページネーションとともに取得できます。
Reddit のデータを AI や RAG に使えますか?
公開スレッドを検索パイプラインやエージェントに取り込むことができます(例:MCP インテグレーション経由)。ただし、ご自身のユースケースに適用される Reddit の規約と法律に従ってください。