AbeBooks Scraper [From $1.5💰] | Book Prices | Arbitrage avatar

AbeBooks Scraper [From $1.5💰] | Book Prices | Arbitrage

Pricing

from $1.40 / 1,000 results

Go to Apify Store
AbeBooks Scraper [From $1.5💰] | Book Prices | Arbitrage

AbeBooks Scraper [From $1.5💰] | Book Prices | Arbitrage

Extract AbeBooks listings with prices, condition, shipping and seller data for book price comparison, arbitrage sourcing and textbook price monitoring. Structured rows ready for reseller workflows, CSV export and recurring runs.

Pricing

from $1.40 / 1,000 results

Rating

0.0

(0)

Developer

Ahmed Jasarevic

Ahmed Jasarevic

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

7 days ago

Last modified

Categories

Share

AbeBooks Scraper

Scrape book listings from AbeBooks.com — the world's largest online marketplace for used, rare, and out-of-print books — into 43 structured fields per listing, from price, shipping and condition to seller star rating and Goodreads score. The AbeBooks scraper for book arbitrage, textbook price monitoring and ISBN price lookup, with pay-per-event pricing and 10 free items per run.

Use Cases: Book Arbitrage, Textbook Arbitrage and Resale Sourcing

  • Book price comparison & ISBN price lookup — search by ISBN and pull every seller's offer: price, shipping with delivery windows, condition and quantity in one row.
  • Book arbitrage and reselling — find underpriced copies by filtering on price, condition and seller rating, add shippingPrice for landed cost, then resell books for profit.
  • Textbook arbitrage & price tracking — track course-book ISBNs, watch for price drops and restocks, schedule recurring runs in term season.
  • Rare book valuation — search by author, keyword, year range and condition to compare live listings across editions and bindings.
  • Out-of-print and collectible sourcing — keyword/author/title/year filters surface hard-to-find copies.
  • Cross-border price checks — 11 currencies and 27 ship-to countries show what a listing costs delivered (AbeBooks international shipping).

How The AbeBooks Scraper Works

The actor runs plain HTTP requests through Crawlee's CheerioCrawler — no browser, no login — reading AbeBooks' Next.js RSC flight payload, which returns every listing as inline JSON from search pages. Opt-in detail enrichment merges extra fields into the same row (never a duplicate row). Requests run in parallel from the first second (maxConcurrency, default 40); duplicates across pages are skipped.

Input Parameters: Search by Keyword, Author, Title or ISBN

Top-level input fields:

FieldTypeRequiredDefaultNotes
searchesSearchQuery[]✅[{ "keyword": "harry potter" }]1–50 queries entered as form rows; each combines multiple filters (table below).
maxPagesPerSearchinteger10Search result pages per query (1–50).
maxDetailsPerSearchinteger50Detail pages per query (0–200); only used when enrichDetails is on.
enrichDetailsbooleanfalseVisit each listing's detail page and merge description, page count, edition, ISBN-10, seller details and shipping table into the same row. Charged per detail page via Listing detail. Off = search results only.
maxConcurrencyinteger40Parallel HTTP requests (1–100).
currencyenumUSDPrice/shipping currency (ISO 4217): USD, EUR, GBP, CAD, AUD, CHF, JPY, SEK, NOK, DKK, PLN.
shipDestenumUSShip-to country (ISO 3166-1 alpha-2), 27 values: US, GB, DE, FR, ES, IT, NL, CA, AU, NZ, IE, PT, BE, AT, CH, SE, NO, DK, FI, PL, CZ, JP, IN, BR, MX, SG, ZA — controls the shipping rates shown.
maxRequestsPerCrawlinteger500Hard cap on total HTTP requests across all searches (min 1).
proxyProxyConfig{ "useApifyProxy": false }Standard Apify proxy config; residential/datacenter selectable in the UI.

currency and shipDest are top-level settings applied to all queries — they are not per-query fields.

SearchQuery Fields (one row per query)

