List shops
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.
Request
- Base URL: https://api.trendtrack.io (the document declares no server; this is the origin it was published from)
- URL: https://api.trendtrack.io/v1/shops
- Auth: HTTP bearer
Query parameters
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.
Optional sort order. Defaults to desc.
Pagination offset. Defaults to 0.
Maximum number of shops to return. Defaults to 32.
Optional minimum monthly visits filter.
Optional maximum monthly visits filter.
Optional minimum active ads filter. The metric follows adsTimePeriod.
Optional maximum active ads filter. The metric follows adsTimePeriod.
Relative ad first-seen time window. When createdAfter is omitted, this is converted to an internal first-seen lower bound at the UTC day boundary for the selected period. It also selects the ads metric period used by minAds/maxAds.
Optional time period used by active ads filters and sorting. Defaults to last24h.
Optional TikTok presence filter backed by the legacy flat shop index. true requires an indexed TikTok page or handle; false excludes shops with one.
Optional minimum products count filter.
Optional maximum products count filter.
Optional inclusive lower bound for shop creation date.
Optional inclusive upper bound for shop creation date.
Optional Shopify Plus filter.
Optional category ids. Uses the same index field as POST /v1/shops/query categoryIds.
Optional canonical pixel UUIDs. Uses the same index fields as POST /v1/shops/query pixelIds. Resolve display names through /v1/facets/pixels.
Optional canonical pixel UUIDs to exclude. Uses the same index fields as POST /v1/shops/query excludePixelIds.
Optional canonical Shopify app UUIDs. Uses the same index field as POST /v1/shops/query shopifyAppIds.
Optional canonical Shopify app UUIDs 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.
Optional maximum Trustpilot rating filter.
Optional minimum Trustpilot reviews filter.
Optional maximum Trustpilot reviews filter.
Minimum estimated revenue over the last 30 days, in USD (sales tracker). Shops the tracker does not follow are excluded.
Maximum estimated revenue over the last 30 days, in USD (sales tracker).
Minimum units sold over the last 30 days (sales tracker). Shops the tracker does not follow are excluded.
Maximum units sold over the last 30 days (sales tracker).
Response
Paginated shops response. The response also includes the X-Request-Id header.
Example response
{
"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
}
]
},
"sales": {
"currency": "USD",
"estMonthlySales": 222540,
"unitsSold": 1823
},
"advertising": {
"activeAds": 12,
"linkedAdvertisersCount": 2,
"history": [
{
"period": "2026-03-01",
"value": 2942350
}
],
"topCountries": [
{
"countryCode": "US",
"share": 0.64
}
]
},
"tiktok": {
"hasTikTok": true,
"pageId": "6802334614847603717",
"handle": "examplebrand",
"profileMetrics": {
"followers": 128430,
"totalPosts": 342,
"newPosts": 12,
"totalViews": 9823431,
"totalLikes": 456789
},
"activity": {
"activeAds": 7,
"totalAds": 33,
"avgActiveAds7d": 5.5,
"avgActiveAds30d": 4.25
},
"lastUpdatedAt": "2026-06-05T08:30:00.000Z"
},
"googleAds": {
"status": "available",
"liveAds": 14,
"adsLaunched30d": 5,
"reach": {
"value": 245000,
"label": "Google reported reach"
},
"topCountries": [
{
"code": "FR",
"ads": 12,
"reach": 185000
}
],
"platformMix": [
{
"platform": "SEARCH",
"ads": 8
}
]
},
"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,
"total": 128
}
}Changes
No recorded changes to this operation across all 1 revision of this API.