Tony Wang6 分で読めますマンガデータのスクレイピング方法(2026年版・API & Python)
2026年にマンガのカタログデータ——タイトル、スコア、ジャンル、AniList の公開データベースによるランキング——をスクレイピングする方法。DIY、ノーコード、構造化 API を解説します。
2026年にマンガのカタログデータをスクレイピングする最も手早い方法は、HTML をパースしたり、レート制限のかかった GraphQL エンドポイントを自前で回避したりする代わりに、タイトル、スコア、ジャンル、ランキングのデータを正規化された JSON として返す構造化 API を呼び出すことです。このガイドでは DIY、ノーコード、構造化 API の3つを取り上げ、データが実際どこから来ているのか、そしてその範囲がどれだけ狭いのかを正直に解説します。
なぜマンガのデータをスクレイピングするのか?
- 発見・レコメンドアプリ — 正規のタイトル、スコア、ジャンルのデータをマンガトラッカーや「次に読むべき作品」機能に紐付けられます。
- 読書リスト・カタログツール — 手入力の代わりに、正規化されたタイトルのメタデータで個人用またはアプリ側のライブラリを拡充できます。
- 市場・トレンドリサーチ — 人気度やスコアによるランキングを追い、あるジャンルやフォーマットで何が伸びているかを把握できます。
- ファンコミュニティ向けツール — ファンサイトの Wiki をスクレイピングする代わりに、一貫したタイトルデータで Discord ボットや Wiki、ファンサイトを動かせます。
- AI/LLM パイプライン — 古くなった学習データのスナップショットの代わりに、実際のタイトル、ジャンル、スコアのデータでチャットボットやレコメンドモデルを裏付けられます。
マンガのデータをスクレイピングするのは合法か?
選択肢1: Python で DIY する(そしてなぜ破綻するか)
AniList は公開の GraphQL エンドポイントを公開しているため、DIY スクリプトは HTML をパースする代わりに GraphQL クエリを POST することになります。
import requests
query = """
query ($search: String) {
Media(search: $search, type: MANGA) {
id
idMal
title { romaji native }
averageScore
genres
}
}
"""
resp = requests.post(
"https://graphql.anilist.co",
json={"query": query, "variables": {"search": "Berserk"}},
)
data = resp.json()["data"]["Media"]
デモは動きますが、その後本番環境で破綻します。
- 現在は1分あたり30リクエストという上限があります。 AniList の通常の上限は1分あたり90リクエストですが、現在は API が劣化した状態にあり1分あたり30リクエストに制限されています——高い方の数値を前提に書かれたバッチジョブはすぐに
429 Too Many Requestsを返し始めます。 - 利用規約が大量収集そのものを禁止しています。 「データの大量収集・ため込み」と「バックアップやデータストレージサービスとしての API 利用」はいずれも明確に禁止されており、何も考えずに全件クロールするスクリプトは、レート制限にかかる前に利用規約違反になります。
- GraphQL クエリの設計自体が保守の負担になります。 欲しいフィールドはすべてクエリに明示しなければならず、ネストしたフィールド(キャラクター、スタッフ、関連作品)にはそれぞれ独自のサブセレクションが必要で、タイプミス一つでリクエスト全体が失敗します——緩やかに劣化することはありません。
- 一括エクスポートの手段がありません。 バルクダウンロードやダンプ用のエンドポイントは存在せず、すべてのタイトルを id か検索クエリで1件ずつ、レート制限の範囲内で取得する必要があります。
選択肢2: ノーコード/既製ツール
一部のノーコードのスクレイパーマーケットプレイスやブラウザ拡張機能は、単発のエクスポート向けに構築済みの AniList/マンガ用テンプレートを提供しています——個人の読書リストや少数のタイトルをスプレッドシートに取り込むには十分です。スケジュール実行には扱いにくく、安定したデータ契約も得られず、内部では同じ公開 API を呼び出しているため、依然として1分あたり30〜90リクエストという同じ上限と利用規約の制約を受けます。
選択肢3: 構造化されたマンガ API
GraphQL クエリの組み立てやレート制限の管理が不要な、繰り返し実行できるワークフローには、Manga API が検索・タイトル詳細・ランキングの3つのエンドポイントにわたって正規化された JSON を返します。まずタイトルを検索して id を取得します。
curl "https://api.crawlora.net/api/v1/manga/search?query=Berserk" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "Berserk",
"page": 1,
"per_page": 10,
"total": 50,
"has_next_page": true,
"results": [
{
"id": 30002,
"id_mal": 2,
"type": "MANGA",
"title": { "romaji": "Berserk" },
"format": "MANGA",
"status": "RELEASING",
"average_score": 92,
"genres": ["Action", "Adventure", "Fantasy", "Horror"],
"site_url": "https://anilist.co/manga/30002"
}
]
}
}
続いて、その id を使ってタイトルの完全なレコードを Python で取得します。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/manga"
hits = requests.get(f"{base}/search", headers=h, params={"query": "Berserk"}).json()["data"]["results"]
manga_id = hits[0]["id"]
title = requests.get(f"{base}/title/{manga_id}", headers=h).json()["data"]
タイトル詳細(実際のフィールドです——ドキュメントを確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"id": 30002,
"id_mal": 2,
"type": "MANGA",
"title": { "romaji": "Berserk", "native": "ベルセルク" },
"format": "MANGA",
"status": "RELEASING",
"average_score": 92,
"favourites": 60000,
"genres": ["Action", "Adventure", "Drama", "Fantasy", "Horror", "Psychological"],
"site_url": "https://anilist.co/manga/30002"
}
}
/manga/rankings は単一のタイトルではなく、ソート・ページネーション可能なチャートを返します。
curl "https://api.crawlora.net/api/v1/manga/rankings?sort=POPULARITY_DESC&format=MANGA&page=1&per_page=20" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"sort": "POPULARITY_DESC",
"format": "MANGA",
"page": 1,
"per_page": 20,
"total": 5000,
"has_next_page": true,
"results": [
{
"id": 105398,
"title": { "romaji": "Chainsaw Man" },
"format": "MANGA",
"average_score": 84
}
]
}
}
rankings をスケジュール実行してページを送りながら、あるジャンルやフォーマットの人気度チャートの推移を追跡できます。また、どの結果からも id_mal を解決して、MAL をキーとするデータセットと結合できます。
収集できるもの
- 検索結果 — id、MAL クロスリファレンス id、タイトル(ローマ字/原語表記)、フォーマット、ステータス、平均スコア、ジャンル、参照元 URL。
- タイトル詳細 — 検索結果と同じフィールドに加えて、お気に入り登録数。
- ランキング — 人気度・スコア・トレンド別にソートでき、フォーマット・ジャンル・ステータスで絞り込める、ページネーション対応のチャート。
制約
- 本当に限られた範囲です。 これは検索・タイトル詳細・ランキングの3エンドポイントであり、フルカタログ API ではありません。チャプターリスト、巻・チャプターの本文、キャラクターやスタッフのデータ、レコメンドエンドポイントはありません(姉妹版のAnime APIはアニメ作品についてキャラクター・スタッフ・レコメンドをカバーしていますが、マンガ側にはその深さはありません)。
- ユーザーデータは一切ありません。 読書リスト、読書進捗、レビュー、コメントはいずれもなく、あくまでカタログのメタデータのみです。
- 上流のレート制限を引き継ぎます。 基盤となるソースは現在1分あたり30リクエストに制限されており、高頻度のバッチジョブにもこの上限が適用されると想定してください。
- 一括エクスポートはありません。 すべてのタイトルは検索または id によるルックアップから取得するもので、ダンプや全カタログのダウンロードはありません。
- 公開データのみです。 これは AniList の公開カタログがすでに示している内容を返すだけであり、チャプター画像や著作権のあるマンガ本文そのものを取得する手段では決してありません。
どこで使われるか
- マンガの発見・トラッカーアプリ — 正規のタイトル、スコア、ジャンルのデータを読書リストやレコメンド機能に紐付けられます。
- トレンド・ランキングダッシュボード — フォーマットやジャンルごとに、人気度やスコアのチャートが時間とともにどう動くかを追跡できます。
- ファンコミュニティのボットや Wiki — 手作業で維持するリストの代わりに、一貫したタイトルデータで Discord ボットや Wiki のルックアップを支えられます。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップ不要です。
検索・タイトル・ランキングの各エンドポイントをプレイグラウンドで試し、API ドキュメントでスキーマを確認し、料金をご覧ください。マンガは「創作物+カタログメタデータ」という読書データ向けのパターンの一例であり、同じ形を書籍向けに扱うのがGoodreads、音楽リリース向けに扱うのがDiscogsです。あわせてウェブスクレイピングは合法かもご覧ください。
よくある質問
Crawlora のマンガデータはどこから来ていますか?
このカタログのフィールド——id_mal というクロスリファレンス id、ローマ字/原語表記のタイトル、average_score、anilist.co を指す site_url——は、AniList の公開 GraphQL マンガデータベースと一致しており、AniList 自体が MyAnimeList(MAL)の id と紐付けています。独自のカタログではありません。
API でマンガのデータをスクレイピングするにはどうすればいいですか?
まず GET /manga/search にクエリを渡して id と id_mal を取得し、次に GET /manga/title/{id} で詳細を取得するか、GET /manga/rankings でページネーション・ソート対応の人気度またはスコアのチャートを取得します。3つのエンドポイントはすべて x-api-key ヘッダー付きで正規化された JSON を返します。
この API はチャプター、チャプター本文、リーダー機能をカバーしていますか?
いいえ。これは検索・タイトル詳細・ランキングのみという、本当に限られた3エンドポイントの範囲です。チャプターリスト、チャプターや巻の本文、キャラクター/スタッフのデータ、レコメンドエンドポイントはありません。
この API からマンガの MyAnimeList(MAL)id を取得できますか?
はい。検索結果とタイトル詳細結果のいずれも id_mal を返すため、この AniList 由来のカタログを MAL をキーとするデータセットと結合できます。
マンガデータにレート制限はありますか?
基盤となる AniList API は通常1分あたり90リクエストに制限されていますが、現在は劣化した状態で1分あたり30リクエストで稼働しています。利用規約も API をバックアップ/ストレージサービスとして使うことや、データの大量収集を禁止しているため、フルデータベースのミラーリングではなく、妥当な量のカタログアクセスとして扱ってください。
この API からユーザーの読書リストやレビューを取得できますか?
いいえ。これは公開カタログのメタデータのみを返します——タイトル、スコア、ジャンル、フォーマット、人気度です。読書リスト、読書進捗、レビュー、コメントのデータはありません。
マンガのカタログデータをスクレイピングするのは合法ですか?
公開されているマンガのカタログメタデータ(タイトル、スコア、ジャンル)を収集すること自体は、提供元の利用規約とレート制限を守っている限り、一般的には許容されます。AniList の規約は非商用利用および小規模な商用利用を無料で許可していますが、データの大量収集は禁止しています——これは法的助言ではありません。一般的な枠組みについては「ウェブスクレイピングは合法か」を参照してください。