PeekPanda markpeekpandaDocumentationFor AI ↗Open app

PeekPanda docs

Paid ads library

Search stored Meta and TikTok ad-library observations, matched to the app they advertise, and read how long each ad has run.

Download Markdown ↓

Paid Ads in the sidebar opens /viral-library?source=paid. It is a searchable set of ads observed in the Meta and TikTok public ad libraries, with the creative itself, the copy, and the app or site each ad points at.

Reading this library never fetches new ads. You are searching what has already been collected.

What is in it

An ad appears here once two things are true: its creative media has been mirrored to our own storage, and its text has been indexed for search. An ad that has been seen but not mirrored is not in the list, which is why the empty state says No indexed and mirrored paid ads are available yet rather than claiming none exist.

Ads carry no spend figure. There is no spend field anywhere in the data.

Searching

The search box reads the indexed text of each ad. That index covers:

  • The advertiser name.
  • The creative's hook, body, title, description and call to action.
  • The linked product's name and its domain.
  • Every card of a carousel, including each card's own title, body, description and call to action.

Typing pauses briefly before the search runs, so you are not firing a query per keystroke.

Alongside it, three filters narrow the list:

FilterValues
PlatformMeta, TikTok
StatusActive, Inactive, Unknown
FormatImage, Video, Carousel, Dynamic

Active filters appear as chips under the bar. Click a chip to drop that one filter, or Clear all to drop them together.

Sort offers three orders:

  • Newest found. By when the ad was first collected. This is the default.
  • Newest started. By the ad's observed start date. Ads with no observed start sort last.
  • Highest reach. By reported reach, where a reported reach exists.

The line under the bar states what you are looking at: how many ads match, and how many of those carry a reported reach figure.

Results arrive 18 at a time. Load more follows a cursor and appends the next page.

How an ad is matched to an app

Each ad carries a product link resolved when it was collected. When that link resolves to an App Store listing the catalogue already holds, the card leads with the app's name and shows its store icon. Otherwise the card leads with the linked product name, or falls back to the advertiser's name.

That link is what connects the two halves of PeekPanda. On an app's case file, the Paid ads tab lists the ads whose link resolves to that App Store identity, and the overview shows the four most recent as a preview. When nothing matches, the tab says so: Nothing in the collected ad library links to this App Store identity. That is an absence of a match, not a claim that the app runs no ads.

What "days running" tells you

The subline under each ad's name is a duration, counted from dates the ad library itself disclosed.

SublineWhat it means
Active for 46 days · MetaThe ad is observed active. 46 whole days have passed since its disclosed start date.
Ran 12 days · TikTokThe ad is no longer active. It ran 12 whole days between its disclosed start and end dates.
Meta aloneNo start date was disclosed, so no duration can be counted.

Three things follow from that.

It counts calendar days, not delivery. A long run says the advertiser kept the ad live. It does not say the ad was spending every one of those days, and it carries no budget.

Active is an observed status, not a live check. It is what the ad library reported when the ad was last collected. A long running active ad is the strongest signal here, because advertisers usually stop ads that are not working, but it stays a signal rather than a measurement.

No start date means no duration, not a short run. The card shows the platform alone rather than a zero.

The card also shows a Started fact with the disclosed start date. When no start date exists, that fact becomes Seen with the date the ad was first collected instead, so the date on the card is always one we can source.

Reported reach

Some ads carry a reported reach figure and most do not. Reach here is a regulatory disclosure made by the platform for the EU or the UK. It is not a metric we measured, and it is not impressions or spend.

When a figure exists, it shows as a chip in the corner of the creative, for example EU · 265.5K reach, and as a fact on the card. When none exists, the card says Reach unavailable with a dash. The dash means nothing was disclosed, not zero.

Opening one ad

Click a card, or See details →, to open the inspector. It prints the ad's copy as separate fields, so you can read a hook without the rest of the body around it:

  • Hook, Body, Title, Description, CTA. Fields the ad does not carry are left out rather than printed empty.
  • The reach line, or Reach unavailable.
  • Save or Remove, covered in Saving creatives.
  • A link to the product the ad points at.
  • Open archive, which opens the ad's original entry in the platform's own ad library.

The inspector also has two on-demand evidence tabs:

  • Transcript generates and stores a transcript for a mirrored video. Image-only ads explain why a transcript is unavailable.
  • AI analysis summarizes the hook, visible text, editing pattern and reusable ingredients.

Existing results are read from the stored ad detail, so reopening an ad does not generate another result. Both actions require an active Peak or Panda plan; when a plan is missing, the inspector links to the plans page. A temporary provider failure or an in-progress request keeps the result unwritten and offers a safe retry.