FieldTypeRequiredDefaultNotes
keywordstringFree-text keyword (AbeBooks kn), e.g. harry potter, first edition.
authorstringAuthor filter (an).
titlestringTitle filter (bn).
isbnstringISBN-10 or ISBN-13 (isbn); hyphens ignored.
publisherstringPublisher filter (ap).
conditionstringCondition filter (tn): New, Used, Like New, Very Good, Good, Acceptable.
minPricenumberMin price in selected currency (prl).
maxPricenumberMax price (prh).
minYearintegerEarliest publication year (yrl).
maxYearintegerLatest publication year (yrh).
languagestringLanguage filter (lang), e.g. English, German, French, Spanish.
sortByenumbestMatchbestMatch, priceAsc, priceDesc, newest, oldest, condition, distance, quantity.

Output Fields: Price, Shipping, Condition, Seller Rating and Goodreads Score

Each dataset item is one book listing with 43 fields. Most are nullable — null when AbeBooks does not publish the value.

Listing & bibliographic (17)

FieldTypeDescription
listingIdintegerInternal listing ID.
vendorListingIdstringSeller's own SKU.
titlestringBook title.
authorstringAuthor name.
authorUrlstringAuthor page URL.
isbn13stringISBN-13.
isbn10stringISBN-10.
publisherstringPublisher.
publishYearintegerPublication year.
languagestringBook language.
editionstringEdition statement (e.g. 1st Edition).
bindingstringBinding type (e.g. Hardcover, Paperback).
pageCountintegerPage count.
descriptionstringSeller's description.
bsaCodesstring[]Book Search Attributes codes (categories/features).
pictureUrlsstring[]Additional images.
imageUrlstringPrimary cover image.

Price & shipping (5)

FieldTypeDescription
pricenumberBook price in the requested currency.
currencystringPrice currency (ISO 4217).
shippingPricenumberShipping cost to the requested destination.
shippingCurrencystringShipping price currency.
shippingRatesobject[]All shipping options: price, currency, minDeliveryDays, maxDeliveryDays.

Condition & availability (4)

FieldTypeDescription
conditionstringInternal condition code (e.g. USED_VERYGOOD).
conditionLabelstringHuman-readable condition (e.g. Very Good).
quantityintegerCopies available from this seller.
availabilitystringStock status (e.g. InStock).

Seller (8)

FieldTypeDescription
sellerNamestringSeller's bookstore name.
sellerIdintegerAbeBooks internal seller ID.
sellerCountrystringSeller country.
sellerStatestringSeller state/province.
sellerCitystringSeller city.
sellerStarRatingnumberSeller star rating (1–5).
sellerSincestringSeller join date.
sellerUrlstringSeller storefront URL.

Ratings & links (4)

FieldTypeDescription
goodreadsRatingnumberGoodreads average rating.
goodreadsRatingCountintegerGoodreads rating count.
listingUrlstringDirect listing detail page (/bd).
productUrlstringProduct page (/plp) aggregating sellers.

Run metadata (5)

FieldTypeDescription
sourceUrlstringSource search/detail page URL.
sourceenumsearch = search data only; detail = enriched from its detail page. One row per listing either way.
currencyRequestedstringCurrency requested in the input.
shippingDestinationRequestedstringShip-to country requested in the input.
scrapedAtdatetimeISO scrape timestamp.

Dataset views

  • Overview (default table): title, author, price, currency, conditionLabel, sellerName, listingUrl — quick browsing.
  • Arbitrage View: isbn13, title, author, price, shippingPrice, currency, conditionLabel, sellerName, sellerCountry, sellerStarRating, listingUrl — landed cost and seller trust per ISBN when sourcing inventory to resell.

Example Input And Output

Example Input

{
"searches": [
{ "keyword": "textbook biology", "maxPrice": 50, "condition": "Used", "sortBy": "priceAsc" },
{ "isbn": "9780134093413" },
{ "author": "Brandon Sanderson", "title": "Mistborn", "minYear": 2006 }
],
"maxPagesPerSearch": 5,
"enrichDetails": true,
"maxDetailsPerSearch": 20,
"currency": "USD",
"shipDest": "US",
"maxRequestsPerCrawl": 200,
"proxy": { "useApifyProxy": true }
}

