Barnesandnoble APIbarnesandnoble.com ↗
Access Barnes & Noble book metadata, pricing, customer reviews, and bestseller rankings via 5 endpoints covering search, details, and category browsing.
What is the Barnesandnoble API?
The Barnes & Noble API provides 5 endpoints to query book metadata, retail pricing, and customer reviews from the B&N catalog. Use search_books to find titles by keyword, author, or ISBN-13, and get_book_details to retrieve full records including synopsis, format, rating, and current price. The get_bestsellers endpoint returns up to 20 ranked titles with no required inputs.
curl -X GET 'https://api.parse.bot/scraper/ac7378c9-f1a3-4869-a348-81a2bfc2e2c8/search_books?page=1&limit=5&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 barnesandnoble-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: Barnes & Noble SDK — search books, get details, check reviews."""
from parse_apis.barnes_noble_api import BarnesAndNoble, BookNotFound
client = BarnesAndNoble()
# Search for books by keyword — limit= caps total items fetched.
for book in client.books.search(query="python programming", limit=5):
print(book.title, book.price, book.ean)
# Get current bestsellers (single-page list).
for book in client.books.bestsellers(limit=3):
print(book.title, book.author)
# Drill into a specific book by EAN for full details.
detail = client.books.get(ean="9781718502703")
print(detail.title, detail.price, detail.format)
# Access the reviews sub-resource on a book instance.
book = client.books.search(query="atomic habits", limit=1).first()
if book:
review = book.reviews.get()
print(review.rating, review.count)
# Typed error handling when a book EAN doesn't exist.
try:
client.books.get(ean="0000000000000")
except BookNotFound as exc:
print(f"Book not found: {exc.ean}")
print("exercised: books.search / books.bestsellers / books.get / book.reviews.get")
Search for books by keyword, title, author, or ISBN. Returns paginated results from the Barnes & Noble catalog via their retail search API. Each result includes title, author, EAN, price, format, and URL.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number to retrieve. |
| limit | integer | Number of results per page (max 28). |
| queryrequired | string | Search keyword, title, author, or ISBN. |
{
"type": "object",
"fields": {
"page": "string, current page number",
"books": "array of book objects with title, author, ean, price, format, url",
"query": "string, the search query submitted"
},
"sample": {
"data": {
"page": "1",
"books": [
{
"ean": "9781718502703",
"url": "https://www.barnesandnoble.com/w/Python-Crash-Course-3rd-Edition/Eric-Matthes/1142968265?ean=9781718502703",
"price": "$49.99",
"title": "Python Crash Course, 3rd Edition",
"author": "Eric Matthes",
"format": "Paperback"
}
],
"query": "python programming"
},
"status": "success"
}
}About the Barnesandnoble API
Search and Book Metadata
The search_books endpoint accepts a query string (keyword, title, author, or ISBN) and returns paginated results — up to 28 per page — each containing title, author, ean, price, format, and url. For deeper metadata on a specific title, get_book_details takes a 13-digit ean and returns synopsis, rating, rating_count, a details object with fields like Format and ISBN-13, and the canonical product URL. The rating field is a number out of 5 or null if no reviews exist.
Reviews and Ratings
get_book_reviews returns the Bazaarvoice-sourced review summary for a given ean: an average rating and total count. When a book has no reviews, rating is null and count is 0. This endpoint is intentionally lightweight — it covers aggregate rating data only, not individual review text or reviewer metadata.
Bestsellers and Category Browsing
get_bestsellers requires no parameters and returns up to 20 books ordered by sales rank, with a fixed category value of 'Bestsellers'. To browse beyond the bestseller list, browse_category accepts a category_id (a B&N web category identifier such as '2916841') and an optional page integer, returning books ranked within that category. An optional category_name parameter is accepted for reference but does not affect results. Category IDs correspond to B&N's navigation taxonomy and must be known in advance.
The Barnesandnoble API is a managed, monitored endpoint for barnesandnoble.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when barnesandnoble.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 barnesandnoble.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?+
- Track retail price changes for specific ISBNs using
get_book_detailswith a 13-digitean. - Build a bestseller monitor that polls
get_bestsellersdaily and logs rank shifts for the top 20 titles. - Search by author name via
search_booksto enumerate a backlist with EANs, formats, and prices. - Aggregate
ratingandrating_countfromget_book_reviewsacross a set of ISBNs for comparison. - Populate a book discovery feed by browsing multiple
category_idvalues throughbrowse_category. - Cross-reference B&N
priceandformatfields with other retailers for price comparison tooling. - Build a new-release tracker by combining
browse_categorypagination withget_book_detailssynopsis data.
| 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 Barnes & Noble offer an official developer API?+
What does `get_book_reviews` return beyond the star rating?+
get_book_reviews returns three fields for a given ean: the ean itself, the aggregate rating (a float out of 5 or null), and the total review count (an integer). It does not return individual review text, reviewer names, dates, or helpfulness votes. The API covers search_books, get_book_details, get_book_reviews, get_bestsellers, and browse_category. You can fork it on Parse and revise to add an endpoint returning individual review content if needed.How do category IDs work in `browse_category`, and where do I find them?+
browse_category requires a category_id string that maps to B&N's internal navigation taxonomy (for example, '2916841'). These IDs are not enumerated by the API itself. You need to identify them from the B&N website URL structure before making a call. The optional category_name param is stored for your reference but has no effect on the query.Does the API return audiobook or e-book formats alongside print editions?+
format field in search and detail responses reflects whatever format the matched product page represents — this can include Paperback, Hardcover, NOOK Book, or audiobook formats. However, searching for a single ean returns data for that specific edition only; the API does not automatically return all format variants for a title. You can fork it on Parse and revise to add a multi-format lookup endpoint.Is inventory or stock status available through any endpoint?+
get_book_details endpoint returns price, format, rating, and synopsis, but not in-stock flags or shipping availability. You can fork the API on Parse and revise to add stock status if that field is relevant to your use case.