Discover/BookDelivery API
live

BookDelivery APIbookdelivery.com

Search BookDelivery's US storefront by ISBN or product URL. Get price, condition, stock status, publisher, and fast-shipping eligibility for any book listing.

This API takes change requests — .
Endpoints
2
Updated
8d ago

What is the BookDelivery API?

The BookDelivery API exposes 2 endpoints covering the US storefront (us-en), returning up to 9 structured fields per listing including price, condition, stock status, and fast-shipping eligibility. Use get_book_details to retrieve full metadata from a product page URL, or search_by_isbn to look up listings by ISBN-13 and receive a ranked results array with direct product URLs.

This call costs1 credit / call— charged only on success
Try it
Product page URL. Accepts full URL (https://www.bookdelivery.com/int-en/book-{slug}/{isbn}/p/{product_id}) or relative path (/int-en/book-{slug}/{isbn}/p/{product_id}).
api.parse.bot/scraper/cd0fa5f5-0b09-4e85-88b9-bc1db1921a1e/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/cd0fa5f5-0b09-4e85-88b9-bc1db1921a1e/get_book_details?url=https%3A%2F%2Fwww.bookdelivery.com%2Fint-en%2Fbook-en-agosto-nos-vemos%2F9786287638358%2Fp%2F55900262' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 bookdelivery-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.

"""
BookDelivery US Book API Client
Get your API key from: https://parse.bot/settings
"""

import os
import requests
from typing import Optional


class ParseClient:
    """Client for BookDelivery US Book API via Parse.bot"""

    def __init__(self, api_key: Optional[str] = None):
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "cd0fa5f5-0b09-4e85-88b9-bc1db1921a1e"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")
        if not self.api_key:
            raise ValueError("API key required. Set PARSE_API_KEY environment variable or pass api_key parameter.")

    def _call(self, endpoint: str, method: str = "POST", **params) -> dict:
        """Make API call to Parse.bot scraper"""
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {"X-API-Key": self.api_key, "Content-Type": "application/json"}

        if method == "GET":
            response = requests.get(url, headers=headers, params=params)
        elif method == "POST":
            response = requests.post(url, headers=headers, json=params)
        else:
            raise ValueError(f"Unsupported method: {method}")

        response.raise_for_status()
        return response.json()

    def get_book_details(self, url: str) -> dict:
        """
        Get detailed information about a book from its product page URL.

        Args:
            url: Product page URL (full or relative path)

        Returns:
            Dictionary with book details including title, author, price, condition, etc.
        """
        return self._call("get_book_details", method="GET", url=url)

    def search_by_isbn(self, isbn: str) -> dict:
        """
        Search for books by ISBN-13 on the US storefront.

        Args:
            isbn: 13-digit ISBN-13 number (e.g., 9780141036144)

        Returns:
            Dictionary with search results array and total count
        """
        return self._call("search_by_isbn", method="GET", isbn=isbn)


def main():
    """Practical workflow: search for books and get detailed information"""
    
    # Initialize client
    client = ParseClient()
    
    # Example ISBNs to search for
    search_isbns = [
        "9780141036144",  # 1984 by George Orwell
        "9780008753832",  # Hooked by Asako Yuzuki
    ]
    
    all_books = []
    
    # Search for each ISBN and collect results
    print("=" * 60)
    print("SEARCHING FOR BOOKS BY ISBN")
    print("=" * 60)
    
    for isbn in search_isbns:
        print(f"\nSearching for ISBN: {isbn}...")
        try:
            search_results = client.search_by_isbn(isbn)
            
            if search_results.get("results"):
                for book in search_results["results"]:
                    print(f"  Found: {book['title']} by {book['author']}")
                    print(f"    Price: ${book['price']} {book['currency']}")
                    print(f"    Condition: {book['condition']}")
                    print(f"    In Stock: {book['in_stock']}")
                    
                    all_books.append(book)
            else:
                print(f"  No results found for ISBN {isbn}")
        except Exception as e:
            print(f"  Error searching for ISBN {isbn}: {e}")
    
    # Get detailed information for books with product URLs
    print("\n" + "=" * 60)
    print("GETTING DETAILED BOOK INFORMATION")
    print("=" * 60)
    
    for book in all_books:
        if "product_url" in book:
            print(f"\nFetching details for: {book['title']}")
            try:
                details = client.get_book_details(book["product_url"])
                
                print(f"  Title: {details['title']}")
                print(f"  Author: {details['author']}")
                print(f"  Publisher: {details['publisher']}")
                print(f"  ISBN: {details['isbn']}")
                print(f"  Price: ${details['price']} {details['currency']}")
                print(f"  Condition: {details['condition']}")
                print(f"  Stock Status: {'In Stock' if details['in_stock'] else 'Out of Stock'}")
                print(f"  Fast Shipping: {'Yes' if details['fast_shipping'] else 'No'}")
                
            except Exception as e:
                print(f"  Error fetching details: {e}")
    
    # Summary
    print("\n" + "=" * 60)
    print("SUMMARY")
    print("=" * 60)
    print(f"Total books searched: {len(search_isbns)}")
    print(f"Total books found: {len(all_books)}")
    
    if all_books:
        in_stock_count = sum(1 for book in all_books if book.get("in_stock"))
        print(f"Books in stock: {in_stock_count}")
        
        avg_price = sum(book.get("price", 0) for book in all_books) / len(all_books)
        print(f"Average price: ${avg_price:.2f}")


if __name__ == "__main__":
    main()
All endpoints · 2 totalmissing one? ·

Get detailed information about a book from its product page URL on the international storefront. Returns title, author, publisher, ISBN, price, currency, condition (New/Used), stock availability, and whether the book qualifies for fast shipping (in local warehouse).

Input
ParamTypeDescription
urlrequiredstringProduct page URL. Accepts full URL (https://www.bookdelivery.com/int-en/book-{slug}/{isbn}/p/{product_id}) or relative path (/int-en/book-{slug}/{isbn}/p/{product_id}).
Response
{
  "type": "object",
  "fields": {
    "isbn": "string - ISBN-13",
    "price": "number - price in the listed currency",
    "title": "string - book title",
    "author": "string - author name",
    "currency": "string - currency code (e.g. USD)",
    "in_stock": "boolean - whether the book is currently in stock",
    "condition": "string - New or Used",
    "publisher": "string - publisher name",
    "fast_shipping": "boolean - whether the book qualifies for fast shipping from local warehouse"
  },
  "sample": {
    "data": {
      "isbn": "9786287638358",
      "price": 17.69,
      "title": "En agosto nos vemos (in Spanish)",
      "author": "Gabriel García Márquez",
      "currency": "USD",
      "in_stock": true,
      "condition": "New",
      "publisher": "Random House",
      "fast_shipping": true
    },
    "status": "success"
  }
}

About the BookDelivery API

Endpoints

The get_book_details endpoint accepts a full BookDelivery product page URL in the format https://www.bookdelivery.com/us-en/book-{slug}/{isbn}/p/{product_id}. It returns a flat object with title, author, publisher, isbn, price, currency, condition (either New or Used), in_stock (boolean), and fast_shipping (boolean). The fast_shipping field indicates whether the copy is held in a local warehouse, which affects delivery speed.

ISBN Search

The search_by_isbn endpoint takes a 13-digit isbn string and queries the US storefront. The response includes a total integer and a results array of book listing objects. Each result carries the same core fields as get_book_details plus the product page URL, so you can chain directly into get_book_details for deeper data. When exactly one match is found, BookDelivery redirects to the product page and the API extracts details from there automatically.

Coverage and Scope

Both endpoints target the us-en storefront specifically, so pricing is returned in USD and availability reflects US inventory. The condition field distinguishes new from used copies at the listing level. There is no endpoint for searching by title, author, or category — ISBN-based lookup and direct product URL are the two supported access patterns.

Reliability & maintenance

The BookDelivery API is a managed, monitored endpoint for bookdelivery.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bookdelivery.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 bookdelivery.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?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Compare price and condition across multiple ISBNs to surface the cheapest available copy.
  • Check in_stock and fast_shipping status before routing a customer order through BookDelivery.
  • Build a book price tracker that polls get_book_details on a schedule and alerts on price changes.
  • Enrich an internal book catalog with publisher, author, and isbn fields from a product URL.
  • Validate ISBN-13 inventory status programmatically before listing a book on a resale platform.
  • Filter search results by condition to find new-only listings for a wishlist service.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does BookDelivery offer an official developer API?+
BookDelivery does not publish an official developer API or documented public endpoints for third-party use.
What does the `fast_shipping` field actually mean?+
It is a boolean returned by get_book_details and results from search_by_isbn. A value of true means the copy is stocked in a local warehouse, which typically results in faster domestic delivery compared to copies shipped from abroad.
Does the API cover used book listings or only new copies?+
Both. The condition field in every response is either New or Used, and the search_by_isbn results array can contain multiple listings at different conditions and prices for the same ISBN.
Can I search by title, author, or keyword instead of ISBN?+
Not currently. The API supports ISBN-13 lookup via search_by_isbn and direct product page retrieval via get_book_details. You can fork this API on Parse and revise it to add a keyword or title-based search endpoint.
Does the API return seller information or review data for listings?+
Not currently. Responses cover price, condition, stock status, publisher, author, ISBN, and shipping eligibility. Seller profiles, user reviews, and ratings are not included in the current response schema. You can fork this API on Parse and revise it to add those fields if they are relevant to your use case.
Page content last updated . Spec covers 2 endpoints from bookdelivery.com.
Related APIs in EcommerceSee all →
walmart.com API
Retrieve product data from Walmart.com including pricing, descriptions, availability, reviews, and category listings. Access real-time product information to search by keyword, look up items by ID or URL, and browse department categories.
homedepot.com API
Search and browse Home Depot's product catalog to compare pricing, check real-time availability, and review detailed product specifications. Find products across all categories, look up store locations and hours, and check fulfillment options including in-store pickup and delivery.
ikea.com API
Search and browse IKEA's full product catalog to find items by category, compare measurements, read customer reviews, and check real-time store availability and current deals. Discover new arrivals and best-selling products to help you shop smarter and find exactly what you need.
amazon.co.uk API
Access data from amazon.co.uk.
idealo.de API
Search for products on Idealo.de and retrieve detailed information including current seller offers, price history, technical specifications, and user and expert reviews. Compare prices across sellers and access comprehensive product data to evaluate deals.
target.com API
Search for products across Target's catalog and instantly check real-time in-store availability at nearby Target locations using your zipcode. Find exactly what you're looking for and discover which stores have it in stock, so you can shop smarter and faster.
amazon.fr API
Scrape product data from Amazon.fr, including search results, product details, specifications, seller offers, customer reviews, and current deals.
element14.com API
Search and browse Newark (element14)'s electronic components catalog to find product details, pricing, stock levels, and technical documentation. Retrieve specifications, explore categories and manufacturers, and access real-time inventory information to compare components.