GoogleはRedditデータのライセンス取得に年間6,000万ドルを支払っています。OpenAIの契約額も報道では7,000万ドルだとされています。これだけ見ても、あのコメント欄の中にどれだけ価値ある情報が眠っているか、十分わかるはずです。Redditのスレッド、コメント、あるいは感情分析用のデータを手作業で集めたことがあるなら、延々スクロールして、コピペして、タブを開きっぱなしにするあのしんどさは、きっと身に覚えがあるでしょう。
私たちThunderbitのチームでは、前四半期にかなりの時間をかけて、2025年時点で人々がどうやってRedditデータを取得しているのかを徹底的に調べました。Redditが2023年にAPIの料金体系を大きく見直してから、状況はかなり変わっています。しかも、ネット上のガイドの多くは古いままだったり、1つのやり方しか紹介していなかったりします。そこで今回、Pythonでの本格的なスクリプトからノーコードの抽出方法まで、今実際に使える4つの手法をまとめました。スキルレベルや用途に合わせて選べます。NLP用データセットを作りたい人も、ブランド名の言及を追いたい人も、トレンド投稿をスプレッドシートにまとめたい人も、このガイドでちゃんと対応できます。
Redditスクレイピングとは?なぜ重要なのか
Redditスクレイピングとは、RedditのページやAPIから投稿、コメント、ユーザーデータ、メタデータをプログラムで抜き出すことです。スレッドを1つずつ見て回って文章をコピペするのではなく、スクリプトやツールを使って、構造化されたデータをまとめて取得します。
では、なぜそこまでして集めるのか。Redditには10万を超えるアクティブなサブレディットがあり、1日あたり約750万件のコメントが生まれていると推定されています。そこでは、人々が製品、サービス、競合、トレンドについて、飾らない本音をそのまま話しています。きれいに整ったレビューサイトや企業ブログではまず拾えない、リアルな気配が見つかる場所です。GoogleはRedditコンテンツのライセンスに年間約6,000万ドルを支払い、OpenAIも7,000万ドル規模の契約を結んだと報じられています。世界最大級のAI企業がこのデータに大金を投じているなら、自分でアクセス方法を学ぶ価値は十分あります。
2025年にPythonでRedditをスクレイピングする理由
Redditスクレイピングでは、Pythonが事実上の定番です。PRAW、requests、BeautifulSoup、pandasを使えば、API呼び出しからデータの書き出しまで一通りカバーできます。ただし、理由はツールが便利だからだけではありません。
ビジネスや研究の現場でよくある用途は、次のとおりです。
| 用途 | メリットを得る人 | 例 |
|---|---|---|
| 市場調査・検証 | プロダクトマネージャー、起業家 | r/SaaS や r/Entrepreneur で繰り返し出る課題を拾い出す |
| 感情分析 | マーケティング、ブランド担当 | 自社製品と競合がどう語られているかを比べる |
| リード獲得 | 営業チーム | ニッチなサブレディットで「Xができるツールを探している」投稿を見つける |
| コンテンツ企画 | コンテンツマーケター | r/marketing や r/SEO で伸びている質問や話題を見つける |
| 学術研究 / NLP研究 | 研究者、データサイエンティスト | コメントスレッドから感情分類用のラベル付きデータセットを作る |
| 競合情報の収集 | 戦略、オペレーション担当 | 競合サブレディットで何度も出る不満を追いかける |
Redditのユーザー数は2025年時点で、月間アクティブユーザー13.6億人、週間アクティブユニーク数は4億7,160万人に達したと推定され、前年比24%増です。さらに、Googleの2024年8月のコアアップデート以降、Redditコンテンツは自然検索での表示が約400%増えたとされています。
つまり、Redditから取れるデータは、Googleが検索ユーザーに見せている情報とますます重なってきている、ということです。
Redditをスクレイピングするならどの方法を選ぶべき?(比較表)
Redditスクレイピングのコミュニティでいちばん多い質問は、文字どおり「どの方法を使えばいいの?」です。そこで比較表を用意しました。自分に合う行を見て、そのまま進めてください。
| 比較項目 | PRAW | .json エンドポイント | BeautifulSoup(HTML) | ノーコード(Thunderbit) |
|---|---|---|---|---|
| 初期設定の難易度 | 中(APIアプリ作成 + pip install) | なし(URLを開くだけ) | 中(pip + DOM確認) | かなり低い(Chrome拡張) |
| APIキーは必要? | 必要 | 不要 | 不要 | 不要 |
| コメント取得 | 深い階層まで可能 | 限定的(最上位のみ) | 手動解析が必要 | AIが構造化 |
| ページ送り | 標準対応 | 手動(after パラメータ) | 手動 | 自動 |
| レート制限 | 100 req/min(PRAWが管理) | 約10 req/min(認証なし) | IPブロックのリスクあり | ツール側で処理 |
| 向いている用途 | 機能重視のプロジェクト、研究 | 手早い単発取得 | 学習・カスタマイズ | 非エンジニア、素早い書き出し |
| 出力先 | CSV、JSON(手動コード) | JSON(生データ) | 任意(手動コード) | Excel、Google Sheets、Airtable、Notion |
深いコメント取得まで含めた本格的なPythonプロジェクトなら、まずは方法1(PRAW)から始めるのがおすすめです。10分以内に準備なしでサクッとデータを取りたいなら、方法2(.jsonの裏技)を試しましょう。HTMLスクレイピングを学びたい、または独自の項目を取りたいなら、方法3(BeautifulSoup)です。Pythonを使わずにとにかくデータだけ欲しいなら、方法4()へ進んでください。
何が変わった?Redditの2023〜2024年API料金改定と、今も無料で使えるもの
この点に触れているスクレイピングガイドはほとんどありません。でも、今Redditをスクレイピングする人にとっては、これがいちばん大事な前提です。
2023年6月、Redditは2008年以来初めてAPIアクセスに有料枠を導入しました。その影響はかなり大きいものでした。
- Pushshiftは一般利用で事実上終了。Redditは2023年5月にPushshiftのAPIアクセスを取り消しました。Pushshiftをデータソースとして使っていた研究者は、一夜にして主要な取得手段を失いました(がPushshiftを引用)。過去データの後継としてはがありますが、公開のライブAPI代替はありません。
- サードパーティアプリが終了。Apollo、Reddit is Fun、Sync、BaconReaderなどは、RedditがApollo開発者に年間のAPI費用を提示した後、2023年6月30日までに閉鎖されました。
- 8,500以上のサブレディットが停止。r/funny(4,000万人の購読者)、r/gaming、r/science なども抗議のために一時的に閉鎖しました()。
2025年時点でまだ無料で使えるもの
は、非商用・個人利用・学術利用向けに引き続き利用できます。上限はOAuthクライアントIDあたり毎分100クエリです。PRAWはこの枠内で中程度のスクレイピングなら問題なく処理できます。認証なしアクセス(.jsonエンドポイントを含む)は、だいたい毎分10リクエストに制限されます。
実務上の結論:小規模〜中規模のスクレイピングなら、無料枠で十分です。大規模利用や商用利用では、Redditにエンタープライズアクセスを問い合わせるか、APIキー不要の.jsonエンドポイントやBeautifulSoupを使うか、RedditのAPIに依存しないThunderbitのようなツールを使うことになります。
始める前に
- 難易度: 初級〜中級(方法によって異なる)
- 必要時間: 方法1〜3は約15〜30分、方法4は約5分
- 必要なもの:
- Python 3.8以上(方法1〜3)
- Redditアカウント(方法1)
- Chromeブラウザ(方法4)
- (方法4)
方法1:PRAWを使ってPythonでRedditをスクレイピングする方法(ステップバイステップ)
PRAW(Python Reddit API Wrapper)は、PythonでRedditをスクレイピングする方法として最も人気があり、ドキュメントも充実しています。認証、レート制限、ページ送りをまとめて処理してくれますし、継続的にメンテナンスされています。最新の安定版はPRAW 7.8.1(2024年10月)で、Python 3.8〜3.13に対応しています。
ステップ1:Redditアプリを作成し、API認証情報を取得する
にアクセスし、いちばん下までスクロールします。「are you a developer? create an app...」 をクリックしてください。
フォームを入力します。
- Name: わかりやすい名前を入れる(例: 「my-reddit-scraper」)
- App type: script を選択
- Redirect URI:
http://localhost:8080を入力(必須ですが、scriptアプリでは実質使いません) - Description: 任意
Create app をクリックすると、認証情報が表示されます。
- client_id — アプリ名のすぐ下にある14文字の文字列("personal use script" と表示)
- client_secret — "secret" と書かれた欄
アプリ作成を終える前に、Redditのとへの同意も必要です。
注意点として、2024年後半以降は新規開発者がアクセス申請を出して承認待ちになることがあります。PRAWを初めて使う人にとって、ここがいちばんつまずきやすいところです。回避策はありません。
ステップ2:PRAWをインストールしてRedditインスタンスを作成する
ターミナルを開いて、次を実行します。
1pip install praw pandas
そのあと、読み取り専用のRedditインスタンスを作成します。
1import praw
2reddit = praw.Reddit(
3 client_id="YOUR_CLIENT_ID",
4 client_secret="YOUR_CLIENT_SECRET",
5 user_agent="python:reddit-scraper:v1.0 (by u/yourname)",
6)
7# scriptアプリでパスワードを設定しない場合、reddit.read_only はデフォルトで True
user_agent の形式はかなり重要です。Redditは python-requests/2.x のような汎用文字列をかなり厳しく制限します。Reddit推奨の platform:app_id:version (by u/username) 形式を使ってください。
ステップ3:サブレディットから投稿を取得する
たとえば、r/python の過去1か月の人気投稿を取得して、pandasのDataFrameに保存するには次のようにします。
1import pandas as pd
2subreddit = reddit.subreddit("python")
3rows = []
4for post in subreddit.top(time_filter="month", limit=500):
5 rows.append({
6 "id": post.id,
7 "title": post.title,
8 "selftext": post.selftext,
9 "score": post.score,
10 "upvote_ratio": post.upvote_ratio,
11 "num_comments": post.num_comments,
12 "author": str(post.author) if post.author else "[deleted]",
13 "created_utc": post.created_utc,
14 "url": post.url,
15 "permalink": f"https://reddit.com{post.permalink}",
16 })
17df = pd.DataFrame(rows)
18print(df.head())
.top() は .hot()、.new()、.controversial() に置き換えられます。また time_filter には "all"、"day"、"hour"、"month"、"week"、"year" を指定できます。
ただし、Reddit側の仕様として、どれだけ limit を大きくしても、一覧取得はおおむね1,000件が上限です。これはPRAWの制限ではなく、Reddit側の上限です。
ステップ4:RedditデータをCSVまたはExcelに出力する
1df.to_csv("reddit_python_top.csv", index=False)
2df.to_json("reddit_python_top.json", orient="records", lines=True)
PRAWはレート制限を自動で処理します。各レスポンスの X-Ratelimit-Remaining と X-Ratelimit-Reset ヘッダーを読み取り、必要に応じてリクエスト間で待機します。中程度のスクレイピングなら、手動で遅延を入れる必要はほとんどありません。
PythonでRedditコメントをスクレイピングする方法(深いネスト構造)
コメント取得でつまずく人がいちばん多いです。
Redditのコメントは木構造で管理されています。各コメントに子コメントがぶら下がり、さらに一部の枝は「load more comments」リンクの裏に折りたたまれています。PRAWでは、こうした非表示の枝が MoreComments オブジェクトとして表現されます。
イメージはこんな感じです。
1Submission (t3_abc123)
2├── Comment A (top-level)
3│ ├── Reply A1
4│ │ └── Reply A1a
5│ └── Reply A2
6├── Comment B (top-level)
7│ └── MoreComments (hidden — "load more comments")
8└── MoreComments (hidden — "continue this thread")
replace_more() で非表示コメントをすべて取得する
replace_more() メソッドはコメントツリーをたどり、MoreComments のプレースホルダーを実際のコメントに置き換えます。
1submission = reddit.submission(id="abcdef")
2submission.comments.replace_more(limit=10) # 大きなスレッドでは実用的な上限
3all_comments = submission.comments.list() # 幅優先でフラット化
limit=None にすると、MoreComments ノードをすべて置き換えられます。ただし、5,000件超のスレッドでは、1回の置き換えにつき最大約100件しか返らないAPIリクエストが何度も必要になるため、数分かかることがあります。大きなスレッドでは、まず limit=10 か limit=20 から始め、完全性が必要なときだけ増やすのが現実的です。
ネストしたコメントを表に整形する
1rows = []
2for c in all_comments:
3 rows.append({
4 "comment_id": c.id,
5 "parent_id": c.parent_id, # t1_xxx = 親コメント, t3_xxx = submission
6 "depth": c.depth,
7 "author": str(c.author) if c.author else "[deleted]",
8 "body": c.body,
9 "score": c.score,
10 "created_utc": c.created_utc,
11 "is_submitter": c.is_submitter,
12 })
13comments_df = pd.DataFrame(rows)
最上位コメントの parent_id は t3_ で始まります(submissionのfullname)。depth 列を見れば、各コメントが何階層目か分かります。抽出条件の調整や可視化に便利です。注意点として、len(all_comments) は通常 submission.num_comments と一致しません。削除済み、取り下げ済み、スパム判定済みのコメントはツリーから外れるためです。
方法2:.jsonエンドポイントの裏技 — APIキーなしでRedditをスクレイピングする
RedditのURLの末尾に .json を付けるだけです。それでOKです。認証不要、アプリ登録不要、pipインストールも不要で、構造化JSONが返ってきます。
例: https://www.reddit.com/r/python/hot.json
フォーラムでは定番のやり方なのに、ちゃんと説明しているチュートリアルは意外と少ないです。
動くPythonコード例
1import requests
2headers = {"User-Agent": "python:reddit-scraper:v1.0 (by /u/yourname)"}
3r = requests.get(
4 "https://www.reddit.com/r/python/hot.json",
5 headers=headers,
6 params={"limit": 100},
7)
8data = r.json()
9for post in data["data"]["children"]:
10 p = post["data"]
11 print(p["title"], p["score"], p["num_comments"], p["author"])
User-Agent ヘッダーはめちゃくちゃ重要です。Redditは python-requests/2.31.0 のような一般的なUser-Agentをブロックまたは制限します。にもあるように、「このレート制限はuser-agentに基づいている」とされています。PRAWと同じく、説明が入った形式を使いましょう。
after パラメータでページ送りする方法
.jsonエンドポイントは、デフォルトで約25件、最大でも1リクエスト100件まで返します。さらに取得したい場合は、レスポンス内の after カーソルを使います。
1import requests, time
2headers = {"User-Agent": "python:reddit-scraper:v1.0 (by /u/yourname)"}
3after = None
4all_posts = []
5for _ in range(10): # 最大で約1000件
6 r = requests.get(
7 "https://www.reddit.com/r/python/hot.json",
8 headers=headers,
9 params={"limit": 100, "after": after},
10 )
11 data = r.json()
12 all_posts.extend(data["data"]["children"])
13 after = data["data"].get("after")
14 if not after:
15 break
16 time.sleep(6) # 約10 QPM = 6秒に1回
after の値はカーソル用トークンです(形式: t3_xxxxxx)。PRAWと同じく、ページ分割しても総取得件数の上限は約1,000件です。
.json方式の制約
- 深いコメントツリーにはアクセス不可 — 最上位コメントと「more」のプレースホルダー1階層分までは取れますが、PRAWの
replace_more()のような自動展開はありません - 読み取り専用 — 投票、投稿、モデレーションはできません
- 認証なし通信は毎分約10リクエスト — 短時間に回しすぎると429エラーになります
- 一覧取得の上限1,000件 は認証付きAPIと同じです
この方法は、ちょっとした取得、プロトタイピング、APIアプリを作りたくない場面に向いています。
方法3:BeautifulSoupを使ってRedditをスクレイピングする方法(HTML解析)
これまでにWebスクレイピングをしたことがあるなら、BeautifulSoupはおなじみでしょう。Redditで特に大事なのは、新しいReactベースの画面ではなく old.reddit.com を使うことです。旧UIはサーバー側で生成されるので軽く、解析しやすく、でも、まだ使えてスクレイパー向きだと確認されています。
RequestsとBeautifulSoupの準備
1pip install requests beautifulsoup4
1import requests
2from bs4 import BeautifulSoup
3headers = {"User-Agent": "python:reddit-scraper:v1.0 (by /u/yourname)"}
4r = requests.get("https://old.reddit.com/r/python/", headers=headers)
5soup = BeautifulSoup(r.text, "html.parser")
DOMから投稿データを抽出する
old.reddit.com では、各投稿は thing というクラスの <div> に入っています。いちばん安定しているのは data-* 属性です。
1for thing in soup.select("div#siteTable > div.thing"):
2 title_el = thing.select_one("a.title")
3 print({
4 "title": title_el.get_text(strip=True) if title_el else None,
5 "author": thing.get("data-author"),
6 "score": thing.get("data-score"),
7 "comments": thing.get("data-comments-count"),
8 "domain": thing.get("data-domain"),
9 "url": title_el.get("href") if title_el else None,
10 })
ネストしたクラスセレクタよりも data-* 属性を優先しましょう。Redditはこれまでクラス名を何度も変えてきましたが、data属性はテンプレート由来なので、比較的変わりにくいです。
old.reddit.com でページ送りする方法
1import time
2url = "https://old.reddit.com/r/python/"
3all_rows = []
4while url:
5 r = requests.get(url, headers=headers)
6 soup = BeautifulSoup(r.text, "html.parser")
7 for thing in soup.select("div#siteTable > div.thing"):
8 title_el = thing.select_one("a.title")
9 all_rows.append({
10 "title": title_el.get_text(strip=True) if title_el else None,
11 "author": thing.get("data-author"),
12 "score": thing.get("data-score"),
13 "comments": thing.get("data-comments-count"),
14 "url": title_el.get("href") if title_el else None,
15 })
16 nxt = soup.select_one("span.next-button a")
17 url = nxt["href"] if nxt else None
18 time.sleep(2) # 丁寧なアクセス間隔
BeautifulSoupとPRAWの使い分け
BeautifulSoupは、DOMスクレイピングを学びたい、OAuthアプリを登録したくない、あるいはPRAWでは取れない独自項目が必要なときに向いています。ただし、壊れやすい面はあります。HTML構造は予告なく変わることがあり、2025年のIPブロックは以前より厳しく、ページ送りやエラー処理も全部自分で実装する必要があります。信頼性と取得の深さでは、PRAWのほうが上です。
方法4:Thunderbitを使ってコードなしでRedditをスクレイピングする
正直に言うと、「PythonでRedditをスクレイピングする方法」を探している人の多くは、本当はPythonを書きたいわけではありません。欲しいのはデータです。もしあなたがそうなら、この章が近道になります。
は、コードを書かずにWebページから構造化データを抽出する用途に特化して、私たちのチームが開発したAI搭載のChrome拡張機能です。
ステップ1:ThunderbitをインストールしてRedditページを開く
をインストールして、任意のRedditサブレディットや投稿ページ(例: reddit.com/r/python)を開きます。
APIキーもPython環境もターミナル操作も不要です。
ステップ2:「AIで項目を提案」を押してAIにページを読ませる
ブラウザのツールバーでThunderbitアイコンをクリックし、「AIで項目を提案」 を押します。ThunderbitのAIがページを解析して、Post Title、User Name、Upvotes、Comments Count、Date Posted、Post Description、Community Name、Post URL などの列を自動で提案します。
必要に応じて、列の追加・削除・名称変更もできます。たとえば、投稿タイトルとスコアだけ欲しいなら、他の項目を消せばそれでOKです。
ステップ3:「スクレイプ」を押してデータを書き出す
「スクレイプ」 を押すと、Thunderbitがページ送りも含めて自動でデータを抽出します。表ができたら、そのままExcel、Google Sheets、Airtable、Notionへ出力できます。CSV用のコードを書く必要はありません。
もっと深いデータが欲しいなら、Thunderbitのサブページスクレイピングを使うと、各スレッドを開いてコメントデータまで自動で表に追加できます。考え方としてはPRAWの replace_more() に近いですが、コードは1行も書きません。
便利機能:継続監視のための定期スクレイピング
r/SaaS でのブランド言及や、ニッチなコミュニティでの競合議論を毎日追いたいときなど、サブレディットを定期的に監視したい場合は、Thunderbitのスケジュールスクレイパーが使えます。間隔を自然な言葉で指定するだけで(例: 「平日の毎朝9時」)、あとは自動で回り、接続済みのスプレッドシートやデータベースに最新データを届けます。
ThunderbitのRedditスクレイピング機能については、 でも詳しく紹介しています。
PythonでRedditをスクレイピングする際のヒントとベストプラクティス
以下は、私自身かなり痛い目を見ながら学んだことです。上で紹介したどの方法にも共通します。
Redditの利用規約とレート制限を守る
Redditの では、書面による許可なしの商用スクレイピングを明確に禁止しています。これはAPIだけでなく、すべての取得方法に当てはまります。個人利用、学術利用、社内調査であれば、無料のOAuth枠やThunderbitのワークフローは一般的な利用範囲内です。
レート制限の早見表はこちらです。
| 状況 | 上限 | 起きること |
|---|---|---|
| 認証あり(OAuth) | 60〜100 req/min | PRAWが自動で管理 |
| 認証なし(.json、HTML) | 約10〜30 req/min | 429 Too Many Requests |
| 汎用User-Agent | 強く制限される | 403 Forbidden または静かなブロック |
User-Agent は必ず説明的な文字列にしてください。初心者がいちばんよく429や403を食らう原因は、ここです。
データはきれいに保存・整理する
- CSVやExcel出力が読みやすくなるよう、pandas DataFrameでは列順をはっきり決める
created_utcは人間が読める時刻に変換する:pd.to_datetime(df["created_utc"], unit="s")- 複数の並び順(hot、new、top)で取得する場合は
idで重複排除する - 削除済み著者を処理する:
str(post.author) if post.author else "[deleted]"
よくあるエラーは丁寧に処理する
| エラー | 原因 | 対処法 |
|---|---|---|
| 429 Too Many Requests | レート制限超過(OAuthで60〜100 req/min) | 指数バックオフを実装する;X-Ratelimit-Reset ヘッダーを確認する |
| 403 Forbidden | User-Agent不備、またはIPブロック | ユニークで説明的なUA文字列を使う;OAuthアプリが有効か確認する |
None author | 削除済みまたは停止されたアカウント | if post.author else "[deleted]" で処理する |
prawcore.TooManyRequests | PRAW側のレート制限バッファが発動 | ratelimit_seconds を増やすか、リクエストを均等に分散する |
| 大きなツリーでの 5xx / 413 | 深いスレッドでRedditバックエンドに負荷 | replace_more() をリトライ処理で包む;再帰深度を制限する |
Redditスクレイピングの活用例:データをどう使うか
スクレイピングはあくまで第一歩です。本当に成果が出るのは、その後です。
- 営業チーム: r/SaaS、r/smallbusiness、r/Entrepreneur などで「Xができるツールを探している」投稿を監視し、該当内容をリードリストやCRMの自動処理に流し込む。日次監視にはThunderbitの定期スクレイパーが便利です。
- マーケティング・コンテンツチーム: ブランド言及の追跡、感情の変化の分析、伸びている質問の収集によるコンテンツ企画。Redditの出力をGoogle Sheetsと組み合わせれば、チーム共有もしやすいです。
- EC・オペレーション担当: 競合製品に関する議論を監視して、繰り返し出る不満を把握する。r/BuyItForLife や業界特化コミュニティは、製品フィードバックの宝庫です。
- 研究者・アナリスト: NLPデータセットの構築。2024年の学術論文では、感情・感情分類のためにからまで使われています。PRAWで集めたコーパスは、査読付き論文でも引用しやすいです。
もっと深く知りたい方は、 や、 もThunderbitブログで詳しく解説しています。
まとめ
2025年のRedditスクレイピングは、2年前とはまったく違います。2023年のAPI変更でPushshiftは消え、人気のサードパーティアプリは終了し、有料枠も導入されました。
それでも、個人利用や学術利用向けの無料枠は今も健在で、データを取る方法もむしろ増えています。
各手法を一言でまとめると、こんな感じです。

