Use case
Competitor ad tracking your agents can act on
Every active ad your competitors run, pulled daily from the Meta and Google ad libraries, delivered as data instead of screenshots.
The short answer
Waldo tracks competitor ads by scanning the Meta and Google ad libraries daily for every brand you activate. One API call returns the active set with creative, copy, and days live; analysis endpoints cluster the angles and flag fatigue. Your agents read the same feed over MCP and turn it into briefs and alerts.
The job to be done
Knowing what competitors are running should not be a quarterly deck. Creative teams need the current angle landscape before a brief, media teams need to catch a new campaign the week it launches, and account teams need to walk into a client meeting knowing the set has changed. Doing this by hand means ad library screenshots, and doing it with a listening dashboard means organic mentions with the paid picture missing.
The job is simple to state: keep a complete, current picture of every ad each competitor has live, know how long each one has been running, and understand which angles the set leans on, without a person doing the collecting.
How Waldo does it
Pull the active set
GET /brands/{id}/ads/active returns every ad a tracked brand currently runs, with creative, copy, and days live. The Build page shows a real pull of this endpoint: a single brand on Meta with 14,793 ads in the set.
Cluster the angles
The category angle library endpoint returns a versioned taxonomy of every hook in the competitive set, with example creative attached and ready to drop into a brief.
Flag fatigue
Days-live metadata makes tired creative visible. A weekly scan flags which ads have been running long enough to go stale, before click-through craters.
Diff and alert
Hit the API on a schedule with the since parameter, diff against the last run, and push only the deltas to Slack, a database, or a webhook: new creatives, changed offers, retired ads.
The endpoints
/brands/{id}/ads/activeThe current ad set for a tracked brand, refreshed daily/brands/{id}/ads/active?since=Only what changed since your last pull, built for cron and diff jobs/category/{id}/angle-libraryA versioned taxonomy of hooks across the competitive setMCP: discover_adsThe same feed inside Claude or ChatGPT for interactive diggingQuestions teams ask
Which ad platforms are covered?
Tracked brands get daily scans of the Meta and Google ad libraries. Enrichment and Discover endpoints hit the underlying platforms live at request time for one-off research beyond the tracked set.
How fresh is the data?
Paid media for tracked brands refreshes on a 24-hour cycle, alongside owned media, mentions, and website snapshots. Discover and enrichment endpoints are real-time because they query the platforms at request time.
Can it watch landing pages too?
Yes. Waldo snapshots brand landing pages and flags changes, so you catch the offer swap behind the ad, like a discount changing to free shipping, not just the creative.
Keep reading
Put Waldo behind your agents
Brand, category, and audience intelligence over 200+ API and MCP endpoints. Sign up, mint a key, and run it against the brands you actually track.