Back Market Spain Scraper — Refurbished Tech avatar

Back Market Spain Scraper — Refurbished Tech

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Back Market Spain Scraper — Refurbished Tech

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

reventadata

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

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. priceWhenNew comes 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, colorOptions and simOptions each 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.txt reserves its search endpoint (Disallow: */search, and */l/sort and */l/filters with 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

  1. 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.
  2. Put one or more of those URLs in categories.
  3. Optionally narrow with minPrice, maxPrice or brands.
  4. Optionally turn on fetchProductDetails for the variant price matrix.
  5. Run it. Results land in the dataset.

Input

FieldTypeMeaning
categoriesarrayOne or more category URLs. Required.
minPrice / maxPriceintegerOptional, whole euros, against the starting-from price. Applied after fetching — see the note on filters.
brandsarrayOptional. The site's own lowercase brand values, e.g. apple. Applied after fetching.
fetchProductDetailsbooleanOpen each product page for the variant price matrix. Off by default.
maxItemsintegerHard cap on rows pushed. Default 300.
maxPagesintegerPages 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

  • price is 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 — and isStartingFromPrice records that. The actual price depends on grade, battery, storage, colour and SIM, which is exactly what fetchProductDetails returns.
  • 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. So minPrice, maxPrice and brands are 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 (the backbox_grade_label__in parameter matches no control the site offers), and there is no min_price parameter.
  • Filters do nothing on the electronica catch-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, verbatimExcelente, 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 fetchProductDetails on. 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 productos count 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

ActorWhat it scrapes
Wallapop ScraperWallapop, Spain — any keyword, phone mode with battery-health parsing
Wallapop + Vinted + Milanuncios Scraper — SpainWallapop, Vinted and Milanuncios in Spain — one keyword, one merged table
Cash Converters Spain ScraperCash Converters Spain — graded second-hand stock with price when new
Milanuncios ScraperMilanuncios — 17 categories, condition, storage and battery-health filters
Gumtree UK ScraperGumtree UK — any category, vehicle and phone details parsed from the ad's own text
OLX Romania ScraperOLX Romania (olx.ro) — any keyword, no proxy required
OLX Brazil ScraperOLX Brazil (olx.com.br) — any category, structured attributes from the site's own detail chips
Vinted Spain ScraperVinted Spain (vinted.es) — any keyword or category, no proxy required
Todocolección ScraperTodocolección — collectibles, antiques and auctions, fixed-price and bidding modelled apart
eBay Spain ScrapereBay Spain (ebay.es) — active listings with seller type