Alibris APIalibris.com ↗
Search Alibris books by keyword, author, ISBN, or title. Retrieve seller listings with condition, price, and rating data via 4 structured endpoints.
What is the Alibris API?
The Alibris API provides 4 endpoints for searching the Alibris book marketplace and retrieving per-seller listing data. search_books returns paginated results with price, author, ISBN-13, and cover image for each matched title. get_book_listings drills into a specific work to expose individual seller offers including condition, binding, price, and seller rating tier. get_item_details adds publisher, language, and the seller's own item description.
curl -X GET 'https://api.parse.bot/scraper/faff73d1-bd3c-4f85-a9e8-537ce71368ee/search_books?page=1&sort=r&query=python+programming' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace alibris-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Alibris SDK — search books, browse seller listings, get item details."""
from parse_apis.alibris_api import Alibris, Sort, BookNotFound
client = Alibris()
# Search for books sorted by price low-to-high, capped at 5 results.
for book in client.books.search(query="python programming", sort=Sort.PRICE_LOW_HIGH, limit=5):
print(book.title, book.price_from, book.work_id)
# Advanced search by title, take the first result and drill into seller listings.
book = client.books.advanced_search(title="hamlet", author="Shakespeare", limit=1).first()
if book:
# Extract slug from the book's URL for the listings call.
slug = book.url.split("alibris.com/")[1].split("/book/")[0]
for listing in book.listings.list(slug=slug, limit=3):
print(listing.seller, listing.price, listing.condition_binding)
# Get full item details for a specific listing using the itemdetails collection.
try:
detail = client.itemdetails.get(invid="18954981997", work_id="8013060")
print(detail.title, detail.publisher, detail.language)
except BookNotFound as exc:
print(f"Item not found: {exc}")
print("exercised: books.search / books.advanced_search / book.listings.list / itemdetails.get")
Full-text keyword search over Alibris book listings. Returns paginated results with basic book metadata (title, author, price, work_id). Supports sorting and filtering by binding type, price range, and free shipping eligibility. Each result carries a work_id usable with get_book_listings for seller-level detail.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. |
| queryrequired | string | Search keyword (e.g. 'python programming', 'stephen king'). |
| binding | string | Filter by binding type (e.g. 'Hardcover', 'Softcover'). |
| price_range | string | Price range filter (e.g. 'Under 5', '5 - 15', '15 - 30', '30 - 50', 'Over 50'). |
| free_shipping | boolean | Filter for free shipping eligible items only. |
{
"type": "object",
"fields": {
"listings": "array of book objects with work_id, title, author, url, price_from, image_url, isbn13",
"total_pages": "integer, total number of pages",
"current_page": "integer, current page number",
"total_matches": "integer, total number of matching books"
},
"sample": {
"data": {
"listings": [
{
"url": "https://www.alibris.com/Python-Programming-An-Introduction-to-Computer-Science-John-M-Zelle/book/8013060?matches=108",
"title": "Python Programming: An Introduction to Computer Science",
"author": "John M Zelle",
"isbn13": null,
"work_id": "8013060",
"image_url": "https://www.alibris-static.com/python-programming-an-introduction-to-computer-science/isbn/9781887902991.gif",
"price_from": "$1.08"
}
],
"total_pages": 20,
"current_page": 1,
"total_matches": 0
},
"status": "success"
}
}About the Alibris API
Search Endpoints
search_books accepts a required query string along with optional filters for binding (e.g. Hardcover, Softcover), price_range (e.g. Under 5, 5 - 15), and free_shipping. Results are sortable by relevance (r), price low-to-high (p), or price high-to-low (pr). Each result includes a work_id, title, author, price_from, isbn13, and a url path usable in downstream calls. Pagination is returned as current_page, total_pages, and total_matches.
search_books_advanced targets specific bibliographic dimensions: title, author, isbn, keyword, binding, and a signed flag for signed copies. At least one parameter must be supplied. The response shape mirrors search_books, so work_id values are directly usable in get_book_listings without transformation.
Listing and Item Detail Endpoints
get_book_listings takes a work_id and URL slug from search results and returns two parallel arrays. The editions array lists available editions with isbn13, descriptive info, and price_from. The listings array contains individual seller offers, each with condition_binding, isbn13, seller name, seller_rating_tier, price, and an alibris_id that uniquely identifies the inventory item.
get_item_details accepts an invid (the alibris_id from get_book_listings) alongside a work_id and returns a single listing record with title, isbn13, language, publisher, and the seller's free-text description. Fields like language and publisher may be null when not provided by the seller.
The Alibris API is a managed, monitored endpoint for alibris.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when alibris.com 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 alibris.com 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?+
- Compare prices across multiple Alibris sellers for a given ISBN before purchasing
- Track lowest available price for a title over time using
price_fromfrom search results - Filter used book inventory by condition and binding type for rare or collectible editions
- Identify signed copies of specific titles using the
signedfilter insearch_books_advanced - Build a book price comparison tool aggregating Alibris seller offers with condition details
- Extract publisher and language metadata for books via
get_item_detailsfor catalog enrichment - Paginate through subject or author searches to index available inventory across the marketplace
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Alibris have an official developer API?+
What does `get_book_listings` return that search endpoints don't?+
get_book_listings returns individual seller-level offers rather than work-level summaries. Each entry in the listings array includes a specific seller name, their seller_rating_tier, the listed price, condition_binding, and an alibris_id that can be passed to get_item_details. Search endpoints return only the lowest price_from across all sellers for a work.Does the API expose seller reviews or detailed ratings?+
listings array from get_book_listings includes a seller_rating_tier field but does not return individual review text, review counts, or numeric rating scores. You can fork this API on Parse and revise it to add an endpoint that retrieves fuller seller feedback data.What are the pagination limits for search results?+
search_books and search_books_advanced return a pagination object with current_page, total_pages, and total_matches. The page parameter controls which page is fetched. Very broad queries may report a high total_matches count, but the number of accessible pages may be capped by what Alibris exposes in its paginated results.