Example Output (truncated)

{
"listingId": 32439259548,
"title": "Harry Potter And The Chamber Of Secrets",
"author": "Rowling, J.K.",
"isbn13": "9780439064873",
"isbn10": "0439064872",
"publisher": "Scholastic Paperbacks",
"publishYear": 2000,
"binding": "Paperback",
"description": "Meets the good condition guidelines. Has some crinkling...",
"condition": "USED_GOOD",
"conditionLabel": "Good",
"quantity": 1,
"price": 7.89,
"currency": "USD",
"shippingPrice": 45.0,
"shippingRates": [
{ "price": 45.0, "currency": "USD", "minDeliveryDays": 8, "maxDeliveryDays": 36 },
{ "price": 65.0, "currency": "USD", "minDeliveryDays": 7, "maxDeliveryDays": 28 }
],
"sellerName": "Hawking Books",
"sellerId": 54932187,
"sellerCountry": "USA",
"sellerStarRating": 4,
"sellerUrl": "https://www.abebooks.com/Hawking-Books-Edgewood-TX-U.S.A/54932187/sf",
"goodreadsRating": 4.42,
"listingUrl": "https://www.abebooks.com/Harry-Potter-Chamber-Secrets-Rowling-J.K/32439259548/bd",
"source": "search",
"scrapedAt": "2026-10-05T12:34:56.789Z"
}

Extract Book Listings, Prices and Seller Data For Arbitrage

  • Search + detail extraction — keyword/author/ISBN searches, optionally enriched with detail-page data; detail fields merge into the same row, never a duplicate row.
  • Full listing data — title, author, ISBN-10/13, price + shipping, condition, seller name/location/rating, edition, description, binding, page count, publisher, year, language.
  • Arbitrage-ready — shipping rates with delivery estimates, seller star ratings, Goodreads ratings, quantity available.
  • Currency & destination control — prices and shipping normalized to your chosen currency and ship-to country.
  • Parallel by default — concurrent requests from the first second (maxConcurrency, default 40).
  • Affiliate-ready rows — every row carries listingUrl and productUrl for commission-link feeds.

Pricing and limits

Pay-per-event billing: every dataset row charges Result ($0.0015); opt-in enrichment charges Listing detail ($0.0005) per fetched detail page; Actor Start ($0.00005) is charged automatically. Free users get 10 items per run; paid Apify users get unlimited.

TierItems/RunMemoryEst. Compute Units/1k items
Free (Apify Free plan)10256 MB~0.02 CU
Paid (Apify paid plan)Unlimited256 MB~0.02 CU

Typical run: 1 search × 10 pages × 30 results = 300 items → ~0.006 CU (negligible).

Build Book Price Data Without Official AbeBooks API Access

The actor uses CheerioCrawler (no browser) and exploits AbeBooks' Next.js App Router RSC (React Server Components) flight payload:

  1. A search page requested with the RSC: 1 header (sent automatically) returns a text/x-component stream instead of the full HTML shell.
  2. That stream contains inline JSON objects for every listing — {"listing":{...}} with price, shipping, seller, condition, ISBN, images and more.
  3. The actor parses these payloads directly — no DOM scraping, no JavaScript rendering, no Cloudflare challenge.

Why this wins:

  • 10–50× faster than Playwright — plain HTTP requests only.
  • Bypasses anti-bot — the RSC endpoint doesn't serve Cloudflare Turnstile/challenges.
  • Cheaper on Apify — runs at 256 MB memory (vs 1024+ MB for a browser).
  • Maintainable — structured JSON is stable; DOM selectors break on redesign.

Fallback: if the flight payload is unavailable (rare), the actor falls back to application/ld+json structured data embedded in the HTML, then to Cheerio selectors on detail pages.

