Internet Archive Book Reviews Scraper avatar

Internet Archive Book Reviews Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Internet Archive Book Reviews Scraper

Internet Archive Book Reviews Scraper

Extract public Archive org book metadata, ISBNs, ratings, and user reviews, then output one structured dataset row per public review for library research, catalog enrichment, and analysis. Start from URLs, identifiers, ISBNs, creators, collections, subjects, or search queries. No API key required.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Inus Grobler

Inus Grobler

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Internet Archive Collection Intelligence

Turn public Archive.org items into structured catalog, collection, file, engagement, and review data. The Actor accepts known URLs or identifiers as well as ISBN, creator, collection, subject, and advanced-search discovery inputs.

The original flat review dataset remains the default, so existing integrations keep working. New output modes support catalog research, collection analysis, downloadable-file inventories, and recurring change detection.

No Internet Archive API key is required for public data.

Common use cases

  • Enrich library or publishing catalogs with identifiers, creators, subjects, collections, and rights metadata.
  • Rank or monitor public items by total, weekly, or monthly downloads when Archive.org provides those fields.
  • Export public file inventories without downloading the files.
  • Build datasets of public reviews and star ratings.
  • Detect new or edited reviews, metadata changes, and download growth between successful runs.
  • Feed normalized Archive.org records into databases, dashboards, and AI-agent workflows.

Quick start: flat reviews

{
"sources": ["https://archive.org/details/goodytwoshoes00newyiala"],
"maxItems": 1,
"maxReviewsPerItem": 10
}

This uses reviews_flat, the backward-compatible default. Each dataset row is one review enriched with item metadata.

Item and collection intelligence

Use items when you want one row per Archive.org item, including items without reviews:

{
"collections": ["internetarchivebooks"],
"outputMode": "items",
"onlyItemsWithReviews": false,
"maxItems": 25,
"maxReviewsPerItem": 10
}

Use items_with_nested_reviews to keep one item row with its fetched reviews attached. Use normalized to emit separate item, review, and optional file rows that are easier to load into related database tables.

{
"creators": ["Mark Twain"],
"outputMode": "normalized",
"onlyItemsWithReviews": false,
"includeFiles": true,
"maxItems": 10
}

includeFiles exports public file metadata and download URLs. It does not download file contents.

Discovery inputs

  • sources: Archive.org item URLs, metadata URLs, review URLs, identifiers, or ISBNs.
  • isbns: ISBN-10 or ISBN-13 values.
  • creators: author or creator names.
  • collections: Archive.org collection identifiers.
  • subjects: subject terms.
  • searchQueries: raw Archive.org advanced-search expressions.

Searches can match items without public reviews. Set onlyItemsWithReviews to false for catalog, collection, file, or engagement research.

Output modes

ModeDataset shapeBest for
reviews_flatOne enriched row per public reviewExisting integrations, sentiment and review research
itemsOne row per itemCatalog and collection analysis
items_with_nested_reviewsOne item row with a reviews arrayDocument databases and item snapshots
normalizedSeparate item, review, and optional file rowsWarehouses, relational pipelines, AI tools

Item output can include identifiers, creators, descriptions, publishers, dates, subjects, collections, media types, rights, licenses, file counts, sizes, download activity, favorites, and review aggregates. Availability depends on the source item.

Change monitoring

Monitoring is opt-in. Reuse a private monitoringKey to compare a source set with its last fully successful snapshot:

{
"sources": ["goodytwoshoes00newyiala"],
"outputMode": "normalized",
"onlyItemsWithReviews": false,
"monitoringMode": "compare_and_update",
"monitoringKey": "public-domain-books-weekly"
}

The first successful run creates a baseline. Later successful runs add change_summary rows and label emitted item/review records as new, changed, or unchanged.

The Actor stores only compact hashes, public identifiers, timestamps, download counts, and review identity hashes in its Actor-owned named key-value store. It does not store full review text in monitoring state. A partial or failed run reports state_not_updated and does not replace the last good baseline.

Keep these rules in mind:

  • Use the same Apify account and monitoringKey for a continuing comparison series.
  • Use a separate key for a different customer, project, source set, or filter configuration.
  • Do not infer deletions from a capped or filtered run; change summaries describe the records that were fetched.
  • Monitoring does not create a schedule. Run the Actor again manually, by API, or through your own Apify Task when needed.

Review filters and reliability controls

Advanced inputs include minStars, maxStars, reviewTextContains, languageFilter, mediatypes, concurrency, retry, delay, and timeout controls. Raw source objects can be included for debugging, but normalized output is recommended for stable integrations.

The Actor uses public Archive.org HTTP endpoints, applies bounded retries and polite request delays, deduplicates items and reviews, and writes RUN-STATS to the run key-value store.

Example output

Item row:

{
"entityType": "item",
"source": "internet_archive",
"identifier": "goodytwoshoes00newyiala",
"title": "Goody Two-Shoes",
"creators": ["Newbery, John"],
"collections": ["americana"],
"downloads": 12500,
"reviewCount": 5,
"itemUrl": "https://archive.org/details/goodytwoshoes00newyiala"
}

Review row:

{
"entityType": "review",
"identifier": "goodytwoshoes00newyiala",
"reviewTitle": "Fun",
"reviewText": "This is an enjoyable read.",
"stars": 4,
"reviewerName": "ErniePye",
"itemUrl": "https://archive.org/details/goodytwoshoes00newyiala"
}

API example

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("thescrapelab/internet-archive-book-reviews-scraper").call(run_input={
"collections": ["internetarchivebooks"],
"outputMode": "items",
"onlyItemsWithReviews": False,
"maxItems": 25,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["identifier"], row.get("downloads"))

Limits and responsible use

  • The Actor reads public Archive.org metadata and reviews only.
  • It does not log in, alter Archive.org data, download book files, solve captchas, or bypass access controls.
  • Some records omit ratings, reviewer names, timestamps, engagement counts, rights, or file properties.
  • Endpoint latency and availability can vary.
  • Optional Internet Archive credentials remain accepted for compatibility but are not used for public extraction.

Troubleshooting

  • No rows in reviews_flat: the item may have no public reviews or a filter removed them. Try outputMode: "items" and onlyItemsWithReviews: false.
  • No file rows: use outputMode: "normalized" with includeFiles: true.
  • First monitoring run shows no changes: it is establishing the baseline; rerun with the same key to compare.
  • Unsupported URL: use an Archive.org /details/{identifier}, /metadata/{identifier}, or /metadata/{identifier}/reviews URL.
  • Slow broad search: lower maxItems, use a more specific query, and keep concurrency modest.

Cost guidance

The Store shows the current price before each run. Cost primarily grows with items searched and fetched, review pages requested, file metadata volume, and retry activity. Start with a direct item, maxItems: 1, and a small review limit; expand only after confirming the output fits your use case.