Returns the lightweight public shops browse surface. This endpoint stays intentionally simple and covers the default discovery path through search, pagination, sorting, and a small stable subset of filters. For the full advanced filtering contract, use POST /v1/shops/query.
publicApiBearer Provide a Trendtrack Public API key using Authorization: Bearer <api_key>.
In: header
application/json
application/json
application/json
application/json
application/json
{
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"data": [
{
"id": "3f8aa146-6f96-46e8-9781-64db5166f9a8",
"domain": "example.com",
"name": "Example Shop",
"screenshotUrl": "https://cdn.example.com/screenshots/example.com.png",
"createdAt": "2024-01-15T00:00:00.000Z",
"profile": {
"countryCode": "US",
"currency": "USD",
"isShopifyPlus": true
},
"catalog": {
"productsCount": 124,
"mainCategory": "Fashion",
"bestSellers": [
{
"imageUrl": "https://cdn.shopify.com/s/files/1/1442/3288/files/PDP_QUIET_WHITE_01-805740.png",
"title": "Loop Quiet™ 2",
"price": 19.95,
"currency": "EUR"
}
]
},
"traffic": {
"monthlyVisits": 45231,
"growth30d": 0.18,
"history": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"topCountries": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"advertising": {
"activeAds": 12,
"linkedAdvertisersCount": 2,
"history": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"topCountries": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"latestAds": [
{
"id": "facebook_1059447873925448",
"mediaType": "video",
"mediaUrl": "https://medias.trendtrack.io/video/facebook/1317841346869775.mp4",
"thumbnailUrl": "https://medias.trendtrack.io/thumbnails/facebook/1317841346869775.jpg"
}
]
}
],
"pagination": {
"limit": 32,
"offset": 0,
"total": 128
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}Returns the advanced public shops discovery surface. This endpoint is the canonical public route for complex filtering and sorting, while keeping the response aligned with the standard public ShopSummary contract. searchType=domain performs exact domain/related-domain matching from a domain or URL and does not fall back to broad wildcard/text matching.
publicApiBearer Provide a Trendtrack Public API key using Authorization: Bearer <api_key>.
In: header
application/json
TypeScript Definitions
Use the request body type in TypeScript.
application/json
application/json
application/json
application/json
application/json
{
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"data": [
{
"id": "3f8aa146-6f96-46e8-9781-64db5166f9a8",
"domain": "example.com",
"name": "Example Shop",
"screenshotUrl": "https://cdn.example.com/screenshots/example.com.png",
"createdAt": "2024-01-15T00:00:00.000Z",
"profile": {
"countryCode": "US",
"currency": "USD",
"isShopifyPlus": true
},
"catalog": {
"productsCount": 124,
"mainCategory": "Fashion",
"bestSellers": [
{
"imageUrl": "https://cdn.shopify.com/s/files/1/1442/3288/files/PDP_QUIET_WHITE_01-805740.png",
"title": "Loop Quiet™ 2",
"price": 19.95,
"currency": "EUR"
}
]
},
"traffic": {
"monthlyVisits": 45231,
"growth30d": 0.18,
"history": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"topCountries": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"advertising": {
"activeAds": 12,
"linkedAdvertisersCount": 2,
"history": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"topCountries": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"latestAds": [
{
"id": "facebook_1059447873925448",
"mediaType": "video",
"mediaUrl": "https://medias.trendtrack.io/video/facebook/1317841346869775.mp4",
"thumbnailUrl": "https://medias.trendtrack.io/thumbnails/facebook/1317841346869775.jpg"
}
]
}
],
"pagination": {
"limit": 32,
"offset": 0,
"total": 128
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}Returns a paginated list of similar shops using the public hybrid shops contract. The identifier can be a canonical domain or a public shop id / website UUID. When the resolved shop is not present in the similar shops engine, the endpoint still returns 200 with an empty data array and meta.shopExists=false.
publicApiBearer Provide a Trendtrack Public API key using Authorization: Bearer <api_key>.
In: header
application/json
application/json
application/json
application/json
application/json
application/json
{
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"data": [
{
"shop": {
"id": "3f8aa146-6f96-46e8-9781-64db5166f9a8",
"domain": "example.com",
"name": "Example Shop",
"screenshotUrl": "https://cdn.example.com/screenshots/example.com.png",
"createdAt": "2024-01-15T00:00:00.000Z",
"profile": {
"countryCode": "US",
"currency": "USD",
"isShopifyPlus": true
},
"catalog": {
"productsCount": 124,
"mainCategory": "Fashion",
"bestSellers": [
{
"imageUrl": "https://cdn.shopify.com/s/files/1/1442/3288/files/PDP_QUIET_WHITE_01-805740.png",
"title": "Loop Quiet™ 2",
"price": 19.95,
"currency": "EUR"
}
]
},
"traffic": {
"monthlyVisits": 45231,
"growth30d": 0.18,
"history": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"topCountries": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"advertising": {
"activeAds": 12,
"linkedAdvertisersCount": 2,
"history": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"topCountries": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"latestAds": [
{
"id": "facebook_1059447873925448",
"mediaType": "video",
"mediaUrl": "https://medias.trendtrack.io/video/facebook/1317841346869775.mp4",
"thumbnailUrl": "https://medias.trendtrack.io/thumbnails/facebook/1317841346869775.jpg"
}
]
},
"similarityScore": 0.9137
}
],
"pagination": {
"limit": 32,
"offset": 0,
"total": 128
},
"meta": {
"shopExists": true
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}Returns the public hybrid shop detail read model for a single shop identifier.
publicApiBearer Provide a Trendtrack Public API key using Authorization: Bearer <api_key>.
In: header
application/json
application/json
application/json
application/json
application/json
application/json
application/json
{
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"data": {
"id": "3f8aa146-6f96-46e8-9781-64db5166f9a8",
"domain": "example.com",
"name": "Example Shop",
"screenshotUrl": "https://cdn.example.com/screenshots/example.com.png",
"createdAt": "2024-01-15T00:00:00.000Z",
"profile": {
"countryCode": "US",
"currency": "USD",
"isShopifyPlus": true,
"defaultLanguage": "en"
},
"trustpilot": {
"rating": 4.7,
"reviewCount": 1834,
"brandName": "Loop Earplugs",
"brandLogo": "https://s3-eu-west-1.amazonaws.com/tpd/logos/...png",
"url": "https://www.trustpilot.com/review/loopearplugs.com"
},
"socials": {
"facebook": {
"handle": "loopearplugs",
"followers": 12843,
"growth30d": 0.042
},
"instagram": {
"handle": "loopearplugs",
"followers": 12843,
"growth30d": 0.042
},
"tiktok": {
"handle": "loopearplugs",
"followers": 12843,
"growth30d": 0.042
},
"youtube": {
"handle": "loopearplugs",
"followers": 12843,
"growth30d": 0.042
},
"pinterest": {
"handle": "loopearplugs",
"followers": 12843,
"growth30d": 0.042
},
"linkedin": {
"handle": "loopearplugs",
"followers": 12843,
"growth30d": 0.042
},
"twitter": {
"handle": "loopearplugs",
"followers": 12843,
"growth30d": 0.042
}
},
"catalog": {
"productsCount": 124,
"mainCategory": "Fashion",
"bestSellers": [
{
"imageUrl": "https://cdn.shopify.com/s/files/1/1442/3288/files/PDP_QUIET_WHITE_01-805740.png",
"title": "Loop Quiet™ 2",
"price": 19.95,
"currency": "EUR"
}
],
"categories": [
"Fashion",
"Accessories"
],
"myShopifyDomain": "loopearplugs.myshopify.com"
},
"traffic": {
"monthlyVisits": 45231,
"growth30d": 0.18,
"history": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"topCountries": [
{
"countryCode": "US",
"share": 0.64
}
],
"growth90d": 0.32,
"growth180d": 0.41,
"mainMarkets": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"advertising": {
"activeAds": 12,
"linkedAdvertisersCount": 2,
"history": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"topCountries": [
{
"countryCode": "US",
"share": 0.64
}
],
"linkedAdvertisers": [
{
"id": "1234567890",
"platform": "facebook",
"facebookPageId": "1234567890",
"name": "Acme Brand",
"isPrimary": true,
"activeAds": 12
}
],
"summary": {
"activeAds": 12,
"avgActiveAds30d": 9.4,
"reach30d": 102300,
"countryDistribution": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"adsCountryStats": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"technology": {
"theme": "Prestige",
"apps": [
{
"id": "41c143a7-0000-4000-8000-000000000000",
"label": "Judge.me",
"iconUrl": "https://cdn.shopify.com/app-store/listing_images/abc/icon.png"
}
],
"pixels": [
{
"id": "002d1031-2a33-42c6-9b4a-c5db2349ecec",
"name": "Meta Pixel",
"iconUrl": "https://trendtrack.r2.cloudflarestorage.com/technology_icons/MetaPixel.png?...signature",
"categories": [
"Analytics",
"Advertising"
]
}
]
},
"latestAds": [
{
"id": "facebook_1059447873925448",
"mediaType": "video",
"mediaUrl": "https://medias.trendtrack.io/video/facebook/1317841346869775.mp4",
"thumbnailUrl": "https://medias.trendtrack.io/thumbnails/facebook/1317841346869775.jpg"
}
],
"similarShops": [
{
"shop": {
"id": "3f8aa146-6f96-46e8-9781-64db5166f9a8",
"domain": "example.com",
"name": "Example Shop",
"screenshotUrl": "https://cdn.example.com/screenshots/example.com.png",
"createdAt": "2024-01-15T00:00:00.000Z",
"profile": {
"countryCode": "US",
"currency": "USD",
"isShopifyPlus": true
},
"catalog": {
"productsCount": 124,
"mainCategory": "Fashion",
"bestSellers": [
{
"imageUrl": "https://cdn.shopify.com/s/files/1/1442/3288/files/PDP_QUIET_WHITE_01-805740.png",
"title": "Loop Quiet™ 2",
"price": 19.95,
"currency": "EUR"
}
]
},
"traffic": {
"monthlyVisits": 45231,
"growth30d": 0.18,
"history": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"topCountries": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"advertising": {
"activeAds": 12,
"linkedAdvertisersCount": 2,
"history": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"topCountries": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"latestAds": [
{
"id": "facebook_1059447873925448",
"mediaType": "video",
"mediaUrl": "https://medias.trendtrack.io/video/facebook/1317841346869775.mp4",
"thumbnailUrl": "https://medias.trendtrack.io/thumbnails/facebook/1317841346869775.jpg"
}
]
},
"similarityScore": 0.9137
}
]
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}Returns the linked advertiser summaries for a single shop identifier.
publicApiBearer Provide a Trendtrack Public API key using Authorization: Bearer <api_key>.
In: header
application/json
application/json
application/json
application/json
application/json
application/json
application/json
{
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"data": [
{
"id": "1234567890",
"platform": "facebook",
"facebookPageId": "1234567890",
"name": "Acme Brand",
"isPrimary": true,
"activeAds": 12
}
]
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}Returns follower time-series for Facebook and Instagram for the linked advertiser page of the shop. Other networks are handle-only today and not exposed here.
publicApiBearer Provide a Trendtrack Public API key using Authorization: Bearer <api_key>.
In: header
application/json
application/json
application/json
application/json
application/json
application/json
application/json
{
"requestId": "req_01JN3C9Q2K5X9Y6V7W8Z1A2B3C",
"data": {
"facebook": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"instagram": [
{
"period": "2026-03-01",
"value": 2942350
}
]
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}Returns the paginated list of Shopify best-selling products for a single shop. Products come from the shop’s Shopify best-seller feed and can be sorted by rank, price, or creation date.
publicApiBearer Provide a Trendtrack Public API key using Authorization: Bearer <api_key>.
In: header
application/json
application/json
application/json
application/json
application/json
application/json
application/json
{
"requestId": "req_01JN3C9Q2K5X9Y6V7W8Z1A2B3C",
"data": [
{
"id": "7869034926321",
"title": "Loop Quiet™ 2",
"handle": "loop-quiet-2",
"imageUrl": "https://cdn.shopify.com/s/files/1/1442/3288/files/PDP_QUIET_WHITE_01-805740.png",
"productUrl": "https://loopearplugs.com/products/loop-quiet-2",
"price": 19.95,
"currency": "EUR",
"rank": 1,
"createdAt": "2024-08-20T00:00:00.000Z",
"publishedAt": "2024-08-22T00:00:00.000Z"
}
],
"pagination": {
"limit": 32,
"offset": 0,
"total": 128
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}{
"error": {
"code": "missing_api_key",
"message": "Provide an API key using Authorization: Bearer <api_key>.",
"requestId": "5d93d8de-0f6d-46a4-bd10-2e519b7e96bc",
"details": {
"validationErrors": [
{
"field": "query-string.limit",
"location": "query-string",
"expected": [
"limit must not be greater than 100"
]
}
]
}
}
}Optional broad shop identity search term matched against domain, related domains, and shop name. This GET browse search remains broad; use POST /v1/shops/query with searchType="domain" for exact domain matching.
Optional sort key for the shops list. Defaults to monthlyVisits.
"monthlyVisits" | "activeAds" | "growth30d" | "productsCount" | "createdAt"Optional sort order. Defaults to desc.
"asc" | "desc"Pagination offset. Defaults to 0.
00 <= valueMaximum number of shops to return. Defaults to 32.
321 <= value <= 100Optional minimum monthly visits filter.
0 <= valueOptional maximum monthly visits filter.
0 <= valueOptional minimum active ads filter. The metric follows adsTimePeriod.
0 <= valueOptional maximum active ads filter. The metric follows adsTimePeriod.
0 <= valueOptional time period used by active ads filters and sorting. Defaults to last24h.
"last24h" | "last7d" | "last30d"Optional minimum products count filter.
0 <= valueOptional maximum products count filter.
0 <= valueOptional inclusive lower bound for shop creation date.
dateOptional inclusive upper bound for shop creation date.
dateOptional Shopify Plus filter.
Optional category ids. Uses the same index field as POST /v1/shops/query categoryIds.
Optional stable pixel/technology ids. Uses the same index field as POST /v1/shops/query pixelIds.
Optional stable pixel/technology ids to exclude. Uses the same index field as POST /v1/shops/query excludePixelIds.
Optional Shopify app identifiers. Uses the same index field as POST /v1/shops/query shopifyAppIds.
Optional Shopify app identifiers to exclude. Uses the same index field as POST /v1/shops/query excludeShopifyAppIds.
Optional default language filters. Accepts repeated query params or a comma-separated list.
Optional default currency filters. Accepts repeated query params or a comma-separated list.
Optional minimum Trustpilot rating filter.
0 <= valueOptional maximum Trustpilot rating filter.
0 <= valueOptional minimum Trustpilot reviews filter.
0 <= valueOptional maximum Trustpilot reviews filter.
0 <= valueCanonical shop domain or stable public shop id / website UUID used to resolve similar shops.
Sort key for similar shops. createdAt uses request-time normalization while the backing creation_date field remains keyword-mapped; native date sorting requires an Elasticsearch mapping/reindex update.
"relevance" | "monthlyVisits" | "activeAds" | "growth30d" | "productsCount" | "createdAt"Optional sort order. Defaults to desc.
"asc" | "desc"Pagination offset. Defaults to 0.
00 <= valueMaximum number of similar shops to return. Defaults to 32.
321 <= value <= 100Stable public shop identifier.
Stable public shop identifier.
1001 <= value <= 100Stable public shop identifier.
Aggregation bucket for the follower time series. Week and month pick the last raw snapshot of each bucket.
"day" | "week" | "month"Rolling lookback window, in days, ending at the latest snapshot.
907 <= value <= 365Stable public shop identifier.
Maximum number of products to return per page.
321 <= value <= 100Offset into the products list.
00 <= value <= 10000Sort key. popularity orders by Shopify best-seller rank; price by product price; createdAt by Shopify product creation date.
"popularity" | "price" | "createdAt"Sort direction. Defaults to asc for popularity and desc otherwise.
"asc" | "desc"curl -X GET "https://api.trendtrack.io/v1/shops"curl -X POST "https://api.trendtrack.io/v1/shops/query" \ -H "Content-Type: application/json" \ -d '{ "search": "https://www.allbirds.com/products", "searchType": "domain", "limit": 10, "offset": 0 }'curl -X GET "https://api.trendtrack.io/v1/shops/example.com/similar"curl -X GET "https://api.trendtrack.io/v1/shops/3f8aa146-6f96-46e8-9781-64db5166f9a8"curl -X GET "https://api.trendtrack.io/v1/shops/3f8aa146-6f96-46e8-9781-64db5166f9a8/advertisers"curl -X GET "https://api.trendtrack.io/v1/shops/3f8aa146-6f96-46e8-9781-64db5166f9a8/socials/history"curl -X GET "https://api.trendtrack.io/v1/shops/3f8aa146-6f96-46e8-9781-64db5166f9a8/products"Optional search string. For searchType="domain", send a domain or URL for exact domain/related-domain matching. For broad website text search, use shopContains. For product text, use productName. Do not send unsupported legacy keys name, domain, or domains.
Search mode. domain performs exact domain/related-domain matching from a domain or URL, productName searches indexed product text, and shopContains uses the broad website text-search index.
"domain" | "productName" | "shopContains"Sort key for the advanced shops query surface. relevance falls back to monthlyVisits when the request does not produce a scored text query.
"relevance" | "monthlyVisits" | "activeAds" | "growth30d" | "productsCount" | "createdAt"Enum value accepted by this request. Allowed values: asc, desc.
"asc" | "desc"0 <= value1 <= value <= 100Optional category ids used by the current shop discovery index.
Optional minimum estimated revenue filter. This currently follows the same approximate indexed revenue model as the app.
0 <= valueOptional maximum estimated revenue filter. This currently follows the same approximate indexed revenue model as the app.
0 <= value0 <= value0 <= value0 <= value0 <= valuedatedateOptional main audience-market filter using uppercase ISO 3166-1 alpha-2 country codes matched against the indexed main_market field.
Optional audience-market filter for shops where these countries appear among the indexed traffic markets.
0 <= value0 <= valueOptional minimum active ads filter. The metric follows adsTimePeriod.
0 <= valueOptional maximum active ads filter. The metric follows adsTimePeriod.
0 <= valueTime window accepted by this request. Allowed values: last24h, last7d, last30d.
"last24h" | "last7d" | "last30d"Traffic growth filters. Each condition uses period, comparison, and value; optional operator links the condition to the next one.
Ads growth filters. Each condition uses period, comparison, and value; optional operator links the condition to the next one.
Page reach growth filters. Each condition uses period, comparison, and value; optional operator links the condition to the next one.
Ad reach growth filters. Each condition uses period, comparison, and value; optional operator links the condition to the next one.
Optional indexed Shopify theme identifier strings backed by the current website discovery index. These are ids, not display names.
Optional stable pixel/technology ids backed by the current website discovery index. These are ids, not display names such as "Meta".
Optional stable pixel/technology ids to exclude. These are ids, not display names.
Optional Shopify app identifiers backed by the current website discovery index.
0 <= value0 <= value0 <= value0 <= valueOptional DTC preset. all means any indexed DTC shop, while us and eu also apply the corresponding creation-country subset used by the app.
"all" | "us" | "eu"