Embed live recommerce prices into your platform
The RecommerceIQ API gives you programmatic access to real-time resale and buyback prices across 1M+ daily price points — covering smartphones, tablets, laptops, and smartwatches across Europe and the United States.
- 1 day
- Time to go live
- 1M+
- Daily price points
- Daily
- Data refresh rate
- 120/s
- Rate limit
Go live in 1 business day
Request access
Contact us via the demo form. API credentials are provisioned within one business day.
Authenticate
Pass your API token in the Authorization header. Catalog API V1 uses "Bearer <token>"; Prices API V1 uses the token directly with no prefix. The auth format is shown in each API group below.
Query prices
Use the Catalog V1 or Prices V1 endpoints for new integrations. Legacy endpoints remain available.
Go live
Most clients complete integration and go live within 1 business day.
What the API covers
Device categories
- Smartphones
- Tablets
- Laptops & PCs
- Smartwatches
Condition grades
Aesthetic
| Grade | Legend | Definition |
|---|---|---|
R | Brand New | Never been opened. In the original box. |
N | Excellent | Screen, frame and back look as good as new with no clear signs of use. |
A | Very Good | May have minor traces of use like slight scratches or tiny dents, but never cracks. |
B | Good | Clear signs of use like scratches you can feel or small dents on the edges, but never cracks. |
C | Acceptable | Heavy signs of use like deep scratches or more evident dents on the edges, but never cracks. |
Battery
| Grade | Legend | Definition |
|---|---|---|
new | New | 100% battery capacity. No charging cycles. |
std | Standard / used | Following the source website definition. Usually >80% recharge, fewer than 1000 charging cycles. |
Markets
- United States
- Germany, France, Italy
- Netherlands, Spain
- UK, Austria, and more
Catalog API
V1Use this API if you have shared your product catalog with us. We pre-map your internal SKUs to our database during onboarding, so you can query prices using your own IDs directly — no device-level attribute matching needed on your side.
/api/v1/catalog/:externalID/prices| Host | https://dashboard.recommerceiq.com |
| Path params | externalIDrequiredYour catalogue item internal ID |
| Auth | Authorization: Bearer YOUR_API_KEY |
Retrieve resale and trade-in prices for a catalogue item by your internal ID. Returns aggregate prices by country and competitor, plus individual active listings (add-on).
If your catalog uses one ID per model (not per grade), append a grade suffix: e.g. YOUR_ID-n for Excellent, YOUR_ID-a for Very Good.
Request
curl --request GET \ --url https://dashboard.recommerceiq.com/api/v1/catalog/YOUR_ITEM_ID/prices \ --header 'Authorization: Bearer YOUR_API_KEY'
Response
200 OKResponse fields
prices_by_country- Aggregate pricing data for each market (e.g. DE, FR, UK).
prices_by_competitor- Aggregate pricing data for each competitor and market (e.g. website A in DE, website B in DE).
active_listings- Individual item pricing data per competitor listing (e.g. iPhone 15 Pro 256 GB grade A from website A in DE). Available as an add-on — contact us to enable.
suggested_price- Price suggested after factoring in your pricing strategies set in the RecommerceIQ Dashboard. Can be resale or trade-in depending on your catalog setup.
median_market_price- Aggregate median pricing across all applicable markets, before any pricing strategies. Can be resale or trade-in depending on your catalog setup.
{ "category": "Smartphone", "name": "iPhone XS Max", "suggested_price": 300.49, "median_market_price": 300.49, "currency": "EUR", "last_update": "2025-10-08 04:03:48", "resell": { "prices_by_country": [ { "currency": "EUR", "country": "de", "min_price": 213.99, "max_price": 329, "average_price": 289, "median_price": 291 } ], "prices_by_competitor": [ { "competitor": "Refurbed", "country": "de", "average_price": 269.99, "median_price": 269.99, "min_price": 213.99, "max_price": 307.99, "currency": "EUR" }, { "competitor": "Back Market", "country": "de", "average_price": 274, "median_price": 274, "min_price": 274, "max_price": 274, "currency": "EUR" } ], "active_listings": [ { "competitor": "Refurbed", "country": "de", "name": "Apple iPhone Xs MAX", "price": 256, "currency": "EUR", "url": "https://www.refurbed.de/p/apple-iphone-xs-max/..." } ] }, "trade-in": { "prices_by_country": [ { "currency": "EUR", "country": "de", "min_price": 58, "max_price": 75, "average_price": 69.33, "median_price": 75 } ], "prices_by_competitor": [ { "vendor_name": "Rebuy", "country": "de", "average_price": 69.33, "median_price": 75, "min_price": 58, "max_price": 75, "currency": "EUR" } ], "active_listings": [ { "competitor": "Rebuy", "country": "de", "name": "Apple iPhone Xs MAX", "price": 60, "currency": "EUR" } ] } }
▶Error responses (401)
{ "message": "Unauthenticated." }
/api/v1/catalog/:externalID/buybox/:vendorName/:vendorCountry| Host | https://dashboard.recommerceiq.com |
| Path params | externalIDrequiredYour catalogue item internal ID |
vendorNamerequiredVendor name e.g. ebay | |
vendorCountryrequiredMarket country code e.g. de | |
| Auth | Authorization: Bearer YOUR_API_KEY |
Retrieve the current Buy Box price for a specific vendor and market for a given catalogue item.
Request
curl --request GET \ --url https://dashboard.recommerceiq.com/api/v1/catalog/YOUR_ITEM_ID/buybox/ebay/de \ --header 'Authorization: Bearer YOUR_API_KEY'
Response
200 OKResponse fields
price- Current Buy Box price for this vendor and market.
suggested_price- Price suggested after applying your pricing strategies set in the RecommerceIQ Dashboard.
is_mine- Whether you currently hold the Buy Box for this vendor and market.
{ "suggested_price": 123.35, "price": 123.45, "is_mine": false, "seller_name": "Test", "url": "https://www.ebay.de/itm/405180570735", "created_at": "2025-10-08 17:11:38", "currency": "EUR", "currency_symbol": "€" }
▶Error responses (401)
{ "message": "Unauthenticated." }
Prices API
V1Use this API if you have not shared a catalog with us. You query prices by passing device attributes directly (brand, model, grade, storage, etc.) and we return matching market prices in real time — no prior SKU mapping required.
/api/v1/prices/dictionary/:category| Host | https://dashboard.recommerceiq.com |
| Path params | categoryrequiredsmartphone | pc | tablet | smartwatch |
| Auth | Authorization: YOUR_API_KEY |
Retrieve available brands, models, grades, and specifications for a device category. Use this to build your query parameters for the search endpoints.
Request
curl --request GET \ --url https://dashboard.recommerceiq.com/api/v1/prices/dictionary/pc \ --header 'Authorization: YOUR_API_KEY'
Response
200 OKReturns all valid parameter keys for that category. Use these key values (not labels) in your search requests.
{ "grades": [ { "label": "Excellent", "key": "N" }, { "label": "Very Good", "key": "A" }, { "label": "Good", "key": "B" }, { "label": "Acceptable", "key": "C" }, { "label": "New", "key": "R" } ], "battery": [ { "key": "new", "label": "New" }, { "key": "std", "label": "Used" } ], "brands": [ { "name": "Apple", "model": [ { "label": "MacBook Pro", "key": "MP" }, { "label": "MacBook Air", "key": "MA" } ], "display": [ { "label": "14 inch", "key": "14" }, { "label": "16 inch", "key": "16" } ], "processor": [ { "label": "M3 Max 16-Core", "key": "am3m3x16c" }, { "label": "M3 Max 14-Core", "key": "am3m3x14c" } ], "ram": [ { "label": "36 GB", "key": "36" }, { "label": "48 GB", "key": "48" } ], "storage": [ { "label": "1 TB SSD", "key": "1000SSD" }, { "label": "2 TB SSD", "key": "2000SSD" } ], "variant": [ { "label": "2023", "key": "23" }, { "label": "2021", "key": "21" } ] } ] }
▶Error responses (401)
{ "message": "Unauthenticated." }
/api/v1/prices/pc/search| Host | https://dashboard.recommerceiq.com |
| Parameters | brandstringrequired |
gradeenumrequired— A, B, C, N, R | |
batteryenumoptional— std, new(default: std) | |
modelstringrequired | |
variantstringoptional | |
displaystringrequired | |
processorstringrequired | |
ramstringrequired | |
storagestringrequired | |
| Auth | Authorization: YOUR_API_KEY |
Search resale and trade-in prices for a specific PC configuration. Returns prices by country, by competitor, and active listings.
Request
curl --request POST \ --url https://dashboard.recommerceiq.com/api/v1/prices/pc/search \ --header 'Authorization: YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "brand": "Apple", "grade": "A", "battery": "std", "model": "MP", "display": "15", "processor": "i98c2-4", "ram": "32", "storage": "2000SSD" }'
Response
200 OKSame structure as Catalog API prices response. active_listings is available as an add-on — contact us to enable.
{ "category": "PC", "name": "Apple MacBook Pro 2019 - 2 TB SSD - 32 GB RAM - Very Good", "last_update": "2025-10-08 04:03:48", "resell": { "median_market_price": 1477.3, "currency": "EUR", "prices_by_country": [ { "currency": "EUR", "country": "de", "min_price": 1328.85, "max_price": 1328.85, "average_price": 1328.85, "median_price": 1328.85 } ], "prices_by_competitor": [ { "competitor": "buyZOXS", "country": "de", "average_price": 1328.85, "median_price": 1328.85, "min_price": 1328.85, "max_price": 1328.85, "currency": "EUR" } ], "active_listings": [ { "competitor": "buyZOXS", "country": "de", "name": "MacBook Pro 2019 | 2000GB SSD | 32GB | i9 | 15 inch", "price": 1328.85, "currency": "EUR", "url": "https://www.buyzoxs.de/apple-macbook-pro-2019-..." } ] }, "trade-in": { "median_market_price": 830.18, "currency": "EUR", "prices_by_country": [ { "currency": "EUR", "country": "de", "min_price": 363, "max_price": 1269.23, "average_price": 830.18, "median_price": 830.18 } ], "prices_by_competitor": [ { "vendor_name": "Rebuy", "country": "de", "average_price": 1269.23, "median_price": 1269.23, "min_price": 1269.23, "max_price": 1269.23, "currency": "EUR" }, { "vendor_name": "MacOnline", "country": "de", "average_price": 391.13, "median_price": 391.13, "min_price": 363, "max_price": 419.25, "currency": "EUR" } ], "active_listings": [ { "competitor": "MacOnline", "country": "de", "name": "MacBook Pro 2019 | 2000GB SSD | 32GB", "price": 363, "currency": "EUR" } ] } }
▶Error responses (401, 404)
{ "message": "Unauthenticated." }
{ "message": "Price not found." }
/api/v1/prices/smartphone/search| Host | https://dashboard.recommerceiq.com |
| Auth | Authorization: YOUR_API_KEY |
Search resale and trade-in prices for a specific smartphone.
Parameters and response structure are identical to /api/v1/prices/pc/search.
/api/v1/prices/tablet/search| Host | https://dashboard.recommerceiq.com |
| Auth | Authorization: YOUR_API_KEY |
Search resale and trade-in prices for a specific tablet.
Parameters and response structure are identical to /api/v1/prices/pc/search.
/api/v1/prices/smartwatch/search| Host | https://dashboard.recommerceiq.com |
| Auth | Authorization: YOUR_API_KEY |
Search resale and trade-in prices for a specific smartwatch.
Parameters and response structure are identical to /api/v1/prices/pc/search.
Need full request & response schemas?
The complete documentation includes parameter definitions, example payloads, and error codes for every endpoint.
Legacy APIs
LegacyThese endpoints remain available and are not being deprecated, but new integrations should use the V1 APIs above.
Buyback API
Legacy/api/buyback/configuration| Host | https://dashboard.recommerceiq.com |
| Auth | Authorization: Bearer YOUR_API_KEY |
Fetch global account configuration including available device categories.
Request
curl --request GET \ --url https://dashboard.recommerceiq.com/api/buyback/configuration \ --header 'Authorization: Bearer YOUR_API_KEY'
Response
200 OK{ "email": "recommerceiq@demo.com", "api_url": "https://dashboard.recommerceiq.com", "categories": [ { "name": "Smartphone", "slug": "smartphone" }, { "name": "PC", "slug": "pc" }, { "name": "Smartwatch", "slug": "smartwatch" }, { "name": "Tablet", "slug": "tablet" } ] }
▶Error responses (401)
{ "message": "Unauthenticated." }
/api/buyback/configuration/:slug| Host | https://dashboard.recommerceiq.com |
| Path params | slugrequiredpc | smartphone | tablet | smartwatch |
| Auth | Authorization: Bearer YOUR_API_KEY |
Fetch category-level configuration including brands, models, storage options, and grade definitions for a specific device category.
Request
curl --request GET \ --url https://dashboard.recommerceiq.com/api/buyback/configuration/smartphone \ --header 'Authorization: Bearer YOUR_API_KEY'
Response
200 OKUse the returned model/storage/grade value fields (not key fields) as parameter values in the price request.
{ "name": "Smartphone", "slug": "smartphone", "brands": [ { "name": "Apple", "code": "appl", "additional_fields": ["maximum_battery_capacity", "charger_included", "original_box_included"], "model": [ { "key": "iPhone 15 Pro Max", "value": "I15Pro_Max", "storage": [ { "key": "256 GB", "value": "256" }, { "key": "512 GB", "value": "512" } ] } ], "grade": [ { "key": "Excellent", "value": "N" }, { "key": "Very Good", "value": "A" }, { "key": "Good", "value": "B" }, { "key": "Acceptable", "value": "C" } ] } ] }
▶Error responses (401, 404)
{ "message": "Unauthenticated." }
{ "error": "Category not found" }
/api/buyback/price| Host | https://dashboard.recommerceiq.com |
| Auth | Authorization: Bearer YOUR_API_KEY |
Request a buyback price for a specific device. Supports smartphones, tablets, smartwatches, and PCs. Returns a single price value.
Aesthetic grade
R — Brand NewN — ExcellentA — Very GoodB — GoodC — AcceptableRequest
curl --request POST \ --url https://dashboard.recommerceiq.com/api/buyback/price \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "brand": "appl", "category": "smartphone", "model": "is0", "storage": 256, "grade": "C", "maximum_battery_capacity": false, "charger_included": false }'
Response
200 OK{ "price": 760 }
▶Error responses (401, 404, 422)
{ "message": "Unauthenticated." }
{ "message": "Price not found." }
{ "message": "The selected category is invalid.", "errors": { "category": ["The selected category is invalid."] } }
Resell API
Legacy/api/resell/price| Host | https://dashboard.recommerceiq.com |
| Auth | Authorization: Bearer YOUR_API_KEY |
Request a resale price for a specific smartphone. Returns a single price value. Tablets, smartwatches, and PCs are not yet supported on this endpoint.
Aesthetic grade
R — Brand NewN — ExcellentA — Very GoodB — GoodC — AcceptableRequest
curl --request POST \ --url https://dashboard.recommerceiq.com/api/resell/price \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "brand": "appl", "category": "smartphone", "name": "IPhone XS Max 512GB Space Grey", "grade": "C" }'
Response
200 OK{ "price": 760 }
▶Error responses (401, 404, 422)
{ "message": "Unauthenticated." }
{ "message": "Price not found." }
{ "message": "The selected category is invalid.", "errors": { "category": ["The selected category is invalid."] } }
/api/resell/price/history| Host | https://dashboard.recommerceiq.com |
| Auth | Authorization: Bearer YOUR_API_KEY |
Request historical resale prices for a smartphone by vendor, with daily min, max, average, and median prices. Tablets, smartwatches, and PCs are not yet supported.
Aesthetic grade
R — Brand NewN — ExcellentA — Very GoodB — GoodC — AcceptableBattery
new — New batterystd — Standard / usedRequest
curl --request POST \ --url https://dashboard.recommerceiq.com/api/resell/price/history \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "brand": "appl", "category": "smartphone", "grade": "B", "name": "IPhone 12 256GB Space Grey", "battery": "new" }'
Response
200 OK[ { "vendor": "Swappie", "prices": [ { "date": "2024-04-06", "min_price": 169, "max_price": 169, "average_price": 169, "median_price": 169 }, { "date": "2024-04-07", "min_price": 169, "max_price": 169, "average_price": 169, "median_price": 169 }, { "date": "2024-04-08", "min_price": 169, "max_price": 169, "average_price": 169, "median_price": 169 } ] } ]
▶Error responses (401, 404, 422)
{ "message": "Unauthenticated." }
{ "message": "Price not found." }
{ "message": "The selected category is invalid.", "errors": { "category": ["The selected category is invalid."] } }
Catalog API
Legacy/api/catalog/:externalId/prices/buyback| Host | https://dashboard.recommerceiq.com |
| Path params | externalIdrequiredYour catalogue item ID as listed in the feed |
| Auth | Authorization: Bearer YOUR_API_KEY |
Fetch trade-in prices for a catalogue item by your feed ID, returned by country and grade.
Request
curl --request GET \ --url https://dashboard.recommerceiq.com/api/catalog/YOUR_ITEM_ID/prices/buyback \ --header 'Authorization: Bearer YOUR_API_KEY'
Response
200 OK[ { "country": "de", "prices": [ { "grade": "A", "price": 449, "currency": "EUR" }, { "grade": "B", "price": 419, "currency": "EUR" } ] }, { "country": "fr", "prices": [ { "grade": "A", "price": 409, "currency": "EUR" }, { "grade": "B", "price": 409, "currency": "EUR" } ] } ]
▶Error responses (401, 404)
{ "message": "Unauthenticated." }
{ "message": "Catalog item not found." }
Ready to integrate?
Request API access and we will have your credentials ready within one business day.