Tools / Ad libraries / Scraper
A homemade Ad Library scraper breaks when the page changes and gets blocked when it runs too often. ads.search does the same job as one call: name the advertiser, and it returns the ads as records with headline, body text and start date. Providers handle the browser and the proxies, and fall back if one fails.
Ask your agent
Scrape Brooklinen's ads from the Facebook ads library and list each distinct message with when it started.
Connect RouterGrowth once, then ask in plain words. New workspaces start with $1 of credit. Get a key or read the setup guide.
A real run
One call to ads.search (competitor ad creatives), run through RouterGrowth on October 19, 2026. These are the first rows it returned; fields that name a person are masked.
| advertiser | headline | text | started |
|---|---|---|---|
| Brooklinen | IYKYK: Brooklinen = BEST. SHEETS. EVER. | When you spot a Brooklinen tote in the wild, you know that person has the best in bed. Shop our Classic Percale and Luxe Sheets and you’ll… | 2026-09-10 |
| Brooklinen | When Was the Last Time You Changed Your Sheets? | When we call Luxe our softest sheets yet, it’s not just us saying it. It’s everyone. Silky-smooth, buttery soft, and hotel-quality without… | 2026-08-28 |
Five ads for a bedding brand: the rows show two of its running messages, a social proof line and a softness claim, started weeks apart.
Step by step
Add the MCP server to Claude, ChatGPT, Claude Code, Codex or Cursor, or call the REST API with your RouterGrowth key.
Give the brand name as it appears on its Facebook page.
ads.search returns headline, text and start date per ad. Duplicates of the same creative can appear when it runs in several versions.
Ask the agent to dedupe, list the claims and offers, and note which ads have run longest.
Price
List prices on Meta Ad Library, read from the catalog when this page was built. The exact figure is quoted before every run, and a monthly plan lowers it.
In practice
You describe the job; the agent picks the calls, shows the price and runs them.
Scrape Brooklinen's ads from the Facebook ads library and list each distinct message with when it started.
Pull the Meta ads of our three main competitors and compare their offers in a table.
Get this brand's Facebook ads, then check which keywords it ranks for in Google search for the same products.
Connect
One MCP server for Claude, ChatGPT, Claude Code, Codex and Cursor, or the same call over the CLI and REST with the input above.
claude mcp add --transport http routergrowth https://api.routergrowth.com/mcp
npm install -g routergrowth && routergrowth setup
routergrowth run -c ads.search -i '{"query": "Brooklinen", "platform": "meta", "limit": 5}'curl -X POST https://api.routergrowth.com/v1/run \
-H "Authorization: Bearer $ROUTERGROWTH_API_KEY" \
-d '{"capability": "ads.search", "input": {"query": "Brooklinen", "platform": "meta", "limit": 5}}'Worth knowing
There is no browser, proxy pool or selector file on your side. If a provider fails, the router tries the next.
Catalog ads may carry a placeholder headline such as {{product.name}}, as in the raw output. That is how the library stores them.
Each search is one charge, and an empty result is not billed.
FAQ
No blocking reaches you: the providers handle access to the library.
It returns the ads the library shows for the query, up to your limit, with start dates.
Records come back as JSON to your agent, which can write a CSV or a sheet from them.
Yes, ads.search also reads the Google Ads Transparency Center when you pass platform google and an advertiser domain.
More on Ad libraries
Reading this as an agent? This page as markdown: /tools/ad-library/facebook-ads-library-scraper.md
Connect your agent once. The first calls run on the $1 that comes with signup.