Back Market APIbackmarket.com ↗
Search Back Market's refurbished electronics catalog, compare pricing by condition grade, and retrieve seller and product reviews via a simple REST API.
What is the Back Market API?
The Back Market API provides access to 6 endpoints covering refurbished electronics listings, condition-based pricing, and seller reviews from backmarket.com. Use search_products to query the catalog by keyword and retrieve product UUIDs, then pass those into get_product_details for full condition grades, storage options, color variants, merchant info, and shipping breakdowns. Seller reputation data is available through get_seller_reviews and get_product_reviews.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/566594f8-ce10-4ec4-9596-24fac4873ebd/get_categories' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace backmarket-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Back Market SDK — search refurbished electronics, check pricing, read reviews."""
from parse_apis.back_market_api import BackMarket, ProductNotFound
bm = BackMarket()
# Browse available product categories
for cat in bm.products.categories(limit=6):
print(cat.name, cat.slug)
# Search for refurbished iPhones — limit caps total items fetched
result = bm.products.search(query="iPhone 13", limit=3).first()
if result:
print(result.title, result.price, result.brand)
# Drill into full product details via the summary's navigation op
product = result.details()
print(product.slug, product.is_out_of_stock)
# Check pricing across condition grades
pricing = product.pricing()
for group in pricing.picker_groups:
print(group.label)
for item in group.items:
print(f" {item.label}: {item.price.amount} {item.price.currency}")
# Read product reviews (extracted from product page SSR data)
for review in product.reviews.list(limit=3):
print(review.average_rate, review.comment[:80], review.created_at)
# Read seller reviews via the merchant
seller = product.merchant
for review in seller.reviews(limit=3):
print(review.average_rate, review.customer.first_name, review.comment[:60])
# Typed error handling for a missing product
try:
missing = bm.product(product_id="00000000-0000-0000-0000-000000000000").pricing()
except ProductNotFound as exc:
print(f"Product not found: {exc.product_uuid}")
print("exercised: categories / search / details / pricing / product reviews / seller reviews")
Retrieves the list of top product categories with their UUIDs and URL slugs. Returns a static list of major device categories available on Back Market US. Useful as a reference for the category taxonomy; UUIDs are not needed for other endpoints but slugs help build product page URLs.
No input parameters required.
{
"type": "object",
"fields": {
"categories": "array of objects with name, uuid, and slug for each category"
},
"sample": {
"data": {
"categories": [
{
"name": "Smartphones",
"slug": "smartphones",
"uuid": "0744fd27-8605-465d-8691-3b6dffda5969"
},
{
"name": "iPhone",
"slug": "iphone",
"uuid": "e8724fea-197e-4815-85ce-21b8068020cc"
},
{
"name": "Laptops",
"slug": "laptops",
"uuid": "e2298717-d200-410a-9d66-f4f65306d91f"
},
{
"name": "MacBook",
"slug": "macbook",
"uuid": "203a7a40-349f-4f81-9957-c502570884be"
},
{
"name": "Tablets",
"slug": "tablets",
"uuid": "7a8585c5-16f5-4e00-8809-58b9f04523c5"
},
{
"name": "iPad",
"slug": "ipad",
"uuid": "02916b3d-ca29-455b-801a-6379555c5dfb"
}
]
},
"status": "success"
}
}About the Back Market API
Catalog Search and Product Details
The search_products endpoint accepts a query string (e.g. 'iPhone 13', 'MacBook') along with optional page (zero-indexed) and limit parameters. Each result in the hits array includes listing_id, title, price, brand, model, image, and an id field containing the product UUID used by all downstream endpoints. The nbHits and nbPages fields allow you to implement pagination correctly.
get_product_details takes a product_uuid and returns the full listing record: a pickerGroups array that breaks down available grades (Fair, Good, Excellent, Premium), storage capacities, and color options — each item carries a label, price, and availability flag. The selectedOffer object contains the current best offer including full pricing, shipping cost, and warranty terms. The merchant object includes merchantId, company, country, and city, which you can pass directly to get_seller_reviews.
Pricing by Condition
get_product_pricing returns the same pickerGroups structure as get_product_details but scoped to pricing data only. This is useful when you want to compare condition grades across a batch of products without processing the full detail payload. isOutOfStock is included so you can filter unavailable variants client-side.
Reviews
get_seller_reviews accepts a seller_uuid (the merchantId from product details) and an optional page_size. The response includes a results array of review objects with averageRate, comment, createdAt, product context, and customer name, plus next and previous cursor URLs for pagination. get_product_reviews works similarly but scopes reviews to a single product UUID, returning comment, rate, and createdAt per result. get_categories returns a static reference list of major device categories with name, uuid, and slug fields.
The Back Market API is a managed, monitored endpoint for backmarket.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when backmarket.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official backmarket.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a price-comparison tool that tracks refurbished iPhone pricing across condition grades (Fair, Good, Excellent) using get_product_pricing.
- Monitor seller reputation by aggregating averageRate scores and review comments from get_seller_reviews for a set of merchant UUIDs.
- Power a deal-alert service that queries search_products on a schedule and flags listings where price drops below a threshold.
- Populate a refurbished electronics comparison site with product titles, images, and condition-based pricing from search_products and get_product_details.
- Analyze which storage or color configurations are out of stock across a product line using the pickerGroups availability flags from get_product_pricing.
- Enrich product listings with customer sentiment by pulling comment and rate fields from get_product_reviews.
- Build a category browser that maps device types to their URL slugs using get_categories as a reference index.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Back Market have an official developer API?+
What does get_product_details return beyond basic pricing?+
pickerGroups array covering condition grades, storage, and color options with per-variant pricing and availability; a selectedOffer object with shipping cost and warranty details; and a merchant object with merchantId, company name, country, and city. The isOutOfStock boolean reflects the current stock state of the listing.How does pagination work for seller reviews?+
get_seller_reviews uses cursor-based pagination. The response includes next and previous fields containing full URLs for adjacent pages rather than page-number offsets. The count field gives the total number of reviews, though it may be null for some sellers.Does the API cover Back Market listings outside the United States?+
Can I filter search results by condition grade or price range?+
search_products endpoint accepts query, page, and limit parameters but does not expose condition or price-range filters directly. Condition-level pricing is available after retrieving a product UUID via the pickerGroups field in get_product_pricing. You can fork this API on Parse and revise it to add filter parameters to the search endpoint.