Search the Watch Market avatar

Search the Watch Market

Pricing

Pay per usage

Go to Apify Store
Search the Watch Market

Search the Watch Market

Watch asking prices and new dealer listings for watches from 537,000+ live ads, 122,000+ vendors, and 160+ million price points (data since 1988). Resolve a watch model, then fetch specs, the latest snapshot, 13-week history, and new listings. Use Standby for HTTP or Start to save JSON.

Pricing

Pay per usage

Rating

5.0

(1)

Developer

Search the Watch Market

Search the Watch Market

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Share

Market data for watches: watch asking prices, specs, weekly charts, and new dealer supply — for apps, agents, and research, without scraping dealer websites.

Built on the same dataset behind Search the Watch Market:

537,000+Active listings
8.2+ millionHistoric listings
816,000+Historic auctions
122,000+Vendors tracked
160+ millionPrice points
Since 1988Historical coverage

This Actor exposes live asking-price market data. Auction results and the long historic archive sit in that same dataset; the endpoints below return model resolve, weekly snapshots, specs, 13-week charts, new listings, and listing price history.

What you can do

  • Find the model — type a brand and reference; get a stable group_id
  • See what it’s worth — low, high, and average asking price plus market value for the latest complete week
  • Read the specs — case size, movement, materials, and other consensus fields
  • Track the chart — about 13 weeks of min / mean / max in major currencies
  • See new supply — watches listed in the last 7 days, with seller, price, and URL
  • Follow one listing — asking-price changes over time

Use Standby for on-demand HTTP. Use Start to save JSON in an Apify dataset. Scheduling, monitoring, and the Apify API work as with any other Actor.

Brand names in examples (Rolex, Omega, and similar) are data labels only — this Actor is not affiliated with those manufacturers.

All data endpoints are GET.

Authentication

