Skip to content
scrapeatlas.Dashboard

Search Goodreads books

Try in Playground

Search Goodreads books by title, author or ISBN, 20 per page: book ID, title, cover, authors, average rating, rating count, first publication year, edition count and work ID.

GET/v1/goodreads/searchx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
2
querystringrequiredquery

Title, author or ISBN to search for (1 to 200 characters).

max 200 chars

Exampleexample book
pagestringquery

Result page number.

Example1
Response fields
31
successboolean

True when usable data is returned; inspect status and coverage.

statusenum

success or partial for usable data; failed or challenged for a failure.

one of: success, partial

requestIdstring

Request correlation UUID.

sourceUrlstring

Public goodreads.com page the data describes.

absolute HTTPS URL

fetchedAtstring

UTC retrieval timestamp.

Returned-page coverage and mapping warnings.

coverage.sourcestring

Goodreads' public web pages and web API.

coverage.completeboolean

Whether every supported field on this page was mapped without a reported omission.

coverage.warningsenum[]

Named warnings: invalid_item (a record could not be mapped and was skipped), record_limit, total_unavailable (no result count), stats_unavailable (no rating statistics) or pagination_unavailable (no next-page signal).

Retrieval attempt, source byte and timing measurements.

accounting.upstreamRequestsinteger

Upstream request attempts, including redirects and any retry.

≥ 0

accounting.responseBytesinteger

Decoded source bytes read during this request.

≥ 0

accounting.durationMsnumber

Elapsed operation time in milliseconds.

≥ 0

querystring

Title, author or ISBN to search for (1 to 200 characters).

Books in source order.

up to 20 items

books.idinteger

Always included.

≥ 0

books.titlestring

Always included.

books.urlstring

Always included.

absolute HTTPS URL

books.imageUrlstringnullable

Always included.

absolute HTTPS URL

Always included.

up to 50 items

books.authors.idintegernullable

Always included.

≥ 0

books.authors.namestring

Always included.

books.authors.urlstringnullable

Always included.

absolute HTTPS URL

books.averageRatingnumbernullable

Always included.

0 – 5

books.ratingsCountintegernullable

Always included.

≥ 0

books.publishedYearintegernullable

Always included.

books.editionsCountintegernullable

Always included.

≥ 0

books.workIdintegernullable

Always included.

≥ 0

pageinteger

Result page number.

≥ 1

totalintegernullable

Approximate number of matching books Goodreads reports, or null.

≥ 0

hasMoreboolean

Whether another result page exists.

HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.

Error codes
14
HTTPfailure.codeMeaning
200partialUsable data with named invalid-item, record-limit, total, stats or pagination warnings.
400invalid_requestMissing, duplicate, malformed, unsafe or unsupported parameters.
401unauthorizedMissing or invalid worker API key.
404not_foundThe requested Goodreads book or author was not found.
422restricted_pageGoodreads requires sign-in for the requested page.
422unsupported_pageThe Goodreads page structure or identity could not be mapped.
502upstream_challengedGoodreads challenged retrieval.
502upstream_rate_limitedGoodreads rate-limited retrieval.
502upstream_errorSource retrieval did not complete.
502response_too_largeDecoded source bytes exceeded the request limit.
502unsafe_redirectGoodreads redirected outside the requested book or author.
502request_limitThe upstream request budget was exhausted.
503busyWorker request or queue capacity was exceeded.
504timeoutThe operation deadline expired.