Call the hosted Open Library Scraper from Python with the official apify-client.
pip install apify-clientfrom apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/openlibrary-scraper").call(run_input={
"mode": "search",
"query": "science fiction",
"maxResults": 500,
})
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(f"Got {len(items)} books")
for b in items[:5]:
print(b["title"], "—", b["authors"], "★", b.get("ratingsAverage"))import pandas as pd
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/openlibrary-scraper").call(run_input={
"mode": "subject",
"subject": "science_fiction",
"maxResults": 2000,
})
df = pd.DataFrame(client.dataset(run["defaultDatasetId"]).iterate_items())
top = df[df["ratingsCount"].fillna(0) > 100].sort_values("ratingsAverage", ascending=False)
print(top[["title", "authors", "ratingsAverage", "ratingsCount"]].head(10))
df.to_csv("scifi_books.csv", index=False)from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/openlibrary-scraper").call(run_input={
"mode": "search",
"query": "isbn:9780262035613",
})
for b in client.dataset(run["defaultDatasetId"]).iterate_items():
print(b["title"], "—", b["publishers"], "—", b["isbn"])import csv
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/openlibrary-scraper").call(run_input={
"mode": "author",
"query": "Ursula K. Le Guin",
"maxResults": 50,
})
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
with open("books.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=rows[0].keys())
writer.writeheader()
writer.writerows(rows)
print(f"Saved {len(rows)} rows to books.csv")📄 Documentation only.