Python歴が長い人でも、昼休みまでにスプレッドシートを作りたい人でも、この4つの方法のどれかで目的を達成できるはずです。コードを完全に飛ばしたいなら、 ことで、数クリックでRedditをどう扱えるか確認できます。Pythonのスクレイピングスキルをさらに伸ばしたいなら、このガイドをブックマークしておいてください。Redditの環境変化に合わせて、今後も更新していきます。
Webスクレイピング全般については、、、 もぜひご覧ください。
FAQ
PythonでRedditをスクレイピングするのは合法ですか?
Redditの では、書面による許可なしの商用スクレイピングを禁止しています。無料のOAuth枠は、個人利用・非商用利用・学術利用向けに開放されています。法的な扱いは取得手段に依存しません。APIでも、.jsonエンドポイントでも、HTMLスクレイピングでも同じです。大規模に取得する前に、必ずRedditの最新利用規約を確認してください。
Redditの2023年API変更後もPRAWは使えますか?
はい。PRAW 7.8.1(2024年10月)は継続的にメンテナンスされており、 の範囲内で自動的に動作します。2023年の料金改定が主に影響したのは、大量利用や商用API利用であり、一般的なPRAWのスクレイピング用途ではありません。
APIキーなしでRedditをスクレイピングできますか?
はい。.jsonエンドポイントとBeautifulSoupによるHTML解析は、どちらもAPIキーなしで使えます。 もAPIキー不要です。ただし、商用利用については3つともRedditの利用規約に従う必要があります。
投稿だけでなくコメントもスクレイピングするには?
PRAWなら submission.comments.replace_more(limit=10) のあとに submission.comments.list() を使えば、ネストしたコメントツリーを一覧化できます。Thunderbitならサブページスクレイピングを使って、投稿一覧の抽出に各スレッドのコメントデータを自動で追加できます。
コードなしでRedditを最速でスクレイピングする方法は?
を使えば、Redditの投稿やコメントを2クリックで抽出し、そのままExcel、Google Sheets、Airtable、Notionへ出力できます。PythonもAPIキーも初期設定も不要です。
詳しくはこちら
