The single most valuable ad in any competitor's Meta library is the one that's been running the longest. Not the newest. Not the flashiest. The oldest one still live. Here's the problem: the Meta Ad Library gives you no way to find it. There's no "sort by run time" button, no longevity column, no filter for "ads live 100+ days." So the one ad you most want to study is the one Meta makes hardest to surface.
This is a tutorial for doing it anyway — first the painful manual way, then the 30-second way with a longest running Meta ads tool.
Why the longest-running ad is the one to study
A brand running paid Meta ads is watching a dashboard you can't see — CTR, CPA, ROAS, all the metrics that live inside their ad account. When an ad loses money, they kill it. When it makes money, they leave it on. That's the whole logic.
So how long an ad has been live is a performance proxy you can verify from the outside. An ad that's been running for 4 months survived four months of someone with budget on the line deciding, repeatedly, not to turn it off. That's the closest thing to a verified winner you can get without access to their account.
Compare that to what most people study: the newest, most polished creative in the library. That ad might get killed next Tuesday. You have no idea if it works. The longest-runner has already passed the only test that matters — it kept its slot.
| What you're tempted to study | What you should study |
|---|---|
| Newest, slickest creative | Oldest ad still live |
| Most ads in a campaign | The one ad that outlasted the rest |
| Highest production value | Highest days-running |
| What looks good to you | What survived the brand's own kill switch |
One honest caveat: days-running is a strong signal, not a metric. The Ad Library never exposes a competitor's CTR, CPC, or ROAS — those live only inside the advertiser's account, and any tool that shows you a competitor's exact ROAS invented the number. Longevity is the proxy you can verify. Read it that way.
The manual way (and why it hurts)
Let's actually try to find a brand's longest-running ad in the Meta Ad Library by hand. Say you want Hims.
- Go to the Ad Library, set the country, choose "All ads," search "Hims."
- Scroll. The results load in a roughly reverse-chronological-ish, semi-random order — not sorted by run time.
- Open each ad card. Find the "Started running on" date buried in the detail panel.
- Do mental math against today's date to get days-running.
- Write it down.
- Repeat for every ad in the library. For an active DTC brand that's 80–300 ads.
- Sort your list by hand to find the max.
Here's where it gets worse:
- No history. The Ad Library shows a start date but no run-time history. If an ad paused and restarted, you can't tell. Meta's API returns no historical snapshots at all — so you can't even script around the UI cleanly.
- The card order fights you. There's no sort control. The longest-runner could be on screen 1 or screen 14; you won't know until you've opened all of them.
- It's a one-time photo. Do this today and the answer is stale next week. To track which ad is the current champion, you'd have to redo the whole crawl on a schedule.
A motivated person can do one brand in maybe 20–40 minutes. Three competitors is your afternoon. That's the pain. Now the fix.
The 30-second way: just ask
AdWhispr ingests a brand's entire Meta ad library, then snapshots it daily — so it knows not just each ad's start date but its run-time history over time. Meta's API returns no history; that history is the product. Finding the longest-runner stops being a crawl and becomes a question.
Paste a competitor's Facebook URL once to add them, then ask in plain language:
"What's Hims' longest-running ad right now?"
You get the single oldest-still-live ad, its days-running count, and the creative itself. Thirty seconds, no scrolling, no date math.
Better, you can ask the follow-ups the Ad Library can't answer at all:
"Show me every Hims ad that's been live over 90 days, sorted by days-running."
"Which of Roman's ads have been running longest, and what hook and format do they share?"
"Has Hims' longest-running ad changed since last month?"
That last one only works because of the daily snapshots — you're asking about change over time, which is invisible in a single Ad Library visit.
Read the distribution, not just the max
A pro move: don't stop at the #1 longest-runner. Ask for the shape of the run-times.
"Give me the run-time distribution for CalAI's library — how many ads are under 30 days, 30–90, and 90+?"
If a brand has fifteen ads over 90 days, they've found a durable formula and you should reverse-engineer the pattern those winners share. If their oldest ad is 22 days and everything else is newer, they're still testing and haven't found a winner yet — which tells you something useful too. The max is a data point; the distribution is the strategy.
Doing it inside Claude (the MCP way)
If you live in Claude, you don't need to open AdWhispr at all. Connect the MCP server and ask from your normal chat.
Two ways to connect:
- OAuth: add
https://adwhispr.com/api/mcpas a connector in Claude.ai. - CLI: run
npx adwhispr-mcp-server config(the npm package is unscoped —adwhispr-mcp-server).
Now the longest-runner lookup is a tool call. Under the hood Claude uses get_brand_ads and get_brand_stats to pull the library and its days-running data, so you can say:
"Use AdWhispr to find Gymshark's longest-running ad and tell me what makes it work."
Claude returns the winner with its run-time, then reasons about the hook and format in the same breath. From there, natural next steps:
compare_brands— "Whose longest-runner has been live longer, Hims or Roman?"clone_ad— "Clone Gymshark's longest-running ad in my brand voice." (Image winners become a new generated image; video winners become a scene-by-scene script + shot list. Always original copy, always grounded in and citing the real winner.)generate_brief— "Build a competitive brief on Gymshark." The brief leads with the derived-intelligence panel — the longevity curve up front — before any qualitative take, and exports as PDF or Markdown.
Put it to work
The workflow is short: add the brand, ask for the longest-runner, then ask what its winners have in common. You've gone from "I think this competitor's strategy is X" to "their proven winner has run 140 days and it's a problem-agitate UGC hook" — grounded in a signal you can actually verify, not a vanity metric someone made up.
The Ad Library will never add a sort-by-run-time button. You don't need it to. For more tutorials like this, browse the AdWhispr blog, or add your first competitor at adwhispr.com and ask the question yourself.
Stop scrolling the Ad Library — ask AdWhispr which ad already won.