Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Libraccio API page →
E-commerce & Marketplaces

Libraccio API & Scraper

The Libraccio API returns libraccio.it — the Italian bookseller that sells every title new and, where it has bought a copy back, used — as clean JSON in four actions: search, isbn, detail and facets.

4 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

Libraccio is a first-party store, not a marketplace: one seller, one new price and at most one used price per EAN, so there is no buy-box to reverse-engineer and no personal data on the source. search covers about 1.16 million records (1,028,002 general books, 120,452 school textbooks, 16,430 stationery items and a handful of e-readers when measured on 2026-10-14) and returns, for every EAN, Libraccio's new selling price, the cover price, the new discount, whether a used copy is in stock, the used price and the used discount, both dispatch times, the shop's own 30, 90 and 180-day sales counters, and the bibliography: authors, publisher, series, translators, editors, department, school type and subject, age band and years. The filters are the ones a textbook buyer or a bookseller actually needs — school type (Liceo scientifico, Scuole medie inferiori…), school subject, department, publisher, author, series, age band, year window, a new-price range and a used-price range — and every one was measured against an unfiltered call in the same run. isbn prices up to fifty ISBN-13, ISBN-10 or EAN codes in ONE request, keeps your order and tells you which ones Libraccio does not carry and which ones are not valid codes at all. detail opens the live product page for one EAN and returns what the shopper sees: the new offer and the used offer as separate objects with their own price, crossed-out price, availability wording and whether they can be bought, the cover price, the voucher Libraccio pays back on school books, unit counts for new and used, page count, publisher series, translator and the full description. Four honest limits. Libraccio has no condition grades: it sells one 'usato' state per book at one price, described in prose (school books may carry underlining, notes or solved exercises), so no grade ladder is invented. The search index can lag the shelf: across 32 books checked against their live pages, the used price matched 30 times and in the other two the used copy had just been reserved and the page no longer offered it — detail is the live answer. The new-stock flag in search is not 'buyable': 3 of those 32 disagreed with the page's own buy box, mostly preorders and supplier-orderable titles. And search returns the shop's own relevance order only, at most 10,000 hits per query. One ReefAPI key, no Libraccio account, and the standard { ok, data, meta, error } envelope.

Reference

Three prices per book, and what each one means

Libraccio publishes up to three different numbers for one EAN. The API returns them as separate fields, never as one 'price'. Example values are live readings from 2026-10-14.

fieldwhat it isexample (9788857311104)note
cover_pricethe publisher's cover price ('prezzo di copertina')18.00search derives it from the new price and the new discount; matched the product page's own cover price on 32 of 32 books checked
new_priceLibraccio's selling price for a NEW copy14.40new_discount_pct 20; detail only returns it when the page actually offers a new copy
used_priceLibraccio's price for its USED copy8.10used_discount_pct_vs_cover 55 — the used discount is measured against the cover price, not the new price

