curl --request POST \
--url https://api-v2.watchcollect.com/v2/market/listings/search \
--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/listings/search', 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/listings/search"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"classified_watch_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"classification_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"watch_index": 123,
"side": "for_sale",
"full_set_status": [
"WATCH"
],
"sender": {
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"phone_number": "<string>",
"lid": "<string>",
"display_name": "<string>",
"country_prefix": "<string>"
},
"source": {
"canonical_message_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"message_timestamp_ms": 123,
"group_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"group_names": [
"<string>"
],
"occurrence_count": 123,
"first_seen_at_ms": 123,
"last_seen_at_ms": 123,
"has_media": true,
"is_duplicate": true,
"is_hidden": true,
"is_revoked": true,
"message_text": "<string>",
"media_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"media_url": "<string>"
},
"created_at_ms": 123,
"updated_at_ms": 123,
"brand": "<string>",
"model": "<string>",
"reference": "<string>",
"year": 123,
"price": {
"amount_minor": 123,
"currency": "<string>"
},
"display_price": {
"amount_minor": 123,
"currency": "<string>"
},
"official_list_price": {
"amount_minor": 123,
"currency": "<string>"
},
"price_eur_minor": 123,
"condition": "NEW",
"dial_type": "<string>",
"variant": "<string>",
"price_indicator": {
"comparable_count": 123,
"median_price_eur_minor": 123,
"delta_eur_minor": 123,
"delta_percent": 123
},
"extraction_context": {
"candidate_id": "<string>",
"raw_text": "<string>",
"source_lines": [
123
],
"source_line_start": 123,
"source_line_end": 123,
"intent": "<string>",
"confidence": 123,
"field_sources": {},
"inherited_context": {},
"global_context": {
"intent": "<string>",
"currency": "<string>",
"location": "<string>",
"price_type": "<string>",
"availability": "<string>",
"trade_allowed": true,
"default_condition": "<string>",
"default_set": "<string>"
},
"warnings": [
"<string>"
]
}
}
],
"has_more": true,
"next_cursor": "<string>",
"summary": {
"total": 123,
"by_side": {
"for_sale": 42,
"want_to_buy": 7
},
"min_price_eur_minor": 123,
"max_price_eur_minor": 123,
"avg_price_eur_minor": 123,
"median_price_eur_minor": 123,
"latest_timestamp_ms": 123
},
"facets": {
"brands": [
{
"value": "<string>",
"count": 123
}
],
"conditions": [
{
"value": "<string>",
"count": 123
}
],
"years": [
{
"value": 123,
"count": 123
}
],
"dial_types": [
{
"value": "<string>",
"count": 123
}
],
"variants": [
{
"value": "<string>",
"count": 123
}
],
"full_set_status": [
{
"value": "<string>",
"count": 123
}
],
"country_codes": [
{
"value": "<string>",
"count": 123
}
],
"groups": [
{
"value": "<string>",
"count": 123
}
],
"price_range": {
"currency": "EUR",
"min_minor": 123,
"max_minor": 123
}
},
"effective_filter": {}
}{
"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"
}
}Search projected market listings
Flexible cursor search over projected classified watch listings. Saved view filters and request filters are combined with AND semantics.
curl --request POST \
--url https://api-v2.watchcollect.com/v2/market/listings/search \
--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/listings/search', 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/listings/search"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"classified_watch_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"classification_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"watch_index": 123,
"side": "for_sale",
"full_set_status": [
"WATCH"
],
"sender": {
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"phone_number": "<string>",
"lid": "<string>",
"display_name": "<string>",
"country_prefix": "<string>"
},
"source": {
"canonical_message_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"message_timestamp_ms": 123,
"group_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"group_names": [
"<string>"
],
"occurrence_count": 123,
"first_seen_at_ms": 123,
"last_seen_at_ms": 123,
"has_media": true,
"is_duplicate": true,
"is_hidden": true,
"is_revoked": true,
"message_text": "<string>",
"media_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"media_url": "<string>"
},
"created_at_ms": 123,
"updated_at_ms": 123,
"brand": "<string>",
"model": "<string>",
"reference": "<string>",
"year": 123,
"price": {
"amount_minor": 123,
"currency": "<string>"
},
"display_price": {
"amount_minor": 123,
"currency": "<string>"
},
"official_list_price": {
"amount_minor": 123,
"currency": "<string>"
},
"price_eur_minor": 123,
"condition": "NEW",
"dial_type": "<string>",
"variant": "<string>",
"price_indicator": {
"comparable_count": 123,
"median_price_eur_minor": 123,
"delta_eur_minor": 123,
"delta_percent": 123
},
"extraction_context": {
"candidate_id": "<string>",
"raw_text": "<string>",
"source_lines": [
123
],
"source_line_start": 123,
"source_line_end": 123,
"intent": "<string>",
"confidence": 123,
"field_sources": {},
"inherited_context": {},
"global_context": {
"intent": "<string>",
"currency": "<string>",
"location": "<string>",
"price_type": "<string>",
"availability": "<string>",
"trade_allowed": true,
"default_condition": "<string>",
"default_set": "<string>"
},
"warnings": [
"<string>"
]
}
}
],
"has_more": true,
"next_cursor": "<string>",
"summary": {
"total": 123,
"by_side": {
"for_sale": 42,
"want_to_buy": 7
},
"min_price_eur_minor": 123,
"max_price_eur_minor": 123,
"avg_price_eur_minor": 123,
"median_price_eur_minor": 123,
"latest_timestamp_ms": 123
},
"facets": {
"brands": [
{
"value": "<string>",
"count": 123
}
],
"conditions": [
{
"value": "<string>",
"count": 123
}
],
"years": [
{
"value": 123,
"count": 123
}
],
"dial_types": [
{
"value": "<string>",
"count": 123
}
],
"variants": [
{
"value": "<string>",
"count": 123
}
],
"full_set_status": [
{
"value": "<string>",
"count": 123
}
],
"country_codes": [
{
"value": "<string>",
"count": 123
}
],
"groups": [
{
"value": "<string>",
"count": 123
}
],
"price_range": {
"currency": "EUR",
"min_minor": 123,
"max_minor": 123
}
},
"effective_filter": {}
}{
"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
Saved view filters are combined with request filters using AND semantics.
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
The current implementation applies the first sort item and falls back to newest listing activity.
Show child attributes
Show child attributes
1 <= x <= 2003"USD"
Optional expensive additions. Use extraction_context only on screens that render classification evidence; default listing cards omit it.
summary, facets, extraction_context On the summary route, omit price aggregates and return only total and per-side counts for latency-sensitive headers.
counts_only Response
Cursor page of market listings.