Every used book World of Books has, by ISBN — and every copy's grade, price and warehouse
The World of Books API returns wob.com / worldofbooks.com — World of Books Group of Coventry, England, the UK's largest second-hand bookseller — as clean JSON in four actions: search, detail, isbn and categories.
4 active endpoints, on 1 and 3 credit tiers.
- POST/worldofbooks/v1/search
- POST/worldofbooks/v1/detail
- POST/worldofbooks/v1/isbn
- POST/worldofbooks/v1/categories
What World of Books endpoints does ReefAPI ship?
4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
World of Books API
4 of 4 endpoints, ready to run
Up to twenty ISBNs in one request. ISBN-13, ISBN-10 and 13-digit barcodes may be mixed; every ISBN-10 is converted to the ISBN-13 the catalogue is keyed on and every check digit is verified before the call, so a typo is rejected rather than answered as a missing book. The reply keeps your order and separates found, not carried by this storefront, and not a valid ISBN.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the World of Books API works
World of Books is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 438 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Price a reading list, then buy the right copy at the right grade
The thing that makes a second-hand bookseller hard to read is that the price depends on the individual copy, not on the title. Three calls get you from a list of ISBNs to the exact copy you want.
One request, three books, order preserved. Each row comes back with the cheapest live price in GBP, the conditions in stock, a real unit count and a ready-made handle. The ISBN-10 in the list is converted before the lookup, so it resolves like the others.
Open the edition. You get the page count, publisher, binding and description, and then every copy on the shelf: its grade, its own price, whether it is buyable and which warehouse holds it. summary.price_by_condition gives the whole condition ladder in one object.
Same action, same book, the other storefront. A different catalogue, a different currency and a different copy table — and the response names the market, the country and the currency it actually read, so the comparison cannot drift.
A priced reading list, and for the title you care about a full copy table rather than a single from-price — so you can choose a Very Good copy at its own price instead of discovering at checkout that the cheap number was the Well Read one. Where the catalogue's cheapest price and the page's cheapest available copy disagree, the response says so with a flag and a named warning instead of picking one. Add a categories call and you also have the exact author and publisher spellings the search filters take.
curl -X POST https://api.reefapi.com/worldofbooks/v1/isbn \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"market":"uk","isbns":["9781408855652","9780441172719"]}'{
"ok": true,
"data": { … },
"meta": {
"api": "worldofbooks",
"endpoint": "isbn",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}World of Books' five conditions, and the three identifiers that are not interchangeable
The grade tokens and their order are World of Books' own, read from its own catalogue; nothing is remapped onto a scale of ours. The counts are one measured run on the UK storefront, out of 6,900,135 editions in the same call — they move with the shelf, and they count EDITIONS that have at least one copy in that grade, not copies. Condition filters editions; detail tells you which copy in which grade carries which price.
| grade | what the source calls it | UK editions with a copy in this grade | share of the run |
|---|---|---|---|
| NEW | New | 5,720,509 | 82.9% |
| LIKE_NEW | Like New | 354,420 (facet count) | — |
| VERY_GOOD | Very Good | 7,992,943 (facet count) | — |
| GOOD | Good | 1,621,381 (facet count) | — |
| WELL_READ | Well Read | 1,701,174 | 24.7% |
Two numbers appear above on purpose, because the source publishes two and they do not agree: the figures with a share are search totals measured in one run, and the ones marked 'facet count' come from the catalogue's own facet counter, which counts the whole index while a search runs behind the storefront's own rule that drops unpriced records. The API publishes both and says which is which; a facet count is an upper bound on what a search will return. On identifiers: ISBN-13 and ISBN-10 both key a book and the API returns both, deriving the ISBN-10 from a 978-prefixed ISBN-13 when the catalogue leaves it blank and flagging that it did. A 979 ISBN has no ISBN-10 and gets null. On a DVD, CD or game there is no ISBN at all — the EAN or UPC goes out as barcode_ean and the Amazon ASIN as asin.
Storefronts, currency, identifiers and conditions — all measured against the live site
Every row below came from a live call on 2026-10-08, not from the spec text. Where a measurement goes against us it is written down anyway.
Exactly two: the United Kingdom in GBP and the United States in USD. These are the only two the site publishes. The 66 countries World of Books ships to are all served from one of those two catalogues.
Changes the catalogue, the edition, the price list, the stock and the currency — not the wording. For one Harry Potter ISBN the UK store published GBP 3.70 over 1,855 units and the US store USD 3.48 over 875, and a keyword search for the title returned the UK Philosopher's Stone on one storefront and the US Sorcerer's Stone, a different ISBN, on the other.
Pinned to the storefront and echoed on every response and every copy row. GBP on uk, USD on us. The publisher's list price is only ever returned in the storefront's own currency; where the source holds the other market's list price instead, it goes out under its own name rather than being relabelled.
No. ISBN-13, ISBN-10 and the per-copy SKU are the same strings on both; only the price, the stock, the availability and the currency change. A copy held in the other country is re-priced rather than converted — the same four UK copies read GBP 3.70 at home and a flat USD 10.00 on the US store, a ratio of 2.70 against the site's own published rate of 1.32 — so each storefront has to be read on its own.
ISBN-13 and ISBN-10 are both indexed and both returned, and an ISBN-10 you pass in is converted arithmetically rather than searched for. Where the catalogue leaves ISBN-10 blank on a 978 book the API derives it and flags that it did; a 979 ISBN has no ISBN-10 and gets null. On a DVD, CD or game there is no ISBN at all: the catalogue puts an EAN or UPC in the ISBN-13 slot and an Amazon ASIN in the ISBN-10 slot, and those are returned as barcode_ean and asin with the ISBN fields left null.
Search returns editions, one row per barcode. Detail returns the physical copies behind one edition: measured across ten editions, six to ten copies each with three to five available at once, every copy carrying its own grade, its own price, its own availability and the country holding it.
World of Books' own five grades, verbatim and in its own order: New, Like New, Very Good, Good, Well Read. Nothing is remapped. Condition filters editions that have at least one copy in that grade; the per-copy price ladder is in detail's summary.
A real unit count per edition, not an in-stock flag: 816, 875 and 1,855 were all returned in one run, and a hundred-copy floor left 667,365 UK editions. A copy with no price in the storefront you asked for comes back with price null and a flag, never as 0.00 — which is the literal value the source carries there.
Roughly 8 million editions, with 8,222,289 of them books and the rest music, DVD and games. The total returned with a search is the source's own ESTIMATE and it drifts: 7,175,501, 7,173,373 and 7,191,099 for the same query minutes apart, so it is published as total_estimate with a flag. The shop's own product counter is not used at all: it reports the same saturated number for products and for collections.
A thousand records per query. The API rejects a page past the window with the exact maximum for your page size, because the source answers an out-of-window page with a success status and an empty body that reads like the end of the results. Narrow with a filter or sort by price to reach deeper stock.
Keyword, author, publisher, category, condition, binding, language, product type, a year window, a price range, a stock floor and four sort orders — each measured against an unfiltered call in the same run, on both storefronts, against three different controls. An in-stock filter is deliberately not offered because it moved the total by zero, and nine of the thirteen sort orders the site's theme advertises have no live index behind them.
The search catalogue and the product page are two surfaces and the API never hides a disagreement. The catalogue's cheapest price matched the page's cheapest available copy on 23 of 24 editions checked; in the exception the catalogue quoted 2.50 and the page 14.38, and detail publishes both with a flag. The two also use different words for the same fact — Hardcover against Hardback, publishing group against imprint — and detail returns both rather than picking one.
What people build with World of Books
The jobs this data is most often used for.
endpoints
credits per call
Price a shelf, a reading list or a whole wishlist in one request: twenty ISBNs go out together and come back with the cheapest live price, the conditions in stock and the unit count for each.
Resolve a barcode scan to a real book record — ISBN-10 and ISBN-13 are both indexed, and an ISBN-10 is converted arithmetically rather than searched for.
Source second-hand stock at the condition you actually want: filter editions down to the ones with a Like New or Very Good copy, then read that copy's own price instead of a from-price.
Compare the UK and US second-hand markets for the same title on the same day, in each market's own currency, with the warehouse named on every copy.
What World of Books data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 438 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/worldofbooks/v1/isbn \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"market":"uk","isbns":["9781408855652","9780441172719"]}'import requests
r = requests.post(
"https://api.reefapi.com/worldofbooks/v1/isbn",
headers={"x-api-key": REEF_KEY},
json={
"market": "uk",
"isbns": [
"9781408855652",
"9780441172719"
]
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up World of Books.
Get a free key →Is World of Books a marketplace, and whose price am I reading?▾
It is a first-party store. World of Books Group buys, grades and resells every book itself, so there is one seller, one grading scale and one price per copy. Nothing in a response is another trader's offer, there is no buy-box, and there is no personal data on the source — the only seller is a company.
Can I look a book up by ISBN, and does ISBN-10 work?▾
Yes to both, and ISBN is a first-class key rather than a text search. Both ISBN-10 and ISBN-13 are indexed and both are returned on every book row. An ISBN-10 you pass in is converted arithmetically to the ISBN-13 the catalogue is keyed on, so 1408855658 and 9781408855652 resolve to the same record, and dashes and spaces are fine. Every check digit is verified before the call goes out, which means a typo comes back as a rejected input instead of as a book that does not exist. The isbn action takes up to twenty at once in a single request.
Which countries can I read, and does the country change the price or only the language?▾
Two storefronts: the United Kingdom in GBP and the United States in USD. These are the only two the site publishes, and the country changes the catalogue, the edition, the price, the stock and the currency — not the wording. Measured on 2026-10-08 for one Harry Potter ISBN, the UK store published GBP 3.70 over 1,855 units and the US store USD 3.48 over 875, and a keyword search for the title returned the UK Philosopher's Stone on one storefront and the US Sorcerer's Stone, a different ISBN, on the other. The 66 countries World of Books ships to are all served from one of those two catalogues.
How many copies does one book actually have, and is the stock number real?▾
Far more than a listing suggests, because the unit is the copy. Measured across ten editions on 2026-10-08, each resolved to between six and ten separate copies with three to five available at once, each copy carrying its own grade, its own price and the warehouse holding it. The stock figure on an edition is a real unit count rather than an in-stock flag: 816, 875 and 1,855 were all returned in the same run, and filtering for a hundred copies or more left 667,365 UK editions.
Why is the same copy a different price on the two storefronts?▾
Because a copy held in the other country is re-priced for that market, not converted. The same four UK-held used copies of one ISBN read GBP 3.70, 3.70, 3.70 and 3.78 on the UK storefront and a flat USD 10.00 on the US one — a ratio of 2.70 against the site's own published exchange rate of 1.32. So there is no arithmetic that gets you from one to the other, and guessing one from the other would be wrong. The API returns the storefront you asked for, names the warehouse country on every copy, and tells you whether that copy is buyable in that market. Where a copy has no price at all in the market you asked for, the price comes back null — never as 0.00, which is the literal value the source carries there.
Which filters actually work?▾
Only the ones measured to change the result against an unfiltered call in the same run, on both storefronts and against three different control queries. Working: keyword, author, publisher, the three-level category tree, cosmetic condition, binding, language, product type, a publication-year window, a price range, a minimum stock depth and four sort orders. Measured on the UK storefront against 6,900,135 editions in one run: Hardback left 1,664,480, French 37,091, a 50 floor 65,298, a 3 ceiling 533, a hundred-copy floor 667,365, Stephen King 569. An in-stock filter is deliberately NOT offered: the storefront already drops unpriced records from every search, so the filter moved the total by exactly zero. And the site's own theme advertises thirteen sort orders while only four have a live index behind them, so the other nine are not offered rather than failing at call time.
How deep can I page, and is the result total exact?▾
The result window is a thousand records per query and the API says so with the exact maximum page for your page size, because the source answers an out-of-window page with a success status and an empty body that looks like the end of the results. To reach deeper stock, narrow with a filter or sort by price. The total the source reports alongside your rows is its own estimate, not a count: it answered 7,175,501, 7,173,373 and 7,191,099 for the same query minutes apart, so it is published as total_estimate with a total_is_estimate flag. A narrow query is exact and the flag says so. The rows themselves are always exact.
What bibliography do I get — page count, publisher, edition?▾
Search rows carry the author, publisher, publication year and date, binding, language, the three-level category path, the series where the source has one, and both ISBNs. Detail adds the page count, the description the store prints, the full breadcrumb, the publisher's list price and the complete copy table. One thing to know: the catalogue and the product page use different vocabularies for two of these facts — the page says Hardcover where the catalogue facet says Hardback, and the page often names the publishing group where the catalogue names the imprint, Simon & Schuster against Scribner. Neither is wrong, so detail returns both under separate names rather than silently picking one, and the catalogue value is the one a search filter round-trips on.
Is the picture a photo of the copy I would receive?▾
No, and the store says so itself — the image is the edition's cover, and the page carries the note that the actual binding, cover or edition may vary. There is no per-copy photograph and no per-copy defect note on the source, so none is invented here; the grade is the condition information that exists.
Does the catalogue price always match the page?▾
Almost always, and where it does not the API tells you. Across twenty-four editions checked against the product page's own published offers, the catalogue's cheapest price matched the cheapest available copy twenty-three times. In the exception the catalogue quoted USD 2.50 while the page's cheapest available copy was 14.38 — the search index lagging one reprice. Detail returns both numbers and sets a flag with a named warning when they disagree, so the gap is visible rather than quietly averaged away.
Does World of Books sell anything other than books?▾
A little, and it matters for the identifiers. Measured on 2026-10-08 the catalogue held 8,222,289 books, 1,351 music releases, 785 DVDs and 168 games. On those non-book rows the catalogue puts an EAN or UPC in the ISBN-13 field and an Amazon ASIN in the ISBN-10 field, so the API publishes them as barcode_ean and asin and leaves the ISBN fields null, and it returns the director or artist where a book would have an author. Filter with product_type if you want books only.
What is the World of Books API?▾
World of Books API is a ReefAPI endpoint group for the uk's biggest second-hand bookseller as json: ~8 million used and new books searchable by isbn-10, isbn-13, author, publisher, category, binding, language, year, price and condition — then every physical copy on the shelf with its own grade, its own price and the warehouse holding it. It returns live JSON through POST requests under /worldofbooks/v1.
Is the World of Books API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. World of Books calls use the same shared credit balance as every other ReefAPI engine.
Do I need a World of Books login or account?▾
No login to World of Books is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
191 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling World of Books, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 437 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-08.