There is one used price per book, not one per copy and not one per condition: Libraccio does not grade used copies. When no used copy is in stock, used_price is null. When the page sells no new copy, detail returns new_price null and keeps the cover price.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/libraccio/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "rodari",
    "used_in_stock": true,
    "per_page": 20
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "libraccio",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 915.8,
    "record_count": 20,
    "bytes": 9416,
    "cache_hit": false,
    "total": 1054,
    "total_is_exhaustive": true,
    "returned": 20,
    "page": 1,
    "per_page": 20,
    "max_page": 53,
    "result_window": 10000,
    "has_more": true,
    "filters_applied": {
      "used_in_stock": true
    },
    "filter_check": {
      "used_in_stock": {
        "rows": 20,
        "violations": 0
      }
    },
    "upstream_requests": 1,
    "charged_credits": 1,
    "version": "1.0.0",
    "request_id": "487d885ea5104b5f",
    "queue_ms": 1.4,
    "fetched_at": "2026-10-14T18:57:25.516Z"
  },
  "data": {
    "books": [
      {
        "ean": "9788879268028",
        "isbn13": "9788879268028",
        "isbn10": "8879268023",
        "title": "Le avventure di Cipollino. Ediz. illustrata",
        "authors": [
          "Gianni Rodari"
        ],
        "author_sort": "Rodari, Gianni",
        "editors": [],
        "translators": [],
        "publisher": "Einaudi Ragazzi",
        "series": "La biblioteca di Gianni Rodari",
        "department": "Libri per ragazzi",
        "subject": null,
        "school_type": null,
        "school_subject": null,
        "characters": [],
        "age_band": "7",
        "age_band_label": "da 7 anni",
        "product_type": "book",
        "year_published": 2010,
        "year_edition": 2010,
        "year_published_raw": 2010,
        "date_published": "2010-01-19",
        "currency": "EUR",
        "new_price": 13.9,
        "new_discount_pct": 0,
        "cover_price": 13.9,
        "cover_price_derived": true,
        "new_in_stock": true,
        "new_dispatch_days": 1,
        "used_in_stock": true,
        "used_price": 6.26,
        "used_discount_pct_vs_cover": 54.96,
        "used_dispatch_days": 4,
        "used_saving_vs_new": 7.64,
        "rating": null,
        "sales_30d": 56,
        "sales_90d": 67,
        "sales_180d": 80,
        "image_url": "https://www.libraccio.it/images/9788879268028_0_350_0_75.jpg",
        "url": "https://www.libraccio.it/libro/9788879268028.html"
      },
      {
        "ean": "9788879268493",
        "isbn13": "9788879268493",
        "isbn10": "887926849X",
        "title": "Favole al telefono",
        "authors": [
          "Gianni Rodari"
        ],
        "author_sort": "Rodari, Gianni",
        "editors": [],
        "translators": [],
        "publisher": "Einaudi Ragazzi",
        "series": "La biblioteca di Gianni Rodari",
        "department": "Libri per ragazzi",
        "subject": null,
        "school_type": null,
        "school_subject": null,
        "characters": [],
        "age_band": "6",
        "age_band_label": "da 6 anni",
        "product_type": "book",
        "year_published": 2010,
        "year_edition": 2010,
        "year_published_raw": 2010,
        "date_published": "2010-09-14",
        "currency": "EUR",
        "new_price": 13.5,
        "new_discount_pct": 0,
        "cover_price": 13.5,
        "cover_price_derived": true,
        "new_in_stock": true,
        "new_dispatch_days": 1,
        "used_in_stock": true,
        "used_price": 6.08,
        "used_discount_pct_vs_cover": 54.96,
        "used_dispatch_days": 1,
        "used_saving_vs_new": 7.42,
        "rating": null,
        "sales_30d": 8,
        "sales_90d": 24,
        "sales_180d": 58,
        "image_url": "https://www.libraccio.it/images/9788879268493_0_350_0_75.jpg",
        "url": "https://www.libraccio.it/libro/9788879268493.html"
      },
      {
        "ean": "9788879261135",
        "isbn13": "9788879261135",
        "isbn10": "8879261134",
        "title": "Favole al telefono. Ediz. illustrata",
        "authors": [
          "Gianni Rodari"
        ],
        "author_sort": "Rodari, Gianni",
        "editors": [
          "O. Fatucci"
        ],
        "translators": [],
        "publisher": "Einaudi Ragazzi",
        "series": "Storie e rime",
        "department": "Libri per ragazzi",
        "subject": null,
        "school_type": null,
        "school_subject": null,
        "characters": [],
        "age_band": "6",
        "age_band_label": "da 6 anni",
        "product_type": "book",
        "year_published": 1997,
        "year_edition": 1997,
        "year_published_raw": 1997,
        "date_published": null,
        "currency": "EUR",
        "new_price": 12,
        "new_discount_pct": 0,
        "cover_price": 12,
        "cover_price_derived": true,
        "new_in_stock": false,
        "new_dispatch_days": null,
        "used_in_stock": true,
        "used_price": 5.4,
        "used_discount_pct_vs_cover": 55,
        "used_dispatch_days": 1,
        "used_saving_vs_new": 6.6,
        "rating": null,
        "sales_30d": 7,
        "sales_90d": 28,
        "sales_180d": 44,
        "image_url": "https://www.libraccio.it/images/9788879261135_0_350_0_75.jpg",
        "url": "https://www.libraccio.it/libro/9788879261135.html"
      }
    ],
    "seller": {
      "name": "Libraccio",
      "kind": "first_party_retailer",
      "country": "IT",
      "url": "https://www.libraccio.it/",
      "note": "Libraccio sells every copy itself, new and used; there is exactly one seller on this catalogue and it is a company."
    }
  }
}
Actions

What the Libraccio API does

