Tony Wang7 Min. LesezeitAnime-Daten scrapen 2026 (API & Python)
Anime-Daten scrapen 2026 – Suche, Titles, Characters, Staff, Rankings, Ausstrahlungspläne – DIY, No-Code oder API, inkl. rechtlicher Lage.
Am schnellsten scrapst du Anime-Daten 2026, indem du eine strukturierte API aufrufst, die normalisiertes JSON zurückgibt — Titelsuche, Episoden-/Format-Details, Character- und Staff-Credits, Empfehlungen, Rankings und den Ausstrahlungsplan — statt selbst GraphQL-Queries zu bauen oder HTML zu parsen. Anime-Metadaten leben nicht hinter der API einer einzelnen offiziellen Marke, wie das bei Filmdaten mit TMDB der Fall ist: Die beiden Community-Kataloge, auf denen die meisten Seiten und Apps tatsächlich aufbauen, sind AniList (eine kostenlose öffentliche GraphQL-API) und MyAnimeList (eine offizielle, aber gated Beta-REST-API, plus der weit verbreitete inoffizielle Jikan-Wrapper). Dieser Guide zeigt dir, was jede Quelle wirklich bietet, einen DIY-Ansatz und wo er scheitert, sowie eine strukturierte API, die dieselbe Datenform als schlichtes JSON liefert.
Warum Anime-Daten scrapen?
- Discovery- und Empfehlungs-Apps — „wenn dir X gefallen hat"-Vorschläge über Title-zu-Title-Empfehlungsgraphen und geteilte Staff-/Studio-Credits ausspielen.
- Fan-Community-Tools — Wiki-Bots, Discord-Companions und Tracker-Sync-Tools, die Character-Bios, Staff-Rollen und Ausstrahlungsdaten auf Abruf brauchen.
- Streaming-Katalog-Recherche — abgleichen, zu welchem Studio, welcher Season und welchem Format (TV, ONA, Movie) ein Title gehört, wenn du Kataloge plattformübergreifend abbildest.
- Markt- und Trend-Recherche — verfolgen, welche Genres und Formate in Season-Popularität und Score-Rankings gerade aufsteigen.
- AI-/LLM-Pipelines — belastbare Wissensbasen aus Titles, Characters und Staff für Chatbots und Retrieval-Augmented-Apps aufbauen, statt dich auf Modell-Wissen zu verlassen, das bei Nischen- oder aktuellen Titles häufig falsch liegt.
Ist es legal, Anime-Daten zu scrapen?
Option 1: DIY in Python (und warum das scheitert)
AniLists öffentliche Daten laufen über GraphQL, ein DIY-Pull heißt also: eine Query bauen und posten, nicht HTML abrufen:
import requests
query = """
query ($search: String) {
Media(search: $search, type: ANIME) {
id
idMal
title { romaji english native }
format
status
averageScore
genres
}
}
"""
resp = requests.post(
"https://graphql.anilist.co",
json={"query": query, "variables": {"search": "Frieren"}},
headers={"Content-Type": "application/json"},
)
data = resp.json()["data"]["Media"]
Für einen einzelnen Lookup funktioniert das, aber bei echtem Volumen bricht es zusammen:
- GraphQL-Schema-Tiefe. Characters, Staff und Empfehlungen sind jeweils eigene verschachtelte Query-Fragmente mit eigener Pagination — ein vollständiger Title-Record heißt: mehrere Query-Formen schreiben (und pflegen), nicht einen Endpoint.
- Das 90-Req/Min-Limit wird durchgesetzt, nicht nur empfohlen. Burst-Traffic bekommt ein einminütiges Timeout, und anhaltender Missbrauch riskiert einen IP-Block — ein Scraper, der pro Title mehrere Requests abfeuert, stößt schnell dagegen.
- MAL-Abgleich ist eine zweite Quelle. AniLists Feld
idMalverweist auf eine MyAnimeList-ID, aber MAL-seitige Felder (wie MALs eigenen Score oder Ranking) zu bekommen, heißt: ein zweiter Call an MALs gated offizielle API oder den inoffiziellen Jikan-Wrapper, jeweils mit eigenem Rate-Limit und eigener Response-Form. - Kein Ausstrahlungsplan-Endpoint out of the box. Einen „was läuft als Nächstes"-Feed zu bauen heißt: die Query
Page.airingSchedulespaginieren und Unix-Timestamps selbst abgleichen.
Option 2: No-Code-/Fertig-Tools
Die inoffizielle Jikan-REST-API ist die verbreitetste No-Code-nahe Option — sie kapselt MyAnimeLists öffentliche Seiten als JSON mit dokumentierten Endpoints und rund 60 Requests/Minute, und darauf bauen mehrere Sprach-Wrapper auf. Sie ist für Prototypen und kleine Hobbyprojekte wirklich nützlich, ist aber community-betriebene Infrastruktur ohne SLA, und sowohl sie als auch Marketplace-Scraper-Actors tragen dieselbe Rate-Limit- und Bedingungen-Exposure, die oben beschrieben ist. Für eine Pipeline, die planmäßig laufen soll, ohne die Uptime eines Dritten im Blick behalten zu müssen, ist eine strukturierte API die belastbarere Option.
Option 3: Eine strukturierte Anime-API
Crawloras Anime-Daten-API liefert normalisiertes JSON für Suche, Title-Details, Characters, Staff, Empfehlungen, Rankings und den Ausstrahlungsplan — ein API-Key, eine Response-Form, kein GraphQL-Query-Bauen. Einen Title suchen:
curl "https://api.crawlora.net/api/v1/anime/search?query=Frieren" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "Frieren",
"results": [
{
"id": 154587,
"id_mal": 52991,
"type": "ANIME",
"title": { "romaji": "Sousou no Frieren", "english": "Frieren: Beyond Journey's End" },
"format": "TV",
"status": "FINISHED",
"average_score": 91,
"popularity": 456965,
"episodes": 28,
"season": "FALL",
"season_year": 2023,
"genres": ["Adventure", "Drama", "Fantasy"],
"studios": ["MADHOUSE"]
}
]
}
}
Title-Details, Characters, Staff und Empfehlungen per ID in Python abrufen:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/anime"
title_id = 154587
title = requests.get(f"{base}/title/{title_id}", headers=h).json()["data"]
characters = requests.get(f"{base}/title/{title_id}/characters", headers=h).json()["data"]
staff = requests.get(f"{base}/title/{title_id}/staff", headers=h).json()["data"]
recs = requests.get(f"{base}/title/{title_id}/recommendations", headers=h).json()["data"]
Die Title-Details enthalten den vollständigen Record, inklusive der cross-referenzierten MAL-ID (echte Felder — prüfe die docs):
{
"id": 154587,
"id_mal": 52991,
"title": { "romaji": "Sousou no Frieren", "english": "Frieren: Beyond Journey's End", "native": "葬送のフリーレン" },
"format": "TV",
"average_score": 91,
"popularity": 456965,
"favourites": 54038,
"season": "FALL",
"season_year": 2023,
"episodes": 28,
"genres": ["Adventure", "Drama", "Fantasy"],
"tags": [{ "name": "Elf", "rank": 91, "category": "Cast-Main Cast" }],
"studios": ["MADHOUSE"]
}
Character- und Staff-Lookups folgen derselben Form — /anime/character/search?query=Frieren liefert passende Characters mit favourites-Zahlen, und /anime/character/{id} liefert die Media-Auftritte eines einzelnen Characters. Rankings und der Ausstrahlungsplan sind paginierte Feeds:
curl "https://api.crawlora.net/api/v1/anime/rankings?sort=POPULARITY_DESC&format=TV&genre=Fantasy" \
-H "x-api-key: $CRAWLORA_API_KEY"
curl "https://api.crawlora.net/api/v1/anime/airing-schedule?page=1&per_page=20" \
-H "x-api-key: $CRAWLORA_API_KEY"
Speichere eine Zeile pro Title (oder pro Character, pro Ranking-Snapshot) und lass es nach Zeitplan erneut laufen, statt eine GraphQL-Verbindung dauerhaft offenzuhalten.
Was du sammeln kannst
Öffentliche Katalog-Metadaten: Suchergebnisse (romaji/englische/native Titles, Format, Status, Score, Popularität, Episodenzahl, Season, Genres, Studios); vollständige Title-Details mit der cross-referenzierten MyAnimeList-ID; Character-Records (Name, nativer Name, Favourites-Zahl, Media-Auftritte); Staff-Records (Name, Rolle, Occupations); Title-zu-Title-Empfehlungen mit Rating-Gewicht; nach Genre/Format/Season/Status gefilterte Rankings; und den paginierten Ausstrahlungsplan (Episodennummer, Ausstrahlungszeit, verbleibende Zeit bis zur Ausstrahlung). Nur öffentliche Daten — nie private User-Listen, Watch-/Read-History oder massenhaft weiterveröffentlichte User-Reviews.
Grenzen
- Echte Rate-Limits, keine freundlichen Vorschläge. AniList setzt 90 Req/Min mit einem Burst-Limiter durch und blockt missbräuchlichen Traffic per IP; Jikan setzt sein eigenes Minuten-Limit durch — plane Pagination und Caching um beide herum.
- Zwei IDs, zwei Quellen der Wahrheit. AniList-IDs und MyAnimeList-IDs sind unterschiedliche Nummerierungssysteme, die über
id_mal/idMalcross-referenziert werden — geh nicht davon aus, dass sie austauschbar sind, wenn du mit anderen Datensätzen zusammenführst. - Kommerzielle-Nutzungs-Bedingungen sind explizit. AniLists API ist kostenlos unter 150 $/Monat Umsatz und braucht darüber eine kommerzielle Lizenz; MALs offizielle API braucht eine registrierte Client-ID und, für user-scoped Aktionen, OAuth.
- Kein Bulk-Export oder Backup-Nutzung. Behandle beide Quellen als Query-on-Demand-Kataloge, nicht als etwas, das du komplett in deine eigene Datenbank spiegelst.
- Community-gepflegte Daten haben Lücken und Änderungen. Scores, Tags und sogar Titles können sich ändern, wenn Community-Moderatoren Einträge aktualisieren — behandle keinen einzelnen Snapshot als dauerhaft verbindlich.
Wo das eingesetzt wird
- Empfehlungs- und Discovery-Features — „ähnliche Titles" und Staff-/Studio-basierte „wenn dir X gefallen hat"-Oberflächen.
- Season- und Genre-Trend-Tracking — Rankings gefiltert nach Season, Format und Genre für Markt-Recherche.
- Fan-Tools und Bots — Character-Lookups, Staff-Credits und Ausstrahlungs-Reminder für Community-Apps.
- Cross-Katalog-Abgleich — Anime-Titles gegen Streaming-Verfügbarkeits- oder Review-Datensätze über die MAL-Cross-Reference-ID abgleichen.
Sources
Leg los mit dem Sammeln
Probier es zuerst kostenlos aus: jage eine beliebige öffentliche URL durch den Free Web Scraper, oder prüfe mit dem Anti-Bot Checker, ob eine Seite Bots blockt — ohne Anmeldung.
Teste die Search-, Title- und Character-Endpoints im Playground, sieh dir das Schema in den API docs an und wirf einen Blick aufs pricing. Anime-Metadaten passen natürlich zum Rest der Katalog-Serie — hol dir Streaming-Verfügbarkeit mit einer JustWatch API, gleich Film- und TV-Metadaten mit how to scrape TMDB ab, oder verfolge Community-Ratings so, wie es how to scrape Letterboxd für Filme macht, um eine vollständigere Pipeline aus „was läuft, wo man's schauen kann und was die Leute davon halten" zu bauen. Siehe auch is web scraping legal.
Häufig gestellte Fragen
Gibt es eine offizielle Anime-Datenbank-API?
Nicht eine einzelne offizielle Marken-API, wie das bei Filmen mit TMDB der Fall ist. AniList betreibt eine kostenlose öffentliche GraphQL-API mit community-gepflegten Metadaten, und MyAnimeList betreibt seine eigene offizielle REST-API (v2, noch als Beta gekennzeichnet), die für öffentliche Reads eine registrierte Client-ID und für user-scoped Aktionen OAuth verlangt. Das inoffizielle Jikan-Projekt kapselt MyAnimeLists öffentliche Seiten als kostenlose REST-API.
Darf ich AniList oder MyAnimeList kommerziell scrapen?
AniLists API-Bedingungen erlauben kommerzielle Nutzung kostenlos unter 150 $ Umsatz pro Monat; darüber ist eine kommerzielle Lizenz nötig. AniList verbietet zudem strikt massenhaftes Daten-Horten, die Nutzung der API als Backup-/Speicherebene und den Aufbau eines konkurrierenden Anime-/Manga-List- oder Tracker-Dienstes ohne Genehmigung. Lies die tatsächlichen Bedingungen, bevor du etwas Kommerzielles baust, und behandle diesen Guide als allgemeine Information, nicht als Rechtsberatung.
Welche Rate-Limits gelten für Anime-Daten-APIs?
AniList setzt rund 90 Requests pro Minute mit einem Burst-Limiter durch und kann eine missbräuchliche IP-Adresse vorübergehend blocken. Der inoffizielle Jikan-Wrapper um MyAnimeList zielt auf eine ähnliche Größenordnung, rund 60 Requests pro Minute. Beide liefern 429-Responses, wenn du das Limit überschreitest — Pagination und Caching sollten das berücksichtigen.
Was ist das Feld id_mal in Anime-API-Responses?
Es ist eine Cross-Reference zur ID des Titles auf MyAnimeList, einem separaten Katalog mit eigenem Nummerierungssystem. AniList vergibt seine eigenen internen IDs und liefert idMal (bzw. id_mal) mit, damit ein Title über beide Datenbanken hinweg zugeordnet werden kann — die beiden ID-Systeme sind nicht austauschbar.
Welche Anime-Daten kann ich über eine strukturierte API sammeln?
Typische Felder sind Suchergebnisse (romaji, englische und native Titles, Format, Status, Score, Popularität, Episodenzahl, Season, Genres, Studios), vollständige Title-Details mit der MyAnimeList-Cross-Reference-ID, Character-Records mit Favourites-Zahlen und Media-Auftritten, Staff-Records mit Rollen, Title-zu-Title-Empfehlungen, nach Genre/Format/Season gefilterte Rankings und der paginierte Ausstrahlungsplan.
Kann ich private MyAnimeList- oder AniList-User-Listendaten scrapen?
Nein. Dieser Guide behandelt ausschließlich öffentliche Katalogdaten — Title-Metadaten, Characters, Staff-Credits, Rankings und Ausstrahlungspläne, die ohnehin öffentlich gezeigt werden. Private User-Listen, Watch-History und user-scoped Aktionen erfordern die eigene OAuth-Autorisierung des Account-Inhabers und liegen außerhalb des Rahmens von öffentlichem Scraping.
Warum eine strukturierte Anime-API statt AniLists GraphQL-API direkt?
Eine strukturierte API wie die von Crawlora liefert dieselben zugrunde liegenden Katalogdaten als flaches, normalisiertes JSON für Suche, Title-Details, Characters, Staff, Empfehlungen, Rankings und Ausstrahlungspläne — kein GraphQL-Query-Bauen, keine separaten paginierten Query-Fragmente pro Ressource zu pflegen, und eine einzige Rate-Limit- und Billing-Beziehung, statt AniList und eine zweite MAL-seitige Quelle zu jonglieren.