Back Market Spain Scraper — Refurbished Tech
Pricing
from $1.00 / 1,000 results
Back Market Spain Scraper — Refurbished Tech
Browses any Back Market Spain category and returns every product model with its starting price, the price when new, star rating and review count as separate columns. Optionally opens each product page for the full grade, battery, storage, colour and SIM price matrix.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
reventadata
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
Unofficial. This Actor is not affiliated with, authorised by, endorsed by, or in any way officially connected to Back Market. "Back Market" is a trademark of its respective owner and is used here only to describe what this tool reads. It reads the same public pages a browser does.
Back Market Scraper browses any category on backmarket.es — the Spanish storefront of Europe's largest refurbished-electronics marketplace — and returns every product model with its starting price, the price the device cost new, star rating and review count as separate columns.
What data can you extract from Back Market?
A Back Market category page lists one card per product model — "iPhone 16" — not one per
merchant offer. Each card quotes a starting-from price, the cheapest of that model's
variants, next to what the device cost new. This Actor returns that comparison as data:
price, priceWhenNew, rating and ratingCount are first-class fields, so a whole
category becomes a table you can sort by discount rather than a page you have to scroll.
Turn on fetchProductDetails and each model's product page adds its full variant price
matrix — every condition grade, battery-health band, storage size, colour and SIM type
with its own price.
Why scrape Back Market?
- Discount as a number.
priceWhenNewcomes straight off the listing card, so "587 € against 859 € new" is two columns rather than a sentence. - The variant matrix, when you want it.
grades,batteryOptions,storageOptions,colorOptionsandsimOptionseach carry a label, the site's own value and a price — the whole price ladder for a model in one row. - Category browsing, by design. backmarket.es's
robots.txtreserves its search endpoint (Disallow: */search, and*/l/sortand*/l/filterswith it) while leaving category browse pages and product pages open. Category browsing is therefore the only surface this Actor requests, and free-text search is not offered at all. Point it at a category and it walks the catalogue the way the site publishes it. - Honest about what it cannot narrow. The site's own filter controls do not work over HTTP — see Notes and limits. Rather than ship a control that quietly does nothing, this Actor applies price and brand bounds to the rows it fetched and says so.
- No personal data at all. Back Market names no merchant anywhere on these pages. See Privacy below.
How to scrape Back Market
- Open a category on the site and copy the whole URL from the address bar — for example
https://www.backmarket.es/es-es/l/iphone/aabc736a-cb66-4ac0-a3b7-0f449781ed39. The slug alone is not enough: a category is addressed by its slug and the UUID after it. - Put one or more of those URLs in
categories. - Optionally narrow with
minPrice,maxPriceorbrands. - Optionally turn on
fetchProductDetailsfor the variant price matrix. - Run it. Results land in the dataset.
Input
| Field | Type | Meaning |
|---|---|---|
categories | array | One or more category URLs. Required. |
minPrice / maxPrice | integer | Optional, whole euros, against the starting-from price. Applied after fetching — see the note on filters. |
brands | array | Optional. The site's own lowercase brand values, e.g. apple. Applied after fetching. |
fetchProductDetails | boolean | Open each product page for the variant price matrix. Off by default. |
maxItems | integer | Hard cap on rows pushed. Default 300. |
maxPages | integer | Pages per category, clamped to the site's window of 33. |
{"categories": ["https://www.backmarket.es/es-es/l/iphone/aabc736a-cb66-4ac0-a3b7-0f449781ed39"],"minPrice": 300,"maxPrice": 700,"maxItems": 300}
Output
{"id": "5119391","title": "iPhone 16","url": "https://www.backmarket.es/es-es/p/iphone-16","category": "iphone","brand": "apple","productType": "Smartphone","model": "iphone 16","variationId": "3e568013-bb85-4f6d-a51b-ab9171500bfa","price": 587,"priceWhenNew": 859,"currency": "EUR","isStartingFromPrice": true,"rating": 4.6,"ratingCount": 14084,"availableColors": ["Azul ultramar", "Blanco", "Negro", "Rosa", "Teal", "Ultramarine", "Verde azulado"],"imageUrl": "https://www.backmarket.es/cdn-cgi/image/..."}
With fetchProductDetails on, each row also carries currentPrice and the five option
lists — grades, batteryOptions, storageOptions, colorOptions and simOptions:
{"currentPrice": 587,"grades": [{ "label": "Correcto", "value": "12", "price": 657, "selected": false },{ "label": "Muy bueno", "value": "11", "price": 620, "selected": false },{ "label": "Excelente", "value": "10", "price": 587, "selected": true }]}
Notes and limits
priceis a starting-from price, not the price of a thing you can buy. A card quotes the cheapest variant of the model — the site labels it Desde — andisStartingFromPricerecords that. The actual price depends on grade, battery, storage, colour and SIM, which is exactly whatfetchProductDetailsreturns.- One row is one product model, not one merchant offer. Back Market sells through merchants, but its listing and product pages publish a single price per variant combination rather than a list of competing offers. There is no deeper layer to reach.
- 1,000 items per category, and that is the site's limit, not this Actor's.
backmarket.es serves at most 32 pages of 31 models plus a partial page of 8 for any one
category, no matter how large the category really is. Past that the site returns no
cards and its own product count flips to
0 productos— measured on a category that reported 5,888 products one page earlier. That forged empty result is indistinguishable from a real one except by the page number, so this Actor checks the window first and stops there rather than fetching the lie. A category larger than 1,000 items is not fully covered by one run; narrow it to a sub-category and run each one. - The site's own filters cannot be used by any HTTP client, and this Actor does not
pretend otherwise. Back Market's price, storage, model and colour controls write a URL
fragment —
#price=600&price=900,#storage=256%2520GB— and its JavaScript re-renders from that after the page has loaded. A fragment is not part of an HTTP request, so it never reaches the server; and the query-string spelling of the same filters is silently ignored, measured side by side against the fragment form. SominPrice,maxPriceandbrandsare applied to the rows after fetching. They narrow what you receive, not what the site sends, and they do not extend the 1,000-item window. Two controls are absent entirely because they are not real: there is no grade or condition facet on a category page at all (thebackbox_grade_label__inparameter matches no control the site offers), and there is nomin_priceparameter. - Filters do nothing on the
electronicacatch-all category. That top-level pseudo-category supports pagination but not faceting: the same fragment controls that work immediately on a leaf category leave its count and cards unchanged. Prefer real leaf categories. - Grade, battery, storage, colour and SIM labels are the site's own Spanish wording,
verbatim —
Excelente,Estándar Salud al 85-99 %,SIM física + eSIM. They are not mapped to an enum, because a partly-known vocabulary would quietly mislabel an option the site added later. - Opening every product page costs 20 to 50 times more per row than browsing, because
a category page carries 31 models per request and a product page carries one. Measured:
about 0.05 USD per 1,000 rows for listing pages against roughly 0.88 to 1.50 USD extra
per 1,000 rows with
fetchProductDetailson. Nothing row-unique lives there — the price when new is already on the card, and the variant matrix is one shared table per model — which is why it is off by default. - A run that returns zero rows fails rather than succeeding empty, so a silent
misconfiguration cannot look like "no stock today". A genuinely empty category is
recognised from the site's own
0 productoscount inside the result window, never from an absence of rows. - A blocked response is never read as an empty page. backmarket.es answers an unrecognised client with a 34-byte error body rather than a page, so this Actor validates the shape of what it parsed and raises instead of pushing plausible-looking nothing.
Privacy
No personal data is collected, because there is none to collect. Back Market sells
through merchants but does not name them anywhere on a category or product page: every
data-test hook matching seller, merchant or vendor is empty on both surfaces, and
the only seller wording on a product page is the generic notice that items may ship from
different sellers. No merchant name, no seller id, no natural-person identifier of any
kind appears in the output, and the Actor's tests assert that no row ever acquires one.
How much does it cost to scrape Back Market?
Pricing is pay-per-event: $0.001 per result written to the dataset ($1.00 per 1,000 results), plus $0.00005 charged once when the run starts. There is no subscription — you pay only for what you get.
FAQ
Is a proxy required to scrape Back Market? Yes. Apify Unblocker is the only transport
measured to reach this site at all — no proxy, datacenter and residential all failed.
There is no proxyConfiguration input to set: Unblocker is wired in internally so a run
can't be accidentally misconfigured onto a transport that doesn't work.
Can I filter by price, storage or colour through the site's own controls? Not over
HTTP. Back Market's filter controls write a URL fragment (#price=, #storage=), which
a browser applies client-side after the page loads and which never reaches the server. This
Actor applies minPrice, maxPrice and brands to the rows after fetching instead, so
they narrow what you receive rather than pretending to be server-side filters.
Is merchant or seller identity included in the output? No, for any row. Back Market does not name individual merchants on its category or product pages at all — there is nothing to withhold because nothing is published.
More second-hand marketplace scrapers
| Actor | What it scrapes |
|---|---|
| Wallapop Scraper | Wallapop, Spain — any keyword, phone mode with battery-health parsing |
| Wallapop + Vinted + Milanuncios Scraper — Spain | Wallapop, Vinted and Milanuncios in Spain — one keyword, one merged table |
| Cash Converters Spain Scraper | Cash Converters Spain — graded second-hand stock with price when new |
| Milanuncios Scraper | Milanuncios — 17 categories, condition, storage and battery-health filters |
| Gumtree UK Scraper | Gumtree UK — any category, vehicle and phone details parsed from the ad's own text |
| OLX Romania Scraper | OLX Romania (olx.ro) — any keyword, no proxy required |
| OLX Brazil Scraper | OLX Brazil (olx.com.br) — any category, structured attributes from the site's own detail chips |
| Vinted Spain Scraper | Vinted Spain (vinted.es) — any keyword or category, no proxy required |
| Todocolección Scraper | Todocolección — collectibles, antiques and auctions, fixed-price and bidding modelled apart |
| eBay Spain Scraper | eBay Spain (ebay.es) — active listings with seller type |