Refurbed APIrefurbed.se ↗
Search refurbed.se products and retrieve per-condition pricing across European storefronts. Two endpoints cover product search and variant-level price breakdowns.
What is the Refurbed API?
The Refurbed.se API provides two endpoints for querying refurbished product data across Refurbed's European country storefronts. Use search_products to find products by keyword with brand, starting price, and slug, then call get_product_pricing to retrieve a full condition-grade breakdown — Excellent, Very Good, Good, and Acceptable — alongside per-variant pricing for every colour and storage combination available in a given country's catalogue.
curl -X GET 'https://api.parse.bot/scraper/09f65201-6045-4761-969d-e264d825f96d/search_products?query=iPhone+14&country=de' \ -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 refurbed-se-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: refurbed SDK — bounded, re-runnable; every call capped."""
from parse_apis.refurbed_se_api import Refurbed, Country, ProductNotFound
client = Refurbed()
# Search for products on the Swedish storefront
for product in client.products.search(query="iPhone 14", country=Country.SE, limit=3):
print(product.name, product.brand, product.starting_price, product.currency)
# Drill-down: get detailed pricing for first result
hit = client.products.search(query="MacBook Air", country=Country.DE, limit=1).first()
if hit:
try:
pricing = client.product_pricings.get(slug=hit.slug, country=Country.DE)
print(pricing.product_name, pricing.currency, pricing.base_price)
for cond in pricing.condition_prices:
print(f" {cond.grade_label}: {cond.price_from}")
except ProductNotFound as e:
print(f"not found: {e.slug}")
print("exercised: products.search, product_pricings.get")
Full-text search across one country storefront's product catalogue. Returns matched products with name, brand, starting price, and slug for detail lookup. Results are the storefront's default ranking (popularity-weighted relevance).
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keywords (e.g. 'iPhone 14', 'MacBook Air'). |
| country | string | Country storefront code. Determines catalogue availability, language, and currency. |
{
"type": "object",
"fields": {
"query": "echoed search query",
"country": "echoed country code",
"products": "array of product results",
"total_results": "number of products returned"
},
"sample": {
"data": {
"query": "iPhone 14",
"country": "se",
"products": [
{
"name": "iPhone 14",
"slug": "iphone-14",
"brand": "Apple",
"currency": "SEK",
"product_id": "6144",
"product_url": "https://www.refurbed.se/p/iphone-14/40940c/",
"starting_price": 3519
}
],
"total_results": 16
},
"status": "success"
}
}About the Refurbed API
Endpoints and Data Coverage
The search_products endpoint accepts a query string and an optional country code. It returns an array of matched products, each with a product name, brand, starting price, and URL slug. The total_results field reflects how many products matched the query on that storefront. Results follow the storefront's default popularity-weighted relevance ranking — there is no explicit sort parameter.
Per-Condition and Per-Variant Pricing
Once you have a slug, get_product_pricing returns a detailed pricing structure for that product on a given storefront. The base_price field gives the lowest available price across all configurations. color_options and storage_options arrays each include a price delta relative to the base, so you can reconstruct the full pricing matrix without iterating every variants entry. The variants array covers every colour × storage combination with individual prices and availability flags. The currency field is an ISO code matching the storefront's local currency, which shifts when you change the country parameter.
Country Storefront Switching
Both endpoints accept the same country parameter, letting you compare the same product slug across multiple European markets. Catalogue availability, language, and currency all vary by country code — a slug that returns results in one market may return nothing in another if that product is not listed locally. Iterating the same slug across several country codes is a straightforward way to build cross-market price comparisons.
Condition Grades
Refurbed uses four named condition grades: Excellent, Very Good, Good, and Acceptable. get_product_pricing exposes price deltas for each grade relative to the base configuration, making it possible to compute exact prices at each quality tier without additional requests.
The Refurbed API is a managed, monitored endpoint for refurbed.se — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when refurbed.se 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 refurbed.se 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?+
- Compare refurbished iPhone prices across European country storefronts using the
countryparameter onget_product_pricing. - Build a price-drop alert system by periodically calling
get_product_pricingand tracking changes tobase_priceper slug. - Display condition-grade price tiers (Excellent through Acceptable) in a buyer decision tool using the grade delta fields.
- Identify which colour or storage variant offers the lowest entry price by parsing
color_optionsandstorage_optionsdeltas. - Populate a refurbished product catalogue feed by chaining
search_productsslugs intoget_product_pricingcalls. - Analyse regional pricing differences for the same device model across multiple Refurbed country storefronts.
| 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 Refurbed have an official public developer API?+
What does `get_product_pricing` return that `search_products` does not?+
search_products returns only the name, brand, starting price, and slug per product. get_product_pricing goes further: it provides the full variants array (colour × storage combinations with individual prices and availability), per-grade price deltas for Excellent/Very Good/Good/Acceptable conditions, color_options and storage_options arrays with base-relative deltas, and the ISO currency code for the storefront.Does the API cover seller reviews or individual seller listings?+
Are all European Refurbed storefronts supported, and how do I select one?+
country parameter that selects the storefront, adjusting catalogue availability, language, and currency. Not every slug is guaranteed to exist in every market — if a product is not listed in a given country, the endpoint will return no results for that combination. Coverage depends on Refurbed's local catalogue for that country at query time.Does the API support pagination for search results?+
search_products endpoint returns a total_results count but does not currently expose a pagination parameter for fetching additional pages of results beyond the default response. You can fork this API on Parse and revise it to add offset or page-based pagination support.