Back Market API

Every seller's price for the same refurbished device, as JSON

Back Market is a marketplace, not a shop: one product page is a competition between sellers and condition grades, and the price you see depends on which grade and which seller won the box.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Back Market endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
B
/backmarket/v1

4 active endpoints, on 1 and 2 credit tiers.

  • POST/backmarket/v1/search
  • POST/backmarket/v1/detail
  • POST/backmarket/v1/categories
  • POST/backmarket/v1/markets

What Back Market endpoints does ReefAPI ship?

4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

4 endpoints

search

2 cr

Search or browse one Back Market storefront.

required
—
optional
market, query, brand, model, colour, storage, grade, price_min, price_max, deals_only, category_id, sort, page, page_size, include_facets

detail

1 cr

Every live seller offer for ONE product in one market, by product_id.

required
product_id
optional
market, grade

categories

1 cr

The live category tree of one storefront, read off the storefront's own navigation.

required
—
optional
market

markets

1 cr

The storefronts this engine serves, with each one's host, locale and ISO currency.

required
—
optional
—

Every parameter, every allowed value →

Back Market API

3 of 4 endpoints, ready to run

View docs ↗

The grid one Back Market storefront shows, with that storefront's own exact match count: product id, title, URL, price and currency, the price string the site printed, Back Market's own condition grade and its local label, stock, warranty months, seller id and the new-retail reference price.

2 credits0 required · 10 optional
POST/backmarket/v1/search
idle
// 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 Back Market API works

Back Market is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 438 engines.

02
Call
POST /backmarket/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Find the cheapest Premium iPhone 13 in Germany, then see who else is selling it

Search is the shortlist and detail is the competition. Two calls take you from a keyword to every seller's price for one device.

01search
POST/backmarket/v1/search
{ market: "de", query: "iphone 13", grade: "premium", sort: "price_asc", page_size: 24 }

Returns the storefront's own total for exactly this scope — 30 Premium matches out of 310 for the bare keyword on the run we measured — with the cheapest first. Keep `product_id` from the row you want.

02detail
POST/backmarket/v1/detail
{ market: "de", product_id: "<product_id from step 1>" }

Returns every live offer for that product, cheapest first, with each offer's grade, price, stock, warranty and seller id, plus grades_available, sellers_count and price_min/price_max.

03detail
POST/backmarket/v1/detail
{ market: "us", product_id: "<same product_id>" }

The same id in another storefront, to compare the ladder in USD. A product that is not live there answers NOT_FOUND rather than an empty list.

One product id, the whole seller ladder behind it, and the same ladder in a second currency. On the run we measured, that iPhone 13 128 GB had 7 offers from 5 sellers across 4 grades, 258.00 to 365.00 EUR.

request
curl -X POST https://api.reefapi.com/backmarket/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"iphone 13","market":"de","page_size":24}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "backmarket",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

What a row carries

Field fill measured on 60 rows pooled across three categories (phones, laptops, audio) on backmarket.de, 2026-10-08. The numeric price was checked against the price string the storefront itself printed on the same row: 60 of 60 agreed.

FieldFillWhat it is
product_id60/60The product UUID. Pass it straight back to `detail`, or read it off the last path segment of any Back Market product URL.
price + currency60/60The live offer price and the ISO currency of that storefront. The currency is read off the row, not assumed from the country.
price_display60/60The price string the storefront itself rendered ("258,00 €", "$669.00", "£395.00"). A free second witness for the number beside it.
grade + grade_value60/60Back Market's condition grade. `grade_value` is the source's own number and is the same in every market; `grade` is the stable name for it.
grade_label60/60The same grade in that storefront's own words. Value 12 prints as "Gut" on backmarket.de, "Fair" on backmarket.com and "Buono" on backmarket.it — all three measured.
price_new_reference60/60The new-retail reference the site prints struck through. NOT a Back Market price: 729.00 EUR beside a 258.00 EUR refurbished iPhone 13. `discount_pct_vs_new` is computed from the pair.
stock60/60The seller's own quantity for that offer. 0 is returned as 0, never as empty.
warranty_months60/60The warranty the listing states, in months.
seller_id60/60The marketplace's numeric seller id, so you can group or follow one seller. Back Market publishes no seller NAME on this surface, so none is invented.
rating + rating_count60/60The product's rating and review count. Product level, not seller level: it is identical on all 7 offers of one product across 5 different sellers, and it matches the rating the product page itself publishes.
brand / model / colour / category60/60Manufacturer, exact model, colour in that market's language, and the category with its numeric id.
specs_summary60/60The one-line spec string the storefront prints under the title ("Mitternacht • 128 GB • Physische SIM + eSIM").
scores28/60Back Market's own repairability, camera, performance, screen and longevity scores. Published for some categories only — 24 of 24 laptop rows, 4 of 24 phone rows, 0 of 12 audio rows. Empty where the source publishes none.

Only about 1000 rows are retrievable per query however large the total is: the whole backmarket.de catalogue reports 18,141 matches but serves 42 pages of 24, 20 of 50 or 10 of 100. `pagination` says where the floor is on every response, and past the last page the source returns an empty page rather than repeating the last one.

Measured coverage

One live search per storefront plus a detail round trip, 2026-10-08. The lines that go against us are here too.

Storefronts live

15 of 17 that answer — de, us, gb, it, nl, be, at, pt, fi, ie, gr, sk, se, jp, au (15 of 15 served on the verification run)

Currencies

EUR, USD, GBP, JPY, AUD, SEK — each read off that storefront's own rows, not assumed from the country

