Tony Wang6 Min. LesezeitApple Books scrapen 2026 (API & Python)
Apple Books 2026 scrapen — Ebooks & Audiobooks: Suche, Katalog, Reviews, Serien, Charts — DIY, No-Code oder eine strukturierte API.
Am schnellsten scrapst du Apple Books 2026, indem du eine strukturierte API aufrufst, die normalisiertes JSON zurückgibt — für die Ebook- und die Audiobook-Seite des Stores gleichermaßen — statt Apples Seiten selbst zu parsen. Apple Books deckt zwei parallele Kataloge (Books und Audiobooks) mit eigenen ids, Serien und Reviews ab, und Apple hat keine moderne Developer-API, die für die Katalog-Recherche durch Dritte gebaut wäre. Dieser Guide zeigt dir DIY, No-Code und eine strukturierte API, die beide Kataloge abdeckt, plus die rechtliche Realität vorweg.
Warum Apple Books scrapen?
Apple Books ist einer der größten Ebook- und Audiobook-Stores — das treibt an:
- Katalog-Anreicherung — Titel, Autor, Preis, ISBN und Rating-Daten an eine Lese-App, ein Vergleichstool oder einen internen Datensatz hängen.
- Ebook- vs. Audiobook-Preisrecherche — Preis und Format-Verfügbarkeit für denselben Title über beide Kataloge hinweg vergleichen.
- Rezeptions-Recherche — nachverfolgen, wie sich Rating und Rating-Verteilung eines Titles nach Release entwickeln.
- Serien- und Autor-Tracking — die komplette Lesereihenfolge einer Serie oder die Bibliografie eines Autors über Formate hinweg verfolgen.
- Chart- und Bestseller-Monitoring — Kategorie-Charts beobachten, um zu sehen, was bei Ebooks und Audiobooks gerade trendet.
Ist es legal, Apple Books zu scrapen?
Option 1: DIY in Python (und warum das scheitert)
Ein DIY-Ansatz heißt entweder, die ratenlimitierte iTunes Search API aufzurufen, oder Apple Books' serverseitig gerenderte Book- und Audiobook-Seiten direkt zu parsen:
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://books.apple.com/us/book/harry-potter-and-the-sorcerers-stone-enhanced-edition/id1037193578",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Rating, price, and description live in embedded JSON that shifts
# across Apple's storefront redesigns — and reviews load separately
Es funktioniert in der Demo und geht dann kaputt:
- Zwei Kataloge, zwei id-Räume. Books und Audiobooks sind getrennte Objekte mit getrennten ids, Serien und Review-Threads — ein Title, der in beiden Formaten verfügbar ist, braucht zwei Lookups, nicht einen.
- Die iTunes Search API allein reicht nicht. Sie ist auf rund 20 Calls/Minute gedeckelt, und ihre Book-/Audiobook-Payloads sind dünner als das, was die Live-Storefront-Seiten zeigen (keine Reviews, keine ähnlichen Titles, fehlende Felder wie die Audiobook-Dauer).
robots.txtblockiert zentrale Pfade.books.apple.com/robots.txtverbietet/WebObjects/*und/v1/catalog/*für alle Crawler.- Reviews, ähnliche Titles und Serien paginieren oder laden jeweils separat. Ein vollständiger Title-Datensatz bedeutet mehrere Requests, nicht ein Page-Load.
Option 2: No-Code-Tools
Manche No-Code-Scraper-Marktplätze und Browser-Extensions bieten fertige Apple-Books- oder iTunes-Storefront-Vorlagen für einmalige Exporte — okay, um eine Handvoll Titles per Hand zu ziehen. Auf einem Zeitplan gegen zwei Kataloge gleichzeitig zu laufen, ist damit umständlich, sie liefern keinen sauberen Ebook-/Audiobook-Datenvertrag, und sie tragen dasselbe ToS-Risiko wie ein DIY-Skript, weil sie darunter dieselben Seiten scrapen.
Option 3: Eine strukturierte Apple-Books-API
Für einen wiederholbaren, berechtigungsgerechten Workflow liefert eine Apple Books scraping API normalisiertes JSON über beide Kataloge hinweg, ohne dass du Page-Parsing pflegen musst. Search deckt standardmäßig Ebooks ab; Audiobooks haben einen parallelen Search-Endpoint:
curl "https://api.crawlora.net/api/v1/apple-books/search?term=harry+potter&country=us" \
-H "x-api-key: $CRAWLORA_API_KEY"
curl "https://api.crawlora.net/api/v1/apple-books/audiobook/search?term=harry+potter&country=us" \
-H "x-api-key: $CRAWLORA_API_KEY"
Löse dann die id auf und hole in Python Detail, Reviews und ähnliche Titles — dieselbe Form für Books und Audiobooks:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/apple-books"
book_hits = requests.get(f"{base}/search", headers=h, params={"term": "harry potter"}).json()["data"]
book_id = book_hits[0]["id"]
book = requests.get(f"{base}/book/{book_id}", headers=h).json()["data"]
book_reviews = requests.get(f"{base}/book/{book_id}/reviews", headers=h, params={"limit": 20}).json()["data"]
audio_hits = requests.get(f"{base}/audiobook/search", headers=h, params={"term": "harry potter"}).json()["data"]
audiobook_id = audio_hits[0]["id"]
audiobook = requests.get(f"{base}/audiobook/{audiobook_id}", headers=h).json()["data"]
Book-Detail ist normalisiertes JSON (echte Felder — check die docs):
{
"code": 200,
"msg": "OK",
"data": {
"id": 1037193578,
"name": "Harry Potter and the Sorcerer's Stone (Enhanced Edition)",
"url": "https://books.apple.com/us/book/harry-potter-and-the-sorcerers-stone-enhanced-edition/id1037193578",
"artist_id": 79595314,
"artist_name": "J.K. Rowling",
"genres": ["Fiction & Literature", "Fantasy"],
"isbn": "9781781105849",
"publisher": "Pottermore Publishing",
"page_count": 309,
"release_date": "2015-11-20T08:00:00Z",
"price": 11.99,
"currency": "USD",
"rating": 4.7,
"rating_count": 10686,
"rating_histogram": { "1": 348, "2": 211, "3": 339, "4": 934, "5": 8854 },
"series_id": 1044374793,
"series_name": "The Harry Potter Series",
"series_sequence": "1"
}
}
Das Audiobook desselben Titles liefert die parallele Form, plus Narrator und Dauer:
{
"code": 200,
"msg": "OK",
"data": {
"id": 1442174040,
"name": "Harry Potter and the Sorcerer's Stone",
"url": "https://books.apple.com/us/audiobook/harry-potter-and-the-sorcerers-stone/id1442174040",
"artist_id": 79595314,
"artist_name": "J.K. Rowling",
"narrator": "Jim Dale",
"duration_seconds": 29898,
"provider": "Pottermore Publishing",
"price": 25.99,
"currency": "USD",
"rating": 4.5,
"rating_count": 10639,
"series_id": 6442645726,
"series_name": "The Harry Potter Series",
"book_id": 1037193578
}
}
Beachte die Querverweise book_id / series_id — ein Audiobook-Datensatz verlinkt zurück zu seinem Ebook-Pendant und zu seiner eigenen Audiobook-Serie, denn /apple-books/series/{id} (Ebook-Serie) und /apple-books/audiobook-series/{id} sind getrennte Endpoints. /apple-books/book/{id}/similar, /apple-books/audiobook/{id}/similar, /apple-books/author/{id} und /apple-books/charts (mit collection- und genre-Filtern) runden das Muster ab — id oder Query rein, normalisiertes JSON raus. Speichere eine Zeile pro Book (oder pro Audiobook, pro Review) und lass es nach Zeitplan erneut laufen.
Was du sammeln kannst
Öffentliche Katalog- und Review-Metadaten über beide Formate hinweg: Suchergebnisse (id, Title, Autor, Genres, Preis, Rating); Book-Detail (Beschreibung, ISBN, Publisher, Seitenzahl, Zielgruppe, Serie, Rating-Verteilung); Audiobook-Detail (Narrator, Dauer, Provider, Serie, verlinkte book_id); paginierte Kundenreviews für Books und Audiobooks (Rating, Titel, Text, Reviewer-Name, Datum); ähnliche Titles für Books und Audiobooks; Autor-Profile (Bio, Genres, Book- und Audiobook-Listen); Ebook-Serien- und Audiobook-Serien-Listings; und Chart-Rankings nach Collection und Genre. Nur öffentliche Daten — kein Inhalt aus gekauften Bibliotheken, Accounts oder DRM-geschützten Dateien.
Grenzen und typische Herausforderungen
- Keine moderne Developer-API für die Katalog-Recherche. Die veraltete iTunes Search API existiert, ist aber ratenlimitiert und dünner als die Live-Storefront bei Feldern wie Audiobook-Dauer und Reviews.
- Die Bedingungen schränken automatisierten Zugriff ausdrücklich ein. Beschränke jedes Projekt auf öffentliche Katalog- und Review-Seiten, meide die per
robots.txtgesperrten Pfade, und republiziere nie vollständige Review-Texte im großen Stil. - Zwei parallele Kataloge. Books und Audiobooks haben getrennte ids, Serien und Review-Threads — ein Title in beiden Formaten bedeutet zwei vollständige Lookups, nicht einen.
- Fan-out pro Title. Reviews und ähnliche Titles laden jeweils separat, ein vollständiger Title-Datensatz bedeutet also mehrere Calls.
- Personenbezogene Daten in Reviews. Reviewer-Namen und -Text sind personenbezogene Daten nach DSGVO/CCPA — sammle nur, was nötig ist, und handhabe es entsprechend.
Wo das eingesetzt wird
- Kataloge von Lese- und Hör-Apps — Titel, Preis und Rating-Daten an ein Discovery- oder Vergleichsprodukt hängen.
- Format-Preisrecherche — Ebook- vs. Audiobook-Preise und -Verfügbarkeit für denselben Title vergleichen.
- Publishing- und Rezeptions-Recherche — Rating-Trends eines Titles rund um Launch, Serienabschluss oder eine Medien-Verwertung nachverfolgen.
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 blockiert — ohne Anmeldung.
Teste die Search-, Book- und Audiobook-Endpoints im Playground, sieh dir das Schema in den API docs an und wirf einen Blick aufs pricing. Apple Books ist die Storefront-/Commerce-Seite von Büchern — Katalog, Preise und Charts; Goodreads ist die Community-/Review-Seite desselben Bücher-Verticals, kombiniere die beiden also für Katalog plus Leser-Sentiment. Wenn du bereits mit Apples anderen iTunes-Lookup-Katalogen arbeitest, deckt how to scrape Apple Podcasts dasselbe id-rein-JSON-raus-Muster für Shows und Episoden ab. Siehe auch how to choose a web scraping API und is web scraping legal.
Häufig gestellte Fragen
Wie scrape ich Apple Books?
Schick einen Suchbegriff oder eine Apple-Books-id an die Crawlora-Apple-Books-Endpoints und erhalte Ebook- und Audiobook-Katalog-, Review- und Chart-Daten als strukturiertes JSON — ohne Apple-ID oder App-Registrierung. Sammle nur öffentliche Daten und respektiere Apples Bedingungen.
Hat Apple eine öffentliche API für Apple Books?
Keine moderne für die Katalog-Recherche durch Dritte. Die veraltete iTunes Search API deckt Books und Audiobooks ab, ist aber auf rund 20 Calls/Minute ratenlimitiert und lässt Felder wie die Audiobook-Dauer weg, die das Scrapen der Live-Storefront liefert.
Kann ich Ebook- und Audiobook-Daten für denselben Title bekommen?
Ja. Books und Audiobooks sind getrennte id-Räume mit parallelen Endpoints (/apple-books/book/{id} und /apple-books/audiobook/{id}); ein Audiobook-Datensatz enthält einen book_id-Querverweis zurück zu seinem Ebook-Pendant.
Kann ich durch Apple-Books-Reviews blättern?
Ja. /apple-books/book/{id}/reviews und /apple-books/audiobook/{id}/reviews paginieren beide über die erste Seite hinaus per page- und limit-Query-Parametern.
Ist es legal, Apple Books zu scrapen?
Apples Website Terms of Use und Media Services Terms verbieten beide automatisiertes Scraping und Data-Mining ohne schriftliche Zustimmung. Öffentliche Katalog- und Review-Daten eng begrenzt zu sammeln und dabei robots.txt und Rate-Limits zu respektieren, ist risikoärmer als Massensammlung oder das Republizieren vollständiger Review-Texte — das ist aber keine Rechtsberatung.
Welche Felder liefert das Apple-Books-Book-Detail?
Titel, Autor, ISBN, Publisher, Seitenzahl, Genres, Preis, Währung, Release-Datum, Rating, Rating-Verteilung und, wo zutreffend, Serie-id/-Name/-Reihenfolge.
Was ist der Unterschied zwischen /apple-books/series und /apple-books/audiobook-series?
Das sind getrennte Endpoints für die zwei Kataloge: /apple-books/series/{id} listet die Books einer Ebook-Serie in Lesereihenfolge, während /apple-books/audiobook-series/{id} die Audiobooks der Audiobook-Serie mit Narratoren listet.