Technical details

  • Crawler: CheerioCrawler (Crawlee)
  • Primary data source: Next.js RSC flight payload (text/x-component)
  • Fallback: application/ld+json (schema.org ItemList/Product/Book)
  • Detail enrichment: ld+json + Cheerio selectors on /bd and /plp pages
  • Memory: 256 MB (configured in .actor/actor.json)
  • Proxy: standard Apify proxy input (residential/datacenter selectable in UI)

Version history

  • v0.3 — Pay-per-event pricing wired in: every dataset row charges the primary result event; event names fixed in code (no input field for them).
  • v0.2 — One row per listing (detail data merges into the search row); detail enrichment opt-in via enrichDetails, charged per page; parallel from the first request; form-based queries; duplicates across result pages skipped.
  • v0.1 — Initial release: RSC flight payload extraction, search + detail, full field set.

Run AbeBooks Scraper From the Apify API, Console Or Schedule

  • Apify REST API — start runs and read results from the dataset endpoint (GET /v2/datasets/{datasetId}/items); small jobs can run synchronously.
  • Webhooks — push finished rows to your backend or database.
  • Zapier & Make — trigger no-code workflows from new dataset rows.
  • Console & Tasks — save the input once as an Actor task so you never reconfigure searches between runs.
  • Schedules — recurring runs suit monitoring: daily (@daily) for textbook price tracking in term season, weekly (@weekly) for rare-book and out-of-print watches.

Integrations & Automation

Native Apify integrations only. Apify API: start runs and read results from GET /v2/datasets/{datasetId}/items; small searches run synchronously. Webhooks: ACTOR.SUCCEEDED pushes finished listing rows to your backend or database. Zapier / Make: native Apify modules triggered by new dataset rows. Schedules: the realistic monitoring pattern is daily (@daily) textbook-price runs during term season and weekly (@weekly) rare-book and out-of-print watches.

AbeBooks Scraper FAQ

How can I make money reselling books online?

The common paths are sourcing cheap copies (thrift stores, clearance, bulk lots), doing textbook arbitrage around term start, and flipping rare or out-of-print editions. This actor supports the sourcing half: ISBN and keyword searches at scale, price + shippingPrice comparisons, conditionLabel and sellerStarRating checks, and scheduled re-runs to catch price drops. It does not buy or sell for you.

What is the best API for used book prices and ISBN price data?

For AbeBooks listings, this actor returns price, shipping, condition, seller and Goodreads fields per ISBN as a structured dataset — $0.0015 per row, no AbeBooks affiliation required. Wider options in the category include ISBNdb, SerpApi, BookScouter and Analyzer.Tools, plus AbeBooks' own official route (below). Compare on delivered cost (price + shippingPrice), condition granularity and seller data.

How do I value rare books and first editions?

