Three views come back, refreshed daily: your matches, your market positioning, and the append-only price history behind them. Take them as CSV or JSON.
Every export carries your client_ref, so you can join it straight back to the catalogue you sent. CSV files use the header row shown in each table below; JSON nests the same fields per product.
One row per matched competitor listing — the raw evidence behind your positioning. A product matched at five retailers yields five rows.
| Field | Type | Req. | Notes |
|---|---|---|---|
| client_ref | string | yes | Your reference, echoed from the catalogue you sent. |
| retailer | string | no | The competitor the product was matched at (e.g. Wehkamp). |
| matched_name | string | no | The product title as listed at that retailer. |
| match_tier | enum | no | How it was matched: ean, mpn, brand_fuzzy, text, or image. |
| confidence | decimal 0–1 | no | Match strength. 1.0 for exact barcode; lower for softer tiers. |
| competitor_price | decimal | no | Current price at that retailer, EUR. |
| in_stock | boolean | no | Whether the matched product was in stock at last scan. |
| url | string | no | Link to the matched product page. |
| captured_at | timestamp | no | When this price was last observed (ISO 8601, UTC). |
One row per product — the summary most teams live in day to day: who is cheapest, the market average, and where you rank.
| Field | Type | Req. | Notes |
|---|---|---|---|
| client_ref | string | yes | Your product reference. |
| your_price | decimal | no | The price you supplied in your catalogue. |
| cheapest | decimal | no | Lowest competitor price found for this product. |
| cheapest_retailer | string | no | Who is cheapest right now. |
| market_avg | decimal | no | Mean competitor price across all matches. |
| your_rank | integer | no | Your position by price, 1 = cheapest. |
| n_competitors | integer | no | How many retailers this product was matched at. |
Append-only: a row lands only when a competitor’s price actually moves. That gives you a clean, gap-free timeline of every change rather than a daily re-statement of the same number.
| Field | Type | Req. | Notes |
|---|---|---|---|
| client_ref | string | yes | Your product reference. |
| retailer | string | no | The competitor whose price changed. |
| changed_at | timestamp | no | When the change was observed (ISO 8601, UTC). |
| old_price | decimal | no | Price before the change. |
| new_price | decimal | no | Price after the change. |
| direction | enum | no | drop or rise. |
The JSON export folds matches and positioning together, one object per product:
{
"client_ref": "A-1001",
"your_price": 64.99,
"summary": {
"cheapest": 59.95,
"cheapest_retailer": "Wehkamp",
"market_avg": 66.40,
"your_rank": 3,
"n_competitors": 5
},
"matches": [
{
"retailer": "Wehkamp",
"matched_name": "OBJECT Objomahla wikkeljurk",
"match_tier": "ean",
"confidence": 1.0,
"competitor_price": 59.95,
"in_stock": true,
"url": "https://www.wehkamp.nl/...",
"captured_at": "2026-06-18T06:02:00Z"
}
]
}