A flat, time-series feed of every competitor-listing observation we've recorded for your tenant. Filter by product, competitor, and date range; page with limit; chart it.
Each row is one observed price for one competitor's matched listing at one point in time. Use this to back-test pricing rules, build dashboards, or feed your own data warehouse.
/api/public/v1/observationsBearer pk_live_…List observations across the tenant. Filter by product, competitor, and ISO date range.
curl "https://api.priceroom.com/api/public/v1/observations?productId=6630e1...&from=2026-05-01T00:00:00Z&limit=200" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"data": [
{
"competitorProductId": "6712a3...",
"productId": "6630e1...",
"competitorId": "65f1b2...",
"url": "https://amazon.de/dp/B09XS7JWHH",
"price": 28900,
"stock": true,
"observedAt": "2026-05-31T11:42:00.000Z"
}
],
"count": 1,
"total": 1
}All filters are AND-combined. Omit any filter to widen the result set; pair filters to drill into a single SKU on a single retailer.
?productId=<id>Restrict to one of your products. Get the id from /api/public/v1/products.
?competitorId=<id>Restrict to observations on one retailer. Get the id from /api/public/v1/competitors.
?from=&to=ISO 8601 timestamps. Inclusive on both sides. Pair with productId to chart a SKU over time.
?limit=N1–500. Default 100. Page through history by combining limit with a tightening to= window.
Every Observation has the same shape regardless of which retailer or category it came from.
priceInteger cents in the matched competitor product's currency (usually the tenant default, EUR for European deployments).
stockBoolean — true when the competitor's listing was in stock at the time of observation, false when out of stock.
observedAtISO 8601 UTC. The moment the scraper recorded the price, not the moment the retailer changed it.
urlThe exact competitor listing URL the price was read from — useful for audit trails or manual verification.
Every 4xx/5xx returns a stable JSON error. Use code for programmatic branching.
{
"error": {
"code": "invalid_api_key",
"message": "The provided API key is invalid or revoked.",
"requestId": "req_01HTX9..."
}
}