curl --request POST \
--url https://api-v2.watchcollect.com/v2/market/brands/ap/official-vs-market \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api-v2.watchcollect.com/v2/market/brands/ap/official-vs-market', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/market/brands/ap/official-vs-market"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"brand": "<string>",
"total": 123,
"calculation_version": "official-vs-market.v2",
"official_price_basis": "net_eur_ex_vat",
"official_prices_are_stale": true,
"items": [
{
"brand": "<string>",
"official": {
"reference": "<string>",
"reference_normalized": "<string>",
"status": "available",
"configuration_count": 123,
"collection": "<string>",
"model": "<string>",
"market_reference": "<string>",
"official_url": "<string>",
"official_image_url": "<string>",
"price": {
"amount_minor": 123,
"currency": "<string>"
},
"locale": "<string>",
"scraped_at_ms": 123,
"configuration_key": "<string>",
"configuration_label": "<string>",
"dial": "<string>",
"bezel": "<string>",
"bracelet": "<string>"
},
"market_listing_count": 123,
"mapping_status": "none",
"row_id": "<string>",
"market_average": {
"amount_minor": 123,
"currency": "<string>"
},
"market_profit_amount": {
"amount_minor": 123,
"currency": "<string>"
},
"market_profit_percent": 123,
"effective_sale_price": {
"amount_minor": 123,
"currency": "<string>"
},
"profit_amount": {
"amount_minor": 123,
"currency": "<string>"
},
"profit_percent": 123,
"sample_media_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sample_media_url": "<string>",
"applied_mapping_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"effective_filter": {}
}
],
"official_snapshot_at_ms": 123
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}Compare official Audemars Piguet list prices with market averages
Returns official AP full-reference prices joined with market averages. No external AP calls are made in the API request path.
curl --request POST \
--url https://api-v2.watchcollect.com/v2/market/brands/ap/official-vs-market \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api-v2.watchcollect.com/v2/market/brands/ap/official-vs-market', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/market/brands/ap/official-vs-market"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"brand": "<string>",
"total": 123,
"calculation_version": "official-vs-market.v2",
"official_price_basis": "net_eur_ex_vat",
"official_prices_are_stale": true,
"items": [
{
"brand": "<string>",
"official": {
"reference": "<string>",
"reference_normalized": "<string>",
"status": "available",
"configuration_count": 123,
"collection": "<string>",
"model": "<string>",
"market_reference": "<string>",
"official_url": "<string>",
"official_image_url": "<string>",
"price": {
"amount_minor": 123,
"currency": "<string>"
},
"locale": "<string>",
"scraped_at_ms": 123,
"configuration_key": "<string>",
"configuration_label": "<string>",
"dial": "<string>",
"bezel": "<string>",
"bracelet": "<string>"
},
"market_listing_count": 123,
"mapping_status": "none",
"row_id": "<string>",
"market_average": {
"amount_minor": 123,
"currency": "<string>"
},
"market_profit_amount": {
"amount_minor": 123,
"currency": "<string>"
},
"market_profit_percent": 123,
"effective_sale_price": {
"amount_minor": 123,
"currency": "<string>"
},
"profit_amount": {
"amount_minor": 123,
"currency": "<string>"
},
"profit_percent": 123,
"sample_media_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sample_media_url": "<string>",
"applied_mapping_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"effective_filter": {}
}
],
"official_snapshot_at_ms": 123
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Optional official references to return. If omitted, the endpoint returns the complete active official catalog for the brand.
10000Show child attributes
Show child attributes
Saved view filters are combined with calculator filters and per-reference brand/reference filters.
Flexible market filter grammar. Documented fields are typed; additional fields are tolerated for forward-compatible frontend experiments and ignored until implemented.
Show child attributes
Show child attributes
profit_desc, profit_asc, uplift_desc, uplift_asc, profit-desc, profit-asc, uplift-desc, uplift-asc 3"EUR"
Optional explicit response cap. If omitted, the complete active official catalog is returned.
1 <= x <= 10000Response
Official AP prices joined with market aggregates.
"official-vs-market.v2"
net_eur_ex_vat Show child attributes
Show child attributes