Shops

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.

get/v1/shops

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

searchstring

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.

sortBy'monthlyVisits' | 'activeAds' | 'growth30d' | 'productsCount' | 'createdAt' | 'tiktokFollowers' | 'tiktokActiveAds' | 'tiktokTotalPosts' | 'tiktokAvgActiveAds7d' | 'tiktokAvgActiveAds30d' | 'estMonthlySales' | 'unitsSold'

Optional sort key for the shops list. Defaults to monthlyVisits.

order'asc' | 'desc'

Optional sort order. Defaults to desc.

offsetinteger

Pagination offset. Defaults to 0.

limitinteger

Maximum number of shops to return. Defaults to 32.

minMonthlyVisitsinteger

Optional minimum monthly visits filter.

maxMonthlyVisitsinteger

Optional maximum monthly visits filter.

minActiveAdsnumber

Optional minimum active ads filter. The metric follows adsTimePeriod.

maxActiveAdsnumber

Optional maximum active ads filter. The metric follows adsTimePeriod.

adsTimePeriod'last24h' | 'last7d' | 'last30d'

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.

hasTikTokboolean
Example:true

Optional TikTok presence filter backed by the legacy flat shop index. true requires an indexed TikTok page or handle; false excludes shops with one.

minTikTokFollowersnumber
Example:10000
maxTikTokFollowersnumber
Example:500000
minTikTokActiveAdsnumber
Example:5
maxTikTokActiveAdsnumber
Example:50
minTikTokTotalPostsnumber
Example:20
maxTikTokTotalPostsnumber
Example:1000
minProductsCountinteger

Optional minimum products count filter.

maxProductsCountinteger

Optional maximum products count filter.

createdAfterstring date

Optional inclusive lower bound for shop creation date.

createdBeforestring date

Optional inclusive upper bound for shop creation date.

isShopifyPlusboolean

Optional Shopify Plus filter.

categoryIdsinteger[]

Optional category ids. Uses the same index field as POST /v1/shops/query categoryIds.

pixelIdsstring[]

Optional canonical pixel UUIDs. Uses the same index fields as POST /v1/shops/query pixelIds. Resolve display names through /v1/facets/pixels.

excludePixelIdsstring[]

Optional canonical pixel UUIDs to exclude. Uses the same index fields as POST /v1/shops/query excludePixelIds.

shopifyAppIdsstring[]

Optional canonical Shopify app UUIDs. Uses the same index field as POST /v1/shops/query shopifyAppIds.

excludeShopifyAppIdsstring[]

Optional canonical Shopify app UUIDs to exclude. Uses the same index field as POST /v1/shops/query excludeShopifyAppIds.

languagesstring[]

Optional default language filters. Accepts repeated query params or a comma-separated list.

currenciesstring[]

Optional default currency filters. Accepts repeated query params or a comma-separated list.

minTrustpilotRatingnumber

Optional minimum Trustpilot rating filter.

maxTrustpilotRatingnumber

Optional maximum Trustpilot rating filter.

minTrustpilotReviewCountinteger

Optional minimum Trustpilot reviews filter.

maxTrustpilotReviewCountinteger

Optional maximum Trustpilot reviews filter.

minMonthlySalesinteger

Minimum estimated revenue over the last 30 days, in USD (sales tracker). Shops the tracker does not follow are excluded.

maxMonthlySalesinteger

Maximum estimated revenue over the last 30 days, in USD (sales tracker).

minUnitsSoldinteger

Minimum units sold over the last 30 days (sales tracker). Shops the tracker does not follow are excluded.

maxUnitsSoldinteger

Maximum units sold over the last 30 days (sales tracker).

Response

Paginated shops response. The response also includes the X-Request-Id header.

requestIdstring required

Request identifier mirrored in the X-Request-Id response 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.