Brandtrackers

List brandtracker creative testing batches

Returns creative-testing batches grouped by ad start date for one active workspace brandtracker resolved from brandtracker.id. Testing membership includes non-deleted Facebook ads with media available in the bucket and a non-null start date. To keep response size and metering bounded, each batch returns at most 20 ads and exposes truncation metadata.

get/v1/brandtrackers/{brandtrackerId}/testing

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/brandtrackers/{brandtrackerId}/testing
  • Auth: HTTP bearer

Path parameters

brandtrackerIdstring required

Public brandtracker identifier. This endpoint resolves brandtracker.id inside the authenticated workspace; legacy spyders.uuid values are accepted when migration metadata exists.

Query parameters

pageinteger

Batch page number. Pagination is by distinct ad start-date batches.

limitinteger

Number of distinct start-date batches to return. Each batch returns at most 20 ads.

status'all' | 'active' | 'inactive'

Status filter for this request. Allowed values: all, active, inactive.

mediaType'all' | 'image' | 'video'

Enum value accepted by this request. Allowed values: all, image, video.

keywordsstring[]

Keyword search terms. Repeated query params and comma-separated values are both accepted.

keywordMode'any' | 'all'

Enum value accepted by this request. Allowed values: any, all.

createdAfterstring date-time nullable
createdBeforestring date-time nullable
minDaysRunningnumber nullable
maxDaysRunningnumber nullable
minDuplicatesnumber nullable
maxDuplicatesnumber nullable
landingPagesstring[]

Landing page URLs. Repeated query params and comma-separated values are both accepted.

adLanguagestring[]

Ad languages. Repeated query params and comma-separated values are both accepted.

ctastring[]

Call-to-action labels. Repeated query params and comma-separated values are both accepted.

adCopyHashesstring[]

12-character MD5 prefixes of ad copy descriptions. Repeated query params and comma-separated values are both accepted.

adCountriesstring
Example:US=include,FR=exclude

Ad country include/exclude filter. Use comma-separated ISO codes with include/exclude modes.

mainCountriesstring[]

Main ad countries. Repeated query params and comma-separated values are both accepted.

euOnlyboolean

When true, keep only ads flagged as EU ads.

partnersboolean nullable

When true, keep only partnership ads. When false, keep only non-partnership ads.

partnerIdsstring[]

Partner identifiers. Repeated query params and comma-separated values are both accepted.

minReachnumber nullable

Minimum ad reach threshold. Backed by the internal reach/impressions analytics field.

maxReachnumber nullable

Maximum ad reach threshold. Backed by the internal reach/impressions analytics field.

cpmnumber

CPM used to convert spend filters into reach thresholds.

minSpendnumber nullable
maxSpendnumber nullable
spendPeriod'total' | 'last24h' | 'last7d' | 'last30d'

Enum value accepted by this request. Allowed values: total, last24h, last7d, last30d.

minSpendPerPagenumber nullable
maxSpendPerPagenumber nullable
spendPerPagePeriod'total' | 'last24h' | 'last7d' | 'last30d'

Enum value accepted by this request. Allowed values: total, last24h, last7d, last30d.

hideLowReachboolean

When true, hides ads flagged as low reach.

minAgenumber nullable
maxAgenumber nullable
sex'men' | 'women' | 'all'

Enum value accepted by this request. Allowed values: men, women, all.

minFacebookLikesnumber nullable
maxFacebookLikesnumber nullable
minInstagramFollowersnumber nullable
maxInstagramFollowersnumber nullable
minVideoDurationnumber nullable
maxVideoDurationnumber nullable
minDescriptionLengthnumber nullable
maxDescriptionLengthnumber nullable
linkedDomainstring
Example:example.com

Linked domain filter. URLs are normalized to their hostname before validation.

growthRankPublicApiBrandtrackerAdsGrowthRank[]

Rank trend filters. Repeated query params and comma-separated values are both accepted.

snapshotDatestring date

Snapshot date (YYYY-MM-DD or latest). When present, status is interpreted as active at this date.

startedAfterstring date

Inclusive ad start-date lower bound.

startedBeforestring date

Inclusive ad start-date upper bound.

lastSeenAfterstring date

Inclusive effective timeline end-date lower bound. Active ads use today, or snapshotDate when provided.

lastSeenBeforestring date

Inclusive effective timeline end-date upper bound. Active ads use today, or snapshotDate when provided.

Response

Paginated brandtracker testing response. Pagination is by start-date batches and the response 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": [
    {
      "startDate": "2026-04-20",
      "ads": [
        {
          "id": "facebook_123456789",
          "collationId": "3810635369204881",
          "platform": "facebook",
          "status": "active",
          "createdAt": "2026-04-18T12:30:00.000Z",
          "firstSeenAt": "2026-04-10T00:00:00.000Z",
          "lastSeenAt": "2026-04-19T00:00:00.000Z",
          "daysRunning": 9,
          "media": {
            "type": "video",
            "thumbnailUrl": "https://cdn.example.com/ads/ad-1-thumb.jpg",
            "mediaUrl": "https://cdn.example.com/ads/ad-1.mp4"
          },
          "advertiser": {
            "id": "1234567890",
            "name": "Example Brand",
            "logoUrl": "https://cdn.example.com/pages/example-brand.png",
            "facebookPageId": "1234567890",
            "liveAdsCount": 42,
            "reach30d": 152340,
            "totalReach": 842100,
            "countriesCount": 8,
            "facebookLikes": 125000,
            "instagramFollowers": 89000
          },
          "content": {
            "title": "Summer Sale",
            "body": "Up to 30% off selected products.",
            "transcript": "Save 30% on every order.",
            "callToAction": "Shop now",
            "landingPageUrl": "https://example.com/products/summer-sale",
            "landingPageDomain": "example.com",
            "ctaDescription": "Free shipping on orders over $50.",
            "ctaLinkDescription": "Shop the full collection"
          },
          "metrics": {
            "reach": 152340,
            "aggregatedReach": 284100,
            "estimatedSpend": 4262,
            "duplicates": 4,
            "reachDelta1d": 1200,
            "reachDelta7d": 8200,
            "reachDelta30d": 38400
          },
          "audience": {
            "targetedCountries": [
              "US",
              "FR"
            ],
            "mainCountry": "FR",
            "gender": "all",
            "ageMin": 18,
            "ageMax": 65
          },
          "rank": {
            "positionInPage": 3,
            "currentRank": 12,
            "rankDelta": -4,
            "improvementPct": 0.25
          },
          "flags": {
            "isEuAd": true,
            "hasPartnerBadge": true
          }
        }
      ],
      "adsReturned": 20,
      "maxAdsPerBatch": 20,
      "runningCount": 1,
      "isWinner": true,
      "stats": {
        "reach": {
          "min": 1200,
          "avg": 4200,
          "max": 9800,
          "total": 16800
        },
        "daysRunning": {
          "min": 2,
          "avg": 12,
          "max": 31
        },
        "activeCount": 2,
        "totalCount": 4,
        "bestPerformerId": "facebook_123456789"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 73,
    "totalPages": 3
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.