Tony Wang6 分で読めます2026年 Goodreads スクレイピング完全ガイド(API & Python)
2026年に Goodreads をスクレイピング——書籍、評価、レビュー、著者、リストを DIY・ノーコード・構造化 API で取得。Amazon は Goodreads API を廃止済み。
2026年に Goodreads をスクレイピングする最も手早い方法は、Goodreads の HTML を自分でパースするのではなく、正規化された JSON——書籍詳細、評価、レビュー、著者プロフィール、そしてリストのランキング——を返す構造化 API を呼び出すことです。これはこのシリーズのほとんどのプラットフォームよりも重要な点です。Amazon は2020年12月に新規申請者向けの Goodreads Developer API を停止しており、公式・有料・エンタープライズいずれの経路でも戻る手段はありません。このガイドでは DIY、ノーコード、構造化 API の3つを取り上げ、まず法律上の実情から解説します。
なぜ Goodreads をスクレイピングするのか?
Goodreads はウェブ上で最大級の公開されている書籍評価・レビューのデータセットであり、次のような用途を支えます。
- 書籍カタログの拡充 — 正規のタイトル、著者、評価、ジャンルのデータを読書アプリや社内データセットに紐付けられます。
- レコメンドと発見 — 評価データや棚分け(シェルフ)データから「似ている本」やジャンルベースのレコメンド機能を構築できます。
- 評判リサーチ — 発売後やメディア化後に、書籍の平均評価とレビュー数がどう推移するかを追跡できます。
- 著者・書誌のトラッキング — 著者の全著作、名言、読者の反応を時系列で追跡できます。
- リスト・トレンドのモニタリング — Listopia のランキングやジャンル棚を見て、読者が実際に手に取っている本を把握できます。
Goodreads をスクレイピングするのは合法か?
選択肢1: Python で DIY する(そしてなぜ破綻するか)
API がないため、DIY のアプローチは Goodreads のサーバーサイドでレンダリングされた書籍・著者・レビューページを直接パースすることを意味します。
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.goodreads.com/book/show/2767052-the-hunger-games",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Rating, review count, and description live in a mix of embedded JSON
# and page markup that shifts across Goodreads' redesigns
デモは動きますが、その後破綻します。
- robots.txt が主要なパスを積極的にブロックします。 Goodreads のデフォルトユーザーエージェント向けルールは
/search、/review/show、/api、/workなど複数のパスを許可していません——通常のナビゲーションをたどる素朴なクローラーはすぐにこれらに引っかかります。 - 安定したマークアップも、頼れる API もない。 Goodreads のページ構造はリデザインのたびに変わり、このシリーズのほとんどのプラットフォームと違って、スクレイピングが破綻したときに切り替えられる公式エンドポイントがありません。
- Amazon 級のアンチボット対策。 Goodreads は2013年から Amazon の傘下にあり、Amazon 級のインフラの背後にあります——データセンターの IP や素朴なクライアントはレート制限やブロックを受けます。
- レビューと版はそれぞれ別にページネーションされる。 ある書籍の全レビュー一覧と全版一覧は、それぞれ独自のページネーションされたサブページに存在するため、1回のページ読み込みだけでは完全なレコードは得られません。
選択肢2: ノーコードツール
一部のノーコードのスクレイパーマーケットプレイスやブラウザ拡張機能は、単発のエクスポート向けに構築済みの Goodreads テンプレートを提供しています——1つの読書リストや少数のタイトルのバッチには便利です。趣味のプロジェクトには妥当な一時しのぎになりますが、スケジュール実行には扱いにくく、クリーンなデータ契約を提供せず、内部では同じページをスクレイピングしているため DIY スクリプトと同じ利用規約・アンチボットのリスクを抱えています。
選択肢3: 構造化された Goodreads API
繰り返し実行できる、権限の範囲を絞ったワークフローには、Goodreads スクレイピング API が正規化された JSON を返し、メンテナンスが必要なページパースも、待つべき廃止済みのデベロッパープログラムもありません。書籍を検索してその id を取得します。
curl "https://api.crawlora.net/api/v1/goodreads/search?q=hunger+games" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "hunger games",
"results": [
{
"id": "2767052",
"title": "The Hunger Games",
"author": "Suzanne Collins",
"author_id": "153394",
"average_rating": 4.35,
"ratings_count": 10177818,
"pages": 374,
"uri": "https://www.goodreads.com/book/show/2767052-the-hunger-games"
}
]
}
}
続いて id を解決し、書籍詳細・レビュー・著者データを Python で取得します。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/goodreads"
hits = requests.get(f"{base}/search", headers=h, params={"q": "hunger games"}).json()["data"]["results"]
book_id, author_id = hits[0]["id"], hits[0]["author_id"]
book = requests.get(f"{base}/book/{book_id}", headers=h).json()["data"]
reviews = requests.get(f"{base}/book/{book_id}/reviews", headers=h, params={"limit": 20}).json()["data"]
author = requests.get(f"{base}/author/{author_id}", headers=h).json()["data"]
書籍詳細は正規化された JSON です(実際のフィールドです——ドキュメントを確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"id": "2767052",
"title": "The Hunger Games",
"series": "The Hunger Games #1",
"genres": ["Young Adult", "Dystopia", "Fiction"],
"pages": 374,
"publisher": "Scholastic Press",
"publication_date": "2008-10-14",
"isbn13": "9780439023481",
"rating": {
"average": 4.35,
"ratings_count": 10177796,
"reviews_count": 272857,
"distribution": { "one_star": 133619, "five_star": 5602217 }
}
}
}
著者プロフィールは経歴、ジャンル、総合評価を返します。著者の書誌、名言、Listopia のリストもそれぞれ同じ「id を入れると正規化された JSON が返る」という形式に従います。
{
"data": {
"id": "153394",
"name": "Suzanne Collins",
"birth_date": "August 11, 1962",
"genres": ["Fiction", "Science Fiction & Fantasy", "Young Adult"],
"average_rating": 4.3,
"ratings_count": 21497265
}
}
/goodreads/author/{id}/books は著者の全書誌をページングして取得し、/goodreads/book/{id}/editions はある作品の全ての版(フォーマット、出版社、ISBN、出版日)を返し、/goodreads/genre/{name} はジャンル棚の上位書籍を返し、/goodreads/list/{id} は Listopia のランキングを返します。書籍(あるいはレビュー、版)ごとに1行を保存し、スケジュールを組んで再実行しましょう。
収集できるもの
公開されている書籍・著者・リストのメタデータです。検索結果(id、タイトル、著者、評価、ページ数)、書籍詳細(説明、シリーズ、ジャンル、フォーマット、出版社、出版日、ISBN/ISBN13、平均評価と評価分布)、フォーマットごとの版情報、公開されている書籍レビュー(レビュアー、評価、本文、いいね/コメント数)、著者プロフィール(経歴、生年月日、ジャンル、総合評価)、著者の全著作リスト、著者の名言、ジャンル/棚別の書籍ランキング、そして Listopia のリストランキングです。あくまで公開データのみで、非公開の棚、読書進捗、アカウントレベルの情報は含みません。
制約とよくある課題
- 頼れる API が存在しない。 このシリーズのほとんどのプラットフォームと違って、スクレイピングのアプローチが破綻したときに切り替えられる公式エンドポイントがありません——Goodreads は2020年にデベロッパープログラムを廃止し、再開していません。
- robots.txt と利用規約の両方が自動アクセスを制限している。 どのプロジェクトも公開されている書籍・評価・レビューページに範囲を絞り、禁止されているパスを避け、レビュー全文を大量に再公開することは決してしないでください。
- Amazon 級のアンチボット対策。 素朴なリクエストやデータセンターの IP からのリクエストは、レート制限やブロックを受けると想定してください。
- 書籍ごとのファンアウト。 全レビューと全版はそれぞれ別々にページネーションされるため、完全な書籍レコードを得るには1回ではなく複数回の呼び出しが必要です。
- 公開データのみ。 これは Goodreads がすでに公開しているものを収集するだけであり、ログインウォールや非公開の棚データを回避する手段では決してありません。
どこで使われるか
- 読書アプリのカタログ — 正規のタイトル、著者、評価データを、書籍発見やトラッキング製品に紐付けられます。
- レコメンドエンジン — 評価データや棚分けパターンから「似ている本」やジャンルベースの発見機能を支えられます。
- 出版・評判リサーチ — 発売時やメディア化のニュースの前後で、あるタイトルの評価とレビューのトレンドを追跡できます。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップ不要です。
検索、書籍、著者の各エンドポイントをプレイグラウンドで試し、API ドキュメントでスキーマを確認し、料金をご覧ください。Goodreads は書籍における「創作物+公開レビュー」というパターンの代表例であり、同じ形を映画・テレビ向けに扱うのがIMDb、音楽向けに扱うのがDiscogsです。書籍以外の評判もトラッキングしたい場合は、Trustpilot レビューのスクレイピング方法がビジネス向けの同じ評価/レビューパターンを扱っています。あわせてウェブスクレイピング API の選び方とウェブスクレイピングは合法かもご覧ください。
よくある質問
Goodreads をスクレイピングするにはどうすればいいですか?
検索クエリや Goodreads の id を構造化 Goodreads API に送ると、書籍詳細、評価、レビュー、著者プロフィール、リストランキングを JSON として取得できます——ログインも HTML パースも不要です。
Goodreads に公開 API はありますか?
いいえ。Amazon は2020年12月8日に新規の Goodreads デベロッパー API キーの発行を停止し、それ以来プログラムを廃止し続けています——現在、公式 Goodreads API への合法的な経路は、有料であっても存在しません。
Goodreads をスクレイピングするのは合法ですか?
Goodreads の利用規約と robots.txt はどちらも自動収集を制限しています。公式 API がない以上、公開されている書籍・評価・レビューページに範囲を絞ってこれらの制限を尊重してスクレイピングすることが唯一のプログラム的な選択肢であり、大規模な商用利用には書面での許可を得てください。
Goodreads の書籍評価やレビューは取得できますか?
はい——書籍詳細エンドポイントは平均評価と評価分布の全体を返し、レビューエンドポイントはレビュアー、評価、本文、いいね/コメント数を含む公開レビューを返します。
著者の全著作を Goodreads からスクレイピングできますか?
はい——著者の書籍エンドポイントは、著者 id に紐づく全ての書籍を、プロフィールの経歴・ジャンル・総合評価とあわせてページングして取得します。
Goodreads のスクレイピングで取得できないものは何ですか?
公開データのみ取得可能です——非公開の棚、読書進捗、アカウントレベルの情報は取得できず、レビュー全文を大量に再公開することも決してすべきではありません。
Goodreads のスクレイピングは IMDb や Discogs と何が違いますか?
3つとも同じ「創作物+公開レビュー」というパターンに従います——映画・テレビ向けの IMDb、音楽向けの Discogs、書籍向けの Goodreads です。ただし Goodreads はこのシリーズの中で唯一、2020年以降まったく公式 API の代替手段を持たない点が特徴です。