Back Market Scraper
Pricing
from $1.20 / 1,000 product scrapeds
Back Market Scraper
Scrape Back Market product listings from search queries or start URLs across 17 countries, with optional product details and customer reviews.
Pricing
from $1.20 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Data Scrapers
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Back Market Scraper creates a structured dataset of refurbished product offers collected from Back Market. Each dataset item is one product offer and can include the product and listing ids, name, brand, grade, price, currency, rating, review count, stock, and product URL. Query the source with search terms or Back Market URLs, choose one of 17 country sites, optionally add product details and reviews, limit results with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format.
Dataset at a glance
| Property | Value |
|---|---|
| Source | Back Market country sites |
| Record unit | One product offer |
| Input methods | searchQueries or startUrls, plus country |
| Main identifiers | listingId for the offer, productId for the product |
| Delivery | Apify Dataset and API |
| Export formats | JSON, CSV, Excel, XML, and other Apify dataset exports |
| Update model | Fresh records per Actor run |
| Pricing | $1.50 per 1,000 product, product-details, and product-reviews events on the free plan |
Coverage and available records
Search queries use the selected country site. Start URLs can be a search page, a category page, or a product page, and they keep the country in the URL. The saved run searched iphone on the Germany site.
Supported countries: Germany, Austria, Australia, Belgium, Spain, Finland, France, United Kingdom, Greece, Ireland, Italy, Japan, Netherlands, Portugal, Sweden, Slovakia, and the United States.
A search card includes name, model, brand, color, subtitle, URL, image, current and original price, currency, grade, category, rating, review count, warranty months, stock, country, locale, and the query that produced it.
includeProductDetails adds description, HTML description, what the offer comes with, score chips, units sold, specifications, variants, and stock flags. includeReviews adds a reviews array, capped by maxReviews (default 10). Those two options are off by default. The saved sample had both on, with three reviews.
maxItems defaults to 0, which means no product cap. The input prefill is 10.
Not currently collected: a historical price series, or reviews beyond maxReviews.
Data dictionary
Types below match a saved Germany search offer for an iPhone 16 Pro, with details and reviews enabled. description and descriptionHtml in that file are long. The example later keeps a short prefix of description and omits the HTML.
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
productId | string | No | Back Market product id. | 12d2e039-0c01-4db9-ba49-69ab1a0eb4e8 |
listingId | string | No | Offer id. Best field for deduplicating a specific offer. | be8a0fd7-1370-4b13-9b81-4a4abc4d9d2f |
legacyId | integer | Yes | Numeric legacy id when present. | 5119359 |
name | string | Yes | Offer title. | iPhone 16 Pro 128GB - Titan Schwarz - Ohne Vertrag |
model | string | Yes | Model name. | iPhone 16 Pro |
brand | string | Yes | Brand slug. | apple |
color | string | Yes | Color label. | Titan Schwarz |
subtitle | string | Yes | Short variant line. | Titan Schwarz • 128 GB • eSim |
url | string | No | Product page URL. | https://www.backmarket.de/de-de/p/iphone-16-pro |
imageUrl | string | Yes | Primary image URL. | CloudFront image URL |
price | number | Yes | Current price in currency. | 630.0 |
formattedPrice | string | Yes | Display price. | 630,00 € |
originalPrice | number | Yes | Compared-at price. | 1199.0 |
formattedOriginalPrice | string | Yes | Display compared-at price. | 1.199,00 € |
currency | string | Yes | ISO currency. | EUR |
grade | string | Yes | Condition label in the site language. | Gut |
gradeValue | integer | Yes | Numeric grade. | 12 |
productType | string | Yes | Offer type. | Refurbished |
category | string | Yes | Category label. | Smartphone |
categoryId | integer | Yes | Category id. | 2 |
rating | number | Yes | Average rating. | 4.51 |
reviewCount | integer | Yes | Review count on the card. | 15817 |
warranty | integer | Yes | Warranty length in months. | 12 |
stock | integer | Yes | Units available on the offer. | 19 |
countryCode | string | No | Site country. | DE |
locale | string | Yes | Site locale. | de-de |
sourceType | string | No | search or the URL type that produced the row. | search |
sourceQuery | string | Yes | Search term. Empty when the row came only from a URL. | iphone |
sourceUrl | string | Yes | Search or page URL. | https://www.backmarket.de/de-de/search?q=iphone |
imageUrls | array of strings | No | Image URLs. Present when details are included. | See stored record |
Detail-only fields, present when includeProductDetails is true: description, descriptionHtml, comesWith (type, text), scores (id, label, value), unitsSold, dualSim, isTradeInEligible, parentProductSlug, supportsAppleIntelligence, specifications (label, value, field), isOutOfStock, and variants.
reviews is present when includeReviews is true. Each review has id, rating, comment, createdAt, languageCode, countryCode, relevance, details, and attachments. One review charges one product-reviews event.
Example dataset record
This offer came from searchQueries: ["iphone"] on country DE, with details and reviews enabled. The stored description and image list are longer. Review comments are omitted here. imageUrls keeps the first URL only.
{"productId": "12d2e039-0c01-4db9-ba49-69ab1a0eb4e8","listingId": "be8a0fd7-1370-4b13-9b81-4a4abc4d9d2f","legacyId": 5119359,"name": "iPhone 16 Pro 128GB - Titan Schwarz - Ohne Vertrag","model": "iPhone 16 Pro","brand": "apple","color": "Titan Schwarz","subtitle": "Titan Schwarz • 128 GB • eSim","url": "https://www.backmarket.de/de-de/p/iphone-16-pro","price": 630.0,"formattedPrice": "630,00 €","originalPrice": 1199.0,"currency": "EUR","grade": "Gut","gradeValue": 12,"productType": "Refurbished","category": "Smartphone","rating": 4.51,"reviewCount": 15817,"warranty": 12,"stock": 19,"countryCode": "DE","locale": "de-de","sourceType": "search","sourceQuery": "iphone","sourceUrl": "https://www.backmarket.de/de-de/search?q=iphone"}
Query and input reference
| Input | Type | Required | Default | Accepted values | Description |
|---|---|---|---|---|---|
searchQueries | string array | No | None | Search text | Prefill: iphone. Uses country. |
startUrls | URL array | No | None | Search, category, or product URLs | Country is taken from the URL. |
country | string | No | DE | DE, AT, AU, BE, ES, FI, FR, GB, GR, IE, IT, JP, NL, PT, SE, SK, US | Site for search queries. |
maxItems | integer | No | 0 | 0 or a positive integer | Product cap. 0 means no cap. Prefill 10. |
includeProductDetails | boolean | No | false | true or false | Fetch the product page and charge product-details. |
includeReviews | boolean | No | false | true or false | Fetch reviews and charge product-reviews per review. |
maxReviews | integer | No | 10 | Positive integer | Review cap per product. |
detailConcurrency | integer | No | 5 | Integer | Parallel detail and review requests. |
proxyConfiguration | object | No | Apify residential proxy | Apify proxy editor | Proxy for Back Market requests. |
Provide searchQueries or startUrls.
Minimal request:
{"searchQueries": ["iphone"],"country": "DE","maxItems": 10}
Details and reviews:
{"searchQueries": ["iphone"],"country": "DE","maxItems": 3,"includeProductDetails": true,"includeReviews": true,"maxReviews": 3}
Retrieve the data through the API
- Start
datascrapers/backmarket-scraperwith the JSON input. - Wait until the run finishes, or call the synchronous dataset endpoint.
- Read items from the run's default dataset.
- Paginate with dataset
offsetandlimit, or export from the Apify console.
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("datascrapers/backmarket-scraper").call(run_input={"searchQueries": ["iphone"],"country": "DE","maxItems": 10,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["listingId"], item["name"], item["price"])
Other languages are listed on the Actor's API tab. This is the Apify Actor API, not a Back Market API.
Data quality and record handling
- One pushed record is one offer. The
productevent is charged when that record is pushed. - Deduplicate offers on
listingId. UseproductIdwhen you want one row per product across grades and colors. - The same product can appear as several offers. Do not collapse them on
name. - Price is a number in
currency.formattedPricekeeps the site's grouping and symbol. - Grade labels follow the country locale.
Gutis the German label on the saved card. - Detail and review fields are absent when those options are off. A failed detail request does not invent them.
- Each successfully collected review adds one
product-reviewscharge. A product-page enrichment adds oneproduct-detailscharge. reviewCountis the count shown on the card. It can be larger than thereviewsarray, which stops atmaxReviews.
Pricing and cost examples
The price file in the Actor folder prices every event at $1.50 per 1,000 on the free plan. The same file lowers that rate on paid plans. Prices are per event, not per 1,000 as a single invoice line. One product charge is one pushed offer. One product-details charge is one enriched product. One product-reviews charge is one review.
| Plan | Price per 1,000 events |
|---|---|
| Free | $1.50 |
| Bronze | $1.40 |
| Silver | $1.30 |
| Gold | $1.20 |
| Platinum and Diamond | $1.20 |
Platinum and Diamond are not listed in the file. They use the Gold rate. The file also sets platform usage as not charged to the user.
| Offers | Cards only | Cards, details, and 3 reviews each |
|---|---|---|
| 1,000 | $1.50 | $7.50 |
| 10,000 | $15.00 | $75.00 |
The second column is the free-plan rate: one product, one detail, and three reviews per offer. It is lower on Bronze, Silver, and Gold.
Limitations and responsible data use
- Coverage is the search or URL you send, on the country site you select.
- Start URLs ignore
countryand use the country in the URL. - Prices, stock, and grades change on Back Market. This dataset is not a price history.
- Review text is written by customers and can include personal details.
- You are responsible for complying with Back Market's terms and applicable law.
Dataset questions
What does one dataset item represent?
One Back Market product offer. With details and reviews enabled, that same record also contains the product page and the reviews that were collected.
Which field should I use as a unique identifier?
Use listingId for the offer. Use productId for the product across grades and storage options.
Are fields nullable or conditional?
Yes. Description, specifications, variants, and reviews appear only when the matching option is enabled and the page returns them.
Can I retrieve the records as CSV or JSON?
Yes. Export the default dataset as JSON, CSV, Excel, XML, or another Apify format.
How do I paginate large datasets?
Set maxItems on the run. 0 removes the cap. Read items with dataset limit and offset.
Does the Actor return historical data?
No. Each run returns the offers available at request time.
What counts as a billable result?
Each pushed offer charges product. Each enriched product charges product-details. Each collected review charges product-reviews. The free-plan price is $0.0015 per event.
Related datasets from Data Scrapers
- Amazon Scraper collects marketplace product records you can compare on price and rating.
- Best Buy Scraper collects electronics offers alongside refurbished phone and laptop rows.
- AliExpress Scraper collects product listings with price and review fields.
- Alibaba Scraper collects wholesale product records for the same catalog research.
- Adidas Scraper collects brand product records with price and availability.
Data Scrapers support
Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.