All /data/* endpoints require your Apify API token:

Authorization: Bearer <APIFY_TOKEN>

The Console Standby tab injects it automatically. From code you can pass ?token=<APIFY_TOKEN> instead of the header if you cannot set headers.

If authentication fails, the Actor returns 401 with:

{
"status": 0,
"error": "unauthorized",
"message": "Missing or malformed Authorization header. Expected: Bearer <APIFY_TOKEN>"
}

Pricing

See this Actor’s Pricing tab. You pay through Apify (platform usage and any Actor events). No separate account or key is required.

Standby is billed like a normal run while instances are up, including idle time until timeout.

When a quota is exceeded, the Actor returns 429. Handle 429 with retry/backoff. Responses may include X-RateLimit-Limit and X-RateLimit-Remaining.

Response format

Successful responses use:

{
"status": 1,
"...": "payload"
}

Error responses use:

{
"status": 0,
"error": "<error_code>",
"message": "<description>"
}

Treat a response as success only when HTTP status is 200 and the JSON has "status": 1.

Common HTTP statuses:

  • 400 invalid input
  • 401 unauthorized
  • 404 not found
  • 429 rate limited
  • 500 server error
  • 503 temporarily unavailable

Quick start

  1. Sign in to Apify, or copy an API token from Apify Settings.
  2. Resolve a watch query to a group_id.
  3. Call model endpoints with that group_id.
  4. Use listing_id values from listings responses for listing-history calls.

Example:

APIFY_TOKEN="YOUR_APIFY_TOKEN"
BASE_URL="https://search_the_watch_market--watch-market-data.apify.actor"
curl -s "$BASE_URL/data/resolve?q=rolex%20submariner%20126610ln" \
-H "Authorization: Bearer $APIFY_TOKEN"

Core identifiers

  • group_id: model-level identifier used by model endpoints
  • listing_id: listing-level identifier used by the listing history endpoint

Endpoints overview

EndpointPurpose
GET /data/resolve?q={query}Resolve free-text watch query to group_id
GET /data/model/{group_id}/pricesLatest model pricing snapshot
GET /data/model/{group_id}/specsModel specification attributes
GET /data/model/{group_id}/history13-week model price history
GET /data/model/{group_id}/listingsNew listings in the last 7 days
GET /data/listing/{listing_id}/historyPrice-change history for one listing
GET /Health check (no auth)

Endpoint reference

1) Resolve query

GET /data/resolve?q={query}

Use this first when you do not yet have a group_id.

Query parameters:

  • q (required, string): e.g. rolex submariner 126610ln

Success example:

{
"status": 1,
"group_id": 2341,
"brand": "Submariner",
"model_number": "126610LN",
"display_name": "Submariner 126610LN"
}

Request example:

curl -s "https://search_the_watch_market--watch-market-data.apify.actor/data/resolve?q=rolex%20submariner%20126610ln" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN"

No match example (404):

{
"status": 0,
"error": "not_found",
"message": "No matching group found"
}

If you see this message, check spelling and try the manufacturer reference number instead of a colloquial name.

2) Model prices

GET /data/model/{group_id}/prices

Returns the latest model-level pricing snapshot.

Path parameters:

  • group_id (required, integer)

Success example:

{
"status": 1,
"group_id": 2314,
"currency": "USD",
"listing_count": 47,
"min": 6640,
"max": 11360,
"mean": 8600,
"market_value": 8370
}

Prices use USD when that week has USD data; otherwise the first populated fallback currency is used.

Request example:

curl -s "https://search_the_watch_market--watch-market-data.apify.actor/data/model/2314/prices" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN"

3) Model specs

GET /data/model/{group_id}/specs

Returns specification attributes for the model.

Path parameters:

  • group_id (required, integer)

Success example:

{
"status": 1,
"group_id": 2314,
"properties": {
"brand": "Omega",
"model": "Speedmaster",
"reference_number": "310.32.42.50.01.002",
"base_caliber": "3861",
"case_diameter": "42mm",
"water_resistance": "50m",
"power_reserve": "50h",
"case_material": "Stainless Steel",
"bracelet_material": "Stainless Steel",
"crystal": "Sapphire",
"functions": "Hours, Minutes, Seconds, Chronograph, Date",
"year_introduced": "2021"
}
}

Request example:

curl -s "https://search_the_watch_market--watch-market-data.apify.actor/data/model/2314/specs" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN"

4) Model history

GET /data/model/{group_id}/history

Returns up to 13 complete weekly points with mean, min, max, and count.

Path parameters:

  • group_id (required, integer)

Supported currency keys in mean/min/max:

  • GBP, USD, EUR, AUD, CAD, CHF, HKD, SGD, PLN, AED, JPY

Success example:

{
"status": 1,
"group_id": 2314,
"weeks": [
{
"week": "2026-02-09",
"mean": {
"GBP": 6210,
"USD": 8380,
"EUR": 7290
},
"min": {
"GBP": 5600,
"USD": 7550,
"EUR": 6570
},
"max": {
"GBP": 7100,
"USD": 9580,
"EUR": 8340
},
"count": 38
}
]
}

Request example:

curl -s "https://search_the_watch_market--watch-market-data.apify.actor/data/model/2314/history" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN"

5) Model listings (new in last 7 days)

GET /data/model/{group_id}/listings?cursor={token}

Returns a paginated listings feed.

Path parameters:

  • group_id (required, integer)

Query parameters:

  • cursor (optional, string): use next_cursor from the prior response

Listings are a rolling 7-day window, 20 items per page. Do not use numeric page offsets — new listings would shift the result set. Listing prices stay in the dealer’s local currency.

Success example:

{
"status": 1,
"group_id": 2314,
"page_size": 20,
"total_count": 43,
"next_cursor": "eyJhZGRlZF9kYXRlIjoiMjAyNi0wNS0wM1QxODo0MjowMC4wMDBaIiwibGlzdGluZ19pZCI6MTEyNjAxMzM0fQ",
"items": [
{
"listing_id": 112578408,
"url": "https://example.com/listings/omega-speedmaster-moonwatch",
"added_date": "2026-05-04T09:14:00.000Z",
"price": 6450,
"currency": "GBP",
"seller": "Example LTD"
}
]
}

First page:

curl -s "https://search_the_watch_market--watch-market-data.apify.actor/data/model/2314/listings" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN"

Next page:

curl -s "https://search_the_watch_market--watch-market-data.apify.actor/data/model/2314/listings?cursor=YOUR_NEXT_CURSOR" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN"

Loop while next_cursor is present to get every new listing.

6) Listing price history

GET /data/listing/{listing_id}/history

Returns the observed price-change timeline for one listing.

Path parameters:

  • listing_id (required, integer)

Success example:

{
"status": 1,
"listing_id": 112578408,
"history": [
{ "price": 6800, "date": "2026-02-14T12:00:00.000Z" },
{ "price": 6650, "date": "2026-03-01T08:00:00.000Z" },
{ "price": 6500, "date": "2026-03-22T14:00:00.000Z" },
{ "price": 6450, "date": "2026-04-16T21:17:04.000Z" }
]
}

Request example:

curl -s "https://search_the_watch_market--watch-market-data.apify.actor/data/listing/112578408/history" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN"

Health check

GET /

No authentication required.

$curl -s "https://search_the_watch_market--watch-market-data.apify.actor/"

How to use Start

Fill the input form and click Start:

  1. Choose an endpoint
  2. For resolve, enter q (for example rolex submariner 126610ln)
  3. For prices, specs, history, or listings, enter group_id
  4. For listing history, enter listing_id
  5. For further listing pages, paste cursor from next_cursor

The JSON is stored as dataset item 0 and as key-value record OUTPUT. Start runs work with the usual Apify API, tasks, and schedules.

How to integrate

  1. Store your Apify API token in a secret manager.
  2. Add Authorization: Bearer <APIFY_TOKEN> to all /data/* requests (or ?token=).
  3. Resolve user input to group_id via /data/resolve.
  4. Use model endpoints for analytics (prices, specs, history).
  5. Use the listings endpoint for recent supply monitoring.
  6. Use listing history for price-change tracking.
  7. Handle 429 with retry/backoff.

Standby is HTTP, so Zapier, Make, and similar tools can call it like any other REST API.

cURL collection

APIFY_TOKEN="YOUR_APIFY_TOKEN"
BASE_URL="https://search_the_watch_market--watch-market-data.apify.actor"
GROUP_ID="2314"
LISTING_ID="112578408"
# Resolve query
curl -s "$BASE_URL/data/resolve?q=omega%20speedmaster%20310.32.42.50.01.002" \
-H "Authorization: Bearer $APIFY_TOKEN"
# Prices
curl -s "$BASE_URL/data/model/$GROUP_ID/prices" \
-H "Authorization: Bearer $APIFY_TOKEN"
# Specs
curl -s "$BASE_URL/data/model/$GROUP_ID/specs" \
-H "Authorization: Bearer $APIFY_TOKEN"
# History
curl -s "$BASE_URL/data/model/$GROUP_ID/history" \
-H "Authorization: Bearer $APIFY_TOKEN"
# Listings
curl -s "$BASE_URL/data/model/$GROUP_ID/listings" \
-H "Authorization: Bearer $APIFY_TOKEN"
# Listing history
curl -s "$BASE_URL/data/listing/$LISTING_ID/history" \
-H "Authorization: Bearer $APIFY_TOKEN"

Issues and feature requests: use this Actor’s Issues tab.