ActionDescriptionConcrete use caseKey params
searchSearch Libraccio's catalogue. Free text plus exact filters on author, publisher, series, department, school type and subject, character, product family, age band, publication year, new price, used price and new/used stock. One row per EAN with the NEW selling price, the cover price, the new discount, the USED price and its discount against cover, both stock flags, both dispatch times, the shop's own 30/90/180-day sales counters and the full bibliographic record. Every filter was measured to change the total in the same run; the result window is 10,000 hits per query and the engine says so instead of looping past it. Order is the shop's own relevance (no other sort exists on the public search backend).Pricing teams call search to search Libraccio's catalogue.query, author, publisher, series, department, ...
isbnPrice up to 50 ISBNs/EANs against Libraccio in ONE upstream request — new price, cover price, used price, both stock flags and dispatch days, plus the bibliographic record. ISBN-10s are converted to ISBN-13 and every check digit is verified first. The answer keeps your order and separates found, not carried by Libraccio, and invalid input.Marketplace operators call isbn to get price up to 50 ISBNs/EANs against Libraccio in ONE upstream request.isbns
detailEverything Libraccio's product page publishes for one EAN: title, authors, publisher, series, translator, school subject and type, edition and publication year, physical description and page count, category, full description. Then the two offers as the page shows them — the NEW buy box (price, crossed-out cover price, availability wording, whether it can be bought) and the USED buy box (price, reference cover price, availability) — with the cover price, the new discount, the saving of used against new and against cover, the school-book voucher Libraccio pays back, free-shipping flag, stock units for new and used and dispatch days, and the review count. Prices are cross-checked against the page's own product data and any disagreement is published.Catalog enrichment teams call detail to get everything Libraccio's product page publishes for one EAN.ean
facetsThe shape of the catalogue (or of one search) in one request: departments, publishers, authors, series, school types, school subjects, characters, product families, age bands, new/used stock split and years, each with a count, plus min/avg/max new and used price. Use it to get the exact spellings `search` filters take. Counts are index-wide and can exceed what `search` returns for the same filter (measured: stationery facet 16,430 vs search 6,756).Retail analysts call facets to get the shape of the catalogue (or of one search) in one request.query, department, product_type, top
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/libraccio/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"rodari","used_in_stock":true,"per_page":20}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.libraccio.search with {"query":"rodari","used_in_stock":true,"per_page":20}.
Use cases

Who uses this API and why

  • Price a school book list in one request: send the class's ISBNs to isbn and get the new price, the used price and whether a used copy is in stock for each, in your order.
  • Find the cheapest way to a textbook: filter search by school type and subject with used_in_stock=true and a max_used_price, then compare used_price with new_price on every row.
  • Track used-book supply for a title or a publisher over time: every row carries a used-in-stock flag, the used price and the shop's own 30/90/180-day sales counters.
  • Monitor Italian list prices and discounts: cover_price, new_price and new_discount_pct are separate fields, so a promotion shows up as a discount rather than as a silent price change.
  • Build a catalogue check for a publisher, series or author in the Italian market — facets returns the exact spellings and counts the filters take.
FAQ

Questions developers ask before integrating

Does Libraccio grade its used books like other second-hand shops?

No. Libraccio sells one 'usato' state per book at one price. Its own policy page describes used copies in words — they may show wear, and used school books may carry underlining, highlighting, margin notes or already-solved exercises — but there is no Very Good / Good ladder. The API returns what exists: a used price, a used-in-stock flag, the used offer's availability wording and a unit count, and no invented grade.

Can I look up many ISBNs at once?

Yes — up to 50 per call with the isbn action, as ISBN-13, ISBN-10 or EAN, with or without dashes. ISBN-10s are converted to the ISBN-13 the shop is keyed on and every check digit is verified first, so a typo comes back under invalid instead of as a missing book. The reply keeps your order and lists found, not carried by Libraccio, and invalid separately. Measured: 50 books in one call, 526 ms.

Are search results and the product page always the same?

Almost, and the gap is documented. Across 32 books in 8 categories the used price in search matched the live product page 30 times; in the other two the used copy had just been reserved and the page no longer offered it. The cover price matched 32 of 32, and the new price matched 30 of 30 wherever the page offered a new copy. If you are about to buy, use detail — it reads the live page and reports any disagreement inside the page itself.

Does new_in_stock=false mean I cannot buy it new?

Not always. It is the shop's own stock flag, and 3 of 32 books checked disagreed with the page's buy box: two were orderable new (one a school-book preorder, one 'ready to ship in 10 working days') while flagged false, and one was flagged true with no new offer on the page. detail returns the page's own wording in new_offer.availability and a buyable flag.

Which filters work?

All of the ones offered, each measured against an unfiltered call in the same run: author (7,289 → 289), publisher (7,289 → 133), series (8,112 → 49), department (134,836 → 41,004), school type (7,889 → 106), school subject (4,120 → 55), character (461 → 74), product type (6,293 → 297), age band (2,124 → 231), used in stock (8,112 → 1,296), new price floor and ceiling (29,806 → 7,264 and 7,481), used price floor and ceiling (8,112 → 487 and 244) and a year window (8,112 → 2,152 and 98). An unknown parameter name is rejected rather than ignored. There is no sort parameter: only the shop's relevance order exists.

