Bookshop APIbookshop.org ↗
Search books, browse categories, get bestsellers, and find independent bookstores via the Bookshop.org API. Returns prices, metadata, descriptions, and more.
What is the Bookshop API?
The Bookshop.org API exposes 6 endpoints covering catalog search, category browsing, curated lists, and local bookstore discovery. The search_books endpoint runs full-text queries by title, author, or ISBN and returns paginated book summaries including prices in cents, cover images, and detail URLs that feed directly into get_book_details for structured metadata like publisher, page count, and EAN.
curl -X GET 'https://api.parse.bot/scraper/7b5ed445-ce1b-402b-becd-82c526676c4f/search_books?limit=5&query=Python&format=Hardcover&offset=0' \ -H 'X-API-Key: $PARSE_API_KEY'
Full-text search over Bookshop.org's catalog by keyword (title, author, or ISBN). Supports pagination via offset/limit and optional format filtering. Returns book summaries including title, author, price, cover image, and detail URL. Prices are in cents (USD). The total is an estimate from the search engine and may exceed actual retrievable results.
| Param | Type | Description |
|---|---|---|
| limit | integer | Max results to return per page. |
| queryrequired | string | Search keyword (title, author, or ISBN). |
| format | string | Filter by book format. |
| offset | integer | Offset for pagination. |
{
"type": "object",
"fields": {
"books": "array of book summary objects",
"limit": "integer current limit",
"total": "integer estimated total matching results",
"offset": "integer current offset"
},
"sample": {
"data": {
"books": [
{
"ean": "9781119643814",
"price": 2516,
"title": "Bite-Size Python",
"author": "April Speight",
"format": "Paperback",
"series": "",
"currency": "usd",
"subtitle": "An Introduction to Python Programming",
"cover_url": "https://images-us.bookshop.org/ingram/9781119643814.jpg?v=enc-v1",
"detail_url": "https://bookshop.org/p/books/bite-size-python-an-introduction-to-python-programming-april-speight/bcc81ca645b2b40a?ean=9781119643814&next=t",
"list_price": 2700,
"publish_date": "2020-09-01T00:00:00-04:00"
}
],
"limit": 5,
"total": 1000,
"offset": 0
},
"status": "success"
}
}About the Bookshop API
Catalog Search and Book Details
The search_books endpoint accepts a required query string (title, author, or ISBN) along with optional format, limit, and offset parameters. Results include title, author, price (in cents, USD), a cover image URL, and a detail_url. Pass that detail_url directly to get_book_details to retrieve the full record: description, publisher, publish date, pages, language, dimensions, ean_upc, and a formatted price string. Note that price may be empty if the book is not currently displayed with a price on the product page.
Category Browsing and Curated Lists
The get_books_by_category endpoint accepts a category slug — verified values include fiction, nonfiction, romance, fantasy, mystery, sci-fi, ya, kids, and popular-book — and returns paginated book summaries mapped to BISAC subject codes internally. The get_new_books endpoint requires no inputs and returns an editorially curated list of 10–20 recent titles with title, author, and url. The get_bestsellers endpoint returns up to 30 books from Bookshop.org's Best Sellers page in display order, each with rank, price, list_price, ean (13-digit), format, and button_text.
Local Bookstore Discovery
The get_bookstore_listings endpoint accepts lat, lng, and radius (in miles) to return nearby independent bookstore partners. Each result includes name, address, city, state, zip, phone, website, and a profile_url linking back to the store's Bookshop.org page. This endpoint is useful for geo-aware applications that want to surface local stores alongside book data.
Pagination and Price Handling
Both search_books and get_books_by_category support offset/limit pagination. The total field in both responses is an estimated count, not an exact figure. All prices in list responses are integers in cents (USD); get_book_details returns a formatted price string which may be empty. get_bestsellers returns list_price as an integer in cents, or null when not displayed on the page.
The Bookshop API is a managed, monitored endpoint for bookshop.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bookshop.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official bookshop.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a book recommendation widget that queries
search_booksby author name and displays cover images and prices. - Populate a fiction browsing page using
get_books_by_categorywith thefictionslug and paginate through results. - Display a live bestseller shelf sorted by
rankusingget_bestsellers, including sale vs. list price comparison viapriceandlist_price. - Enrich a book database with structured metadata (publisher, page count, EAN, dimensions) by piping
detail_urlvalues intoget_book_details. - Build a store locator feature using
get_bookstore_listingswith user-supplied coordinates to find nearby independent bookshops. - Surface newly published titles in a newsletter or feed using
get_new_bookswithout any query parameters. - Look up a specific edition by ISBN via
search_booksto retrieve pricing and a direct Bookshop.org purchase link.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Bookshop.org have an official developer API?+
What does `get_book_details` return beyond what search results provide?+
get_book_details endpoint returns the full description text, a metadata object containing publisher, publish date, pages, language, type, ean_upc, and dimensions, and a formatted price string. Search and category endpoints return only summary fields like title, author, and a cents-integer price.How far back does `get_bestsellers` paginate?+
Does the API return user reviews or ratings for books?+
Are all book formats supported in `search_books` filtering?+
format parameter is optional and accepted by search_books, but the API documentation does not enumerate a verified set of valid format slugs the way get_books_by_category does for category slugs. Passing an unrecognized format value may return an empty result set rather than an error.