Biblio APIbiblio.com ↗
Search and retrieve used, rare, and out-of-print book listings from independent booksellers on Biblio.com. Filter by ISBN, binding, condition, price, and more.
What is the Biblio API?
The Biblio.com API provides two endpoints for accessing used, rare, and out-of-print book data from independent booksellers. Using search_books, you can query across listings by title, author, ISBN, binding, condition, price range, and special attributes like signed copies or first editions. Each search result returns up to 9 fields per listing including price, seller location, and condition, while get_book_details returns full bibliographic and seller details for a specific listing ID.
curl -X GET 'https://api.parse.bot/scraper/85097638-3e78-4dc4-8f99-fc1195730210/search_books?page=1&sort=relevance&title=Great+Gatsby&author=Fitzgerald&binding=hardcover&condition=vgb&results_per_page=20' \ -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 biblio-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: Biblio Books SDK — search rare books, get details, filter by edition."""
from parse_apis.biblio_com_api import Biblio, Sort, Binding, Condition, BookNotFound
client = Biblio()
# Search for a classic title sorted by price
for book in client.book_listings.search(
title="Great Gatsby", author="Fitzgerald", sort=Sort.PRICE_ASC, limit=5
):
print(book.title, "|", book.price, "|", book.condition, "|", book.seller)
# Drill-down: get full details for the first hardcover match
listing = client.book_listings.search(
title="Moby Dick", binding=Binding.HARDCOVER, condition=Condition.VERY_GOOD_OR_BETTER, limit=1
).first()
if listing:
detail = listing.details()
print(detail.title, detail.author, detail.publisher, detail.publication_date)
print("Condition:", detail.condition, "| Edition:", detail.edition)
print("Seller:", detail.seller, "in", detail.seller_location)
# Typed error handling: attempt to get a non-existent book
try:
client.book_listings.get(book_id="0000000001")
except BookNotFound as exc:
print(f"Book not found: {exc}")
print("exercised: book_listings.search / book_listings.get / listing.details")
Search for used, rare, and out-of-print books across independent booksellers. Supports filtering by author, title, keywords, ISBN, publisher, binding, condition, publication year range, price range, and special attributes (first edition, signed, dust jacket). Results are auto-iterated; each page returns up to the configured results_per_page items. At least one of author, title, keywords, isbn, or publisher is required.
| Param | Type | Description |
|---|---|---|
| isbn | string | ISBN (10 or 13 digit) to search for. |
| page | integer | Page number (1-based). |
| sort | string | Sort order for results. |
| title | string | Book title to search for. |
| author | string | Author name to search for. |
| signed | boolean | When true, returns only signed copies. |
| binding | string | Filter by book binding type. |
| keywords | string | Keywords to search for in book listings. |
| max_year | string | Maximum publication year (4-digit year, e.g. 2023). |
| min_year | string | Minimum publication year (4-digit year, e.g. 1920). |
| condition | string | Minimum condition filter. |
| max_price | string | Maximum price in USD (numeric, e.g. 500). |
| min_price | string | Minimum price in USD (numeric, e.g. 10). |
| publisher | string | Publisher name to filter results. |
| dust_jacket | boolean | When true, returns only copies with dust jacket. |
| first_edition | boolean | When true, returns only first editions. |
| results_per_page | integer | Number of results per page. Accepted values: 20, 30, 50, 100, 200. |
{
"type": "object",
"fields": {
"page": "integer",
"books": "array of book listing objects with title, book_id, author, condition, binding, isbn, price, shipping, seller, seller_location, description, url",
"total_results": "integer"
},
"sample": {
"data": {
"page": 1,
"books": [
{
"url": "https://www.biblio.com/book/great-gatsby-fitzgerald/d/1662009801",
"isbn": "9789387873292 / 9387873293",
"price": "$25.41",
"title": "THE GREAT GATSBY",
"author": "Fitzgerald",
"seller": "Ria Christie Collections",
"binding": "Paperback",
"book_id": "1662009801",
"shipping": "$10.86",
"condition": "New",
"description": "Paperback. New. New Book; Fast Shipping from UK; Not signed; Not First Edition.",
"seller_location": "Greater London, United Kingdom",
"quantity_available": "346"
}
],
"total_results": 3798
},
"status": "success"
}
}About the Biblio API
Search Across Independent Bookseller Listings
The search_books endpoint accepts a wide range of filter parameters to narrow down listings from Biblio.com's marketplace of independent sellers. You can supply an isbn (10 or 13 digit), title, author, keywords, binding, and a signed boolean flag to isolate autographed copies. Results are paginated via the page parameter and support multiple sort orders. Each result in the books array includes title, book_id, author, condition, binding, isbn, price, shipping, seller, and seller_location, giving you enough data to compare listings without a secondary call.
Retrieving Full Listing Details
Once you have a book_id from search_books, pass it to get_book_details to retrieve the complete record for that listing. The response adds fields not present in search results: pages, edition, currency, and additional classification data. This endpoint is useful when you need to confirm edition specifics or display a complete listing detail page. The book_id is numeric and maps directly to a single seller's listing, not a bibliographic record shared across editions.
Coverage and Data Shape
All data reflects individual seller listings rather than canonical bibliographic records, so the same ISBN may appear across many listings with different prices, conditions, and seller locations. The condition and binding fields are set by sellers and may vary in format. The price and shipping fields are returned as part of each listing, and currency is available in the detail response, which is relevant since Biblio.com hosts sellers from multiple countries.
The Biblio API is a managed, monitored endpoint for biblio.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when biblio.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 biblio.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?+
- Build a book price comparison tool using
search_booksfiltered by ISBN across multiple seller listings - Track price trends for first editions or signed copies using the
signedfilter and scheduled search queries - Populate a used book catalog with condition, binding, and seller location data from search results
- Identify rare or out-of-print titles by author using the
authorparam and inspecting edition fields fromget_book_details - Cross-reference ISBN data from a personal library app against live marketplace prices
- Aggregate seller inventory by location using the
seller_locationfield in search results
| 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 Biblio.com have an official developer API?+
What does `get_book_details` return that `search_books` does not?+
get_book_details returns pages, edition, and currency fields alongside the standard bibliographic fields. Search results include price and shipping but omit edition and page count details. Use get_book_details when you need to distinguish between printings or display a complete listing.Can I filter search results by publication year range or price range?+
isbn, title, author, keywords, binding, signed, sort, and page. You can fork it on Parse and revise to expose year and price range as explicit parameters.Does the API return seller reviews or ratings?+
seller name and seller_location from search results, but no seller rating, review count, or feedback score fields are included in either endpoint. You can fork it on Parse and revise to add a seller detail endpoint that includes rating data.Are listings from all countries included, and how is currency handled?+
currency field is returned by get_book_details, letting you identify the denomination for a given listing's price. The search_books response includes price and shipping but does not expose currency at the list level, so you may need a follow-up get_book_details call for multi-currency handling.