There is no single number — value comes from comparing live listings: edition and binding, publication year (minYear/maxYear), physical condition (conditionLabel plus the seller's description), seller rating, and demand signals like goodreadsRatingCount. This actor exposes exactly those fields so you can build a rare book price database from current asking prices — a market-data tool, not an appraisal.

Is AbeBooks legit and safe to buy used books from?

AbeBooks is a long-running marketplace for used, rare and out-of-print books. The dataset does not ask you to take that on faith: every row includes sellerStarRating, sellerSince, seller location, quantity and conditionLabel, so you can judge each offer first.

What is book arbitrage and how does it work?

Book arbitrage is buying books that are underpriced on one market (or in bulk) and reselling them at a higher price. The loop: find undervalued copies, verify condition and delivered cost, confirm demand, list elsewhere at market price. online book arbitrage and textbook arbitrage apply the same loop to general stock and semester textbooks. This actor automates the find-and-monitor steps with structured search results.

Legality depends on jurisdiction, the source's terms of service and how the data is used; this README gives no legal conclusion. General good practice: respect robots.txt, terms of service and rate limits, keep runs proportionate, and use the data for personal or evaluative analysis. This actor only reads publicly available listing pages, has no login, and applies a configurable request cap.

Is there an official AbeBooks API?

Yes — AbeBooks offers Search Web Services (SWS), but it is affiliate-restricted: credentials require an AbeBooks affiliate relationship. This actor is an independent alternative needing only an Apify account: $0.0015 per row, runs from the console, API or a schedule, and returns a 43-field dataset with shipping rates, condition, seller ratings and Goodreads scores.

What are the alternatives to this AbeBooks scraper?

For the data itself: BookScouter (ISBN buyback comparison), ThriftBooks, Biblio and Alibris are the usual AbeBooks alternative marketplaces — this actor reads abebooks.com only, so export the CSV/JSON and compare prices elsewhere yourself. On the Apify Store, comparable AbeBooks scrapers from crawlerbros, lulzasaur and automation-lab are listed above.

SEO Keywords

abebooks scraper, abebooks api, abebooks data api, abebooks scraper apify, scrape abebooks listings, abebooks alternative, book price comparison api, used book price api, isbn price lookup, book price tracker, rare book price database, how to value rare books, book arbitrage, online book arbitrage, textbook arbitrage, resell books for profit, where to source books to resell, book sourcing for resellers, thriftbooks vs abebooks, out of print books search, abebooks international shipping, abebooks scraper python

For AI Agents & LLM Apps

Purpose: scrape AbeBooks.com book listings (search, optionally detail-enriched) into a structured 43-field dataset for price comparison, arbitrage and monitoring.

Minimal working input:

{ "searches": [{ "keyword": "harry potter" }] }

Detail-enriched variant (distinct mode):

{
"searches": [{ "isbn": "9780134093413" }],
"enrichDetails": true,
"maxDetailsPerSearch": 20,
"currency": "EUR",
"shipDest": "DE"
}

Output fields: listingId, vendorListingId, title, author, authorUrl, isbn13, isbn10, publisher, publishYear, language, edition, binding, pageCount, description, condition, conditionLabel, quantity, bsaCodes, pictureUrls, imageUrl, price, currency, shippingPrice, shippingCurrency, shippingRates, availability, sellerName, sellerId, sellerCountry, sellerState, sellerCity, sellerStarRating, sellerSince, sellerUrl, goodreadsRating, goodreadsRatingCount, listingUrl, productUrl, sourceUrl, source, currencyRequested, shippingDestinationRequested, scrapedAt.

Behaviors an agent should know

  • Only searches is required (1–50 queries); every other field has a default.
  • currency (default USD) and shipDest (default US) are top-level — not per-query fields; putting them inside a search object has no effect.
  • enrichDetails defaults to false: rows are source: "search" and no detail pages are fetched. Set true to merge detail fields into the same row (source: "detail") — this adds billed Listing detail events, capped per query by maxDetailsPerSearch (default 50).
  • One row per listing either way; enrichment never creates duplicate rows, and duplicates across result pages are skipped.
  • Defaults: maxPagesPerSearch 10 (max 50), maxConcurrency 40 (max 100), maxRequestsPerCrawl 500 across all searches, sortBy bestMatch, proxy useApifyProxy: false, memory 256 MB, HTTP-only.
  • Free plan: 10 items per run; paid plans: unlimited.
  • Billing: pay-per-event — Result $0.0015 per dataset row + Listing detail $0.0005 per fetched detail page + Actor Start $0.00005 per run.

This project is an independent tool, not affiliated with, endorsed by or sponsored by AbeBooks or its operators. It accesses only publicly available listing pages on abebooks.com — search results and listing/product pages — with no login, no private data and no cart or checkout interaction; it respects robots.txt and AbeBooks' Terms of Service, and only extracts publicly available listing data. Excessive scraping may still get your proxy IPs blocked, so keep runs proportionate. You are responsible for your own compliance with AbeBooks' terms of service and applicable data-protection law (including the GDPR where it applies) when using the data. The output contains listing and seller business information only — no personal contact data (emails or phone numbers) — and it must not be used for unsolicited commercial outreach in violation of applicable law.