Not available

backmarket.fr and backmarket.es answer MARKET_UNAVAILABLE; backmarket.lu and backmarket.dk are not storefronts

Actions

search, detail, categories, markets — 14 of 14 live calls succeeded on each of two consecutive runs

Latency

p50 2.3 s per call across the acceptance matrix of 28 live calls; slowest call 18.9 s

Field fill

60 of 60 rows filled on every field except Back Market's own device scores, which the source publishes for some categories only (24/24 laptops, 4/24 phones, 0/12 audio)

Price verified

60 of 60 rows: our numeric price matches the price string the storefront itself printed on the same row

Condition grades

4 — Premium, Excellent, Very good, Good. The numeric grade is the same in every market; the printed label is translated (value 12 = Gut / Fair / Buono)

Offers per product

up to 7 seller offers on one product in the sample, from 5 different sellers across 4 grades, a 107 EUR spread on the same phone

Paging ceiling

about 1000 rows retrievable per query whatever the total says — 18,141 matches, 42 pages of 24. Past the last page the source returns an empty page, it does not repeat the last one

Not published

no seller name (Back Market does not publish one here), no shipping cost, no checkout tax or payment surcharge

What people build with Back Market

The jobs this data is most often used for.

4

endpoints

1/2

credits per call

01

Repricing: pull every offer for your own product ids with `detail` and see exactly where you sit against the other sellers on each grade, including the stock behind each price.

02

Buy-side sourcing: scan a grade and price band across all 15 storefronts to find where a model is cheapest right now, with each market's own currency on the row.

03

Price-tracking and alerting: `search` with a tight filter plus the storefront's own total makes a stable daily series per model, grade and market.

04

Resale and trade-in valuation: the grade ladder and the new-retail reference price on the same row give you the depreciation curve a refurbished device actually trades at.

What Back Market 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 →
$0.67–$1.50 / 1,000 credits
  • 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
curl -X POST https://api.reefapi.com/backmarket/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"iphone 13","market":"de","page_size":24}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/backmarket/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "iphone 13",
  "market": "de",
  "page_size": 24
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Back Market.

Get a free key →
Which Back Market storefronts does this cover?▾

15, each verified with a live query: Germany, United States, United Kingdom, Italy, Netherlands, Belgium, Austria, Portugal, Finland, Ireland, Greece, Slovakia, Sweden, Japan and Australia — 5 currencies (EUR, USD, GBP, JPY, AUD, SEK). backmarket.fr and backmarket.es exist but we cannot read them, and they answer MARKET_UNAVAILABLE rather than pretending; backmarket.lu and backmarket.dk are not storefronts at all. The `markets` action returns that whole map, including the parts that go against us.

Why does the same phone have several prices?▾

Because Back Market is a marketplace and the condition grade is part of the product. One live iPhone 13 128 GB on backmarket.de had 7 offers from 5 sellers: Good 258.00 and 280.00, Excellent 289.00 and 314.00, Very good 289.99 and 309.00, Premium 365.00 EUR. `detail` returns all of them with their own stock and warranty, sorted cheapest first, so you can see the whole ladder instead of whichever offer happened to win the box.

Are the condition grades comparable across countries?▾

The number is, the wording is not. `grade_value` is Back Market's own code and is identical in every market, so filter and compare on it. The printed label is translated per storefront: value 12 is "Gut" in Germany, "Fair" in the United States and "Buono" in Italy. Both travel on every row, so you can compare on the number and show a human the local word.

Can I tell a filter that worked from one that was ignored?▾

Yes, and that is the point of returning the storefront's own total. On one run, keyword "iphone" on backmarket.de: 310 matches unfiltered, 69 with brand apple, 30 with grade premium, 41 with grade good, 37 with storage 256 GB, 289 under 300 EUR, 24 between 300 and 500 EUR, 38 deals only, 37 for the smartphone category. Every filter we publish was measured against the unfiltered total in the same run; a filter that did not change the total is not offered.

How deep can I page?▾

About 1000 rows per query, which is the source's own ceiling and not ours. The total is honest — backmarket.de reports 18,141 for an empty query — but only 42 pages of 24 are served. `pagination.last_page`, `pagination.retrievable_max` and `pagination.has_more` are on every response. Narrow with brand, model, category, grade or a price band to get under the ceiling rather than paging into it.

Does it return the seller's name?▾

No, because Back Market does not publish one on the surface we read. You get the numeric `seller_id`, which is enough to group offers by seller, count how many sellers compete on a product and follow one seller over time. We would rather return an id that is real than a name that is guessed.

What happens with a product that is sold out or does not exist in that market?▾

NOT_FOUND, with the storefront's own match count in the message, and it is not retried. A product that exists in Germany and not in Japan is a real answer, not an error on our side — try another `market`, or call `markets` to see the list. An empty success is never returned in its place.

Is the price the final price?▾

It is the offer price that storefront publishes for that grade and that seller, in that storefront's currency, at the moment of the call. Shipping, local tax handling and payment-method surcharges are set at checkout and are not part of this surface, so they are not returned.

What is the Back Market API?▾

Back Market API is a ReefAPI endpoint group for refurbished electronics marketplace across 15 country storefronts It returns live JSON through POST requests under /backmarket/v1.

Is the Back Market API free to try?▾

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

Do I need a Back Market login or account?▾

No login to Back Market 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 Back Market 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 Back Market API use?▾

Back Market 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 Back Market from an AI assistant or MCP client?▾

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

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.

0/4000

No account needed · we reply from [email protected]

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.