How deep can I page and is the total exact?

Up to 10,000 hits per query; a page past that is rejected with the last readable page for your page size, because the source answers it with an empty result that looks like the end. The unfiltered catalogue total drifts slightly between calls (1,164,935 and 1,164,831 the same afternoon) and is flagged as not exhaustive; a narrow query is exact.

What does detail add for school books?

The school type and subject the book is adopted for, the voucher Libraccio pays back on a new school book (for example 4.05 EUR on a 27.00 EUR history book), whether the title is a preorder, and both offers side by side so you can see the saving of used against new and against the cover price.

Is the stock number real?

detail returns the unit counts the product page carries for new and for used, plus a status and a sellable flag, because a count alone is not enough: on 2 of 32 pages a used count above zero came with a status the shop does not sell from, and no used offer. The sellable flag agreed with the page's used offer on 25 of 25 pages that carried one. The source does not label these numbers on screen, so treat them as stock depth, not as a promise.

What is the Libraccio API?

Libraccio API is a ReefAPI endpoint group for italy's new + used bookseller as json: about 1.16 million books, school textbooks and stationery by isbn, author, publisher, school or subject — with libraccio's new price, cover price and used ('usato') price side by side, and up to 50 isbns priced in one call. It returns live JSON through POST requests under /libraccio/v1.

Is the Libraccio API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Libraccio calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Libraccio login or account?

No login to Libraccio 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.

How fresh is the Libraccio data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Libraccio API use?

Libraccio actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Libraccio from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call libraccio actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / libraccio

Libraccio

Italy's new + used bookseller as JSON: about 1.16 million books, school textbooks and stationery by ISBN, author, publisher, school or subject — with Libraccio's new price, cover price and used ('usato') price side by side, and up to 50 ISBNs priced in one call.

base /libraccio/v14 endpoints
post/libraccio/v1/isbn1 credit

Price up to 50 ISBNs/EANs against Libraccio in ONE upstream request — new price, cover price, used price, both stock flags and dispatch days, plus the bibliographic record. ISBN-10s are converted to ISBN-13 and every check digit is verified first. The answer keeps your order and separates found, not carried by Libraccio, and invalid input.

ParameterAllowed / rangeDescription
isbnsrequired—Up to 50 ISBN-13 / ISBN-10 / EAN codes in ONE call, mixed freely. The answer keeps your order and separates found, not carried, and invalid.
include_pii = falseoptional—Accepted for gateway compatibility. There is no personal data on this source: Libraccio is the only seller and it is a company.
Try in playground →
post/libraccio/v1/detail2 credits

Everything Libraccio's product page publishes for one EAN: title, authors, publisher, series, translator, school subject and type, edition and publication year, physical description and page count, category, full description. Then the two offers as the page shows them — the NEW buy box (price, crossed-out cover price, availability wording, whether it can be bought) and the USED buy box (price, reference cover price, availability) — with the cover price, the new discount, the saving of used against new and against cover, the school-book voucher Libraccio pays back, free-shipping flag, stock units for new and used and dispatch days, and the review count. Prices are cross-checked against the page's own product data and any disagreement is published.

ParameterAllowed / rangeDescription
eanrequired—The `ean` every search row carries — or any ISBN-13 / ISBN-10 / 13-digit EAN, with or without dashes. ISBN-10 is converted to the 978 ISBN-13 the shop is keyed on; a wrong check digit is rejected before any request.
include_pii = falseoptional—Accepted for gateway compatibility. There is no personal data on this source: Libraccio is the only seller and it is a company.
Try in playground →
post/libraccio/v1/facets1 credit

The shape of the catalogue (or of one search) in one request: departments, publishers, authors, series, school types, school subjects, characters, product families, age bands, new/used stock split and years, each with a count, plus min/avg/max new and used price. Use it to get the exact spellings `search` filters take. Counts are index-wide and can exceed what `search` returns for the same filter (measured: stationery facet 16,430 vs search 6,756).

ParameterAllowed / rangeDescription
queryoptional—Free text over title, author, publisher, series and the EAN/ISBN itself, matched the way the shop's own search box matches it (typo-tolerant). Optional when a filter is given.
departmentoptional—Libraccio's own department ('reparto'), e.g. 'Narrativa', 'Libri per ragazzi', 'Diritto', 'Fumetti & graphic novels'.
product_typeoptionalbook · school_book · stationery · hardwareProduct family. 'school_book' is the textbook catalogue where the used offer is deepest.
top = 20optional1–100How many values to return per facet (by count).
include_pii = falseoptional—Accepted for gateway compatibility. There is no personal data on this source: Libraccio is the only seller and it is a company.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.