Playbooks / Recipe

Meta Ad Library to an account list

Pull ads from the Meta Ad Library, collapse them to Pages, bridge each Page name to a real company domain, then work down to people and verified emails. The scraper bills 1 credit per result returned and bills on any 2xx. Only the finder and verifier give you a free miss.

Pattern: meta_ads_library_scraper_sync → dedupe to Pages → find_website_by_company_name → linkedin_company_search → linkedin_company_employees_search → email_finder → email_verifier

In short: A RichAPI recipe starting from the Meta Ad Library. POST https://api.richapi.ai/api/v1/meta_ads_library_scraper_sync takes meta_ad_url and a required limit (max 100) and returns ad records with fields including adArchiveID, adStatus, adText, ctaDomain, pageName, publisherPlatforms and startDate. It bills 1 credit per result returned and bills on any 2xx, including an empty result set. Records identify a Facebook or Instagram Page, not a company domain, so the Page name is bridged to a website with POST /find_website_by_company_name, which bills 1 credit per call including calls that return nothing. The chain then runs POST /linkedin_company_search and POST /linkedin_company_employees_search, both billing 0.1 credits per result, then POST /email_finder and POST /email_verifier, which are waterfall endpoints returning billed:false and costing zero on a soft miss. Meta ad activity is public advertising disclosure, not intent data; RichAPI sells no intent feed. Authentication is the x-api-key header. New accounts get 100 free credits and require no credit card.

Last updated October 8, 2026

Credit math

Worked example at stated counts: one Ad Library URL with limit 100 = 100 results at 1 = 100 credits. Those collapse to 38 Pages. 16 of them need find_website_by_company_name at 1 per call = 16 credits, charged whether or not a site comes back. linkedin_company_search, 38 queries returning 10 each = 380 results at 0.1 = 38 credits. linkedin_company_employees_search, 38 companies at 20 results = 760 results at 0.1 = 76 credits. email_finder on 90 selected people, 55 hits at 5 = 275 credits, misses free. email_verifier on 55 at 2 = 110 credits. 1 credit per result on meta_ads_library_scraper_sync, 1 credit per find_website_by_company_name call, 0.1 credits per result on linkedin_company_search and linkedin_company_employees_search, 5 credits per email_finder call, 2 credits per email_verifier call

ROI math

At 1 credit per result the scrape is cheap enough to run wide, and the expensive part moves downstream into the Page-to-company bridge, which bills per attempt and fails often. Budget for the bridge, not the scrape. Convert credits at your tier rate on /pricing.

Owned internally by

Agency new-business, or a founder doing their own prospecting with a browser tab open

Best for

Selling to brands that spend on Meta — creative studios, UGC and performance agencies, ecommerce apps, post-purchase and retention tools

  1. 01

    Sign up at app.richapi.ai and copy your key.

    100 free credits, no card.

  2. 02

    Build your Ad Library URL in the browser first, with the country and keyword filters you actually want, then paste it into meta_ad_url. Set limit deliberately — default 0, maximum 100, every result bills.

  3. 03

    Group the results by pageName and keep the earliest startDate per page.

    Ad longevity is the signal worth ranking on.

  4. 04

    Bridge each Page to a company.

    Use ctaDomain when it is a real corporate domain, and find_website_by_company_name for the rest. That call bills per attempt.

  5. 05

    Run linkedin_company_search, then linkedin_company_employees_search, then email_finder and email_verifier on the shortlist.

Pull 100 ads from this Meta Ad Library search, group them by page name,
and rank the pages by how long their oldest still-active ad has been
running. For the ten longest-running, find the company website, then get
me a verified email for the head of growth or the founder.

The Ad Library identifies a Page, not a company

This is the whole reason the recipe differs from the Google one. Google's disclosure hands you a landingDomain, which is already most of the way to a company. Meta's hands you a pageName — "Hydra Skincare", "Hydra Skin Co", "Hydra (UK)" — and a ctaDomain that is as likely to be a Shopify subdomain, a link shortener or a campaign landing page as it is the brand's actual site.

So there is a bridge step in the middle of this chain that the Google recipe does not have, and it costs money. find_website_by_company_name turns a Page name into a website at a flat rate per call, and it bills on any 2xx, including calls where the name was too generic to resolve. Check ctaDomain first and only pay for the bridge on the Pages where it is unusable.

Get 100 free credits — no card

What to rank on

The Google chain ranks advertisers by how many creatives they run. Here the field that matters is startDate, because the Ad Library shows you when each ad started and adStatus tells you whether it is still live.

An ad that has been running continuously for four months is an ad that is working, and a brand with three of those is a brand with budget and a functioning funnel. A page with thirty ads all started last Tuesday is a brand testing, or an agency spraying. Both are real signals and they lead to completely different first lines.

adText and publisherPlatforms are what make the outreach specific. You can quote the copy. You can point out they are running Reels and nothing on Stories. That is worth more than the fact of spending.

None of it is intent. It is a public advertising disclosure, dated and checkable, and we sell no intent feed.

What the Meta Ad Library costs, at stated counts

One Ad Library search URL, limit 100.

Step Count Rate Bills regardless? Credits
meta_ads_library_scraper_sync 100 results 1 / result Yes, every 2xx 100
find_website_by_company_name 16 calls 1 / call Yes 16
linkedin_company_search 38 × 10 = 380 results 0.1 / result Yes 38
linkedin_company_employees_search 38 × 20 = 760 results 0.1 / result Yes 76
email_finder 90 calls, 55 hits 5 / call No, waterfall 275
email_verifier 55 calls 2 / call No, waterfall 110

Rates used above: 1 credit per result on meta_ads_library_scraper_sync, 1 credit per find_website_by_company_name call, 0.1 credits per result on linkedin_company_search and linkedin_company_employees_search, 5 credits per email_finder call, 2 credits per email_verifier call.

At 1 credit per result the scrape is a third the price of the Google equivalent, which makes wide pulls affordable and makes the middle of the chain the place where money leaks. A hundred ads that collapse to 38 Pages is a good day; a hundred ads from one very busy advertiser collapse to three. Per-credit rates vary by tier, so convert on the pricing page.

Where the Meta Ad Library goes wrong

Page name is not company name. Brands run regional Pages, sub-brands and seasonal Pages. "Hydra Skincare UK" and "Hydra Skincare" are one account, and no deduplication rule you write will catch every variant. Eyeball the list before you spend on contacts.

ctaDomain pointing at a storefront. A Shopify or marketplace subdomain tells you the platform and not much else. Useful for qualification, useless as a corporate domain for the LinkedIn match.

Agency-run Pages. Performance agencies run ads from the client's Page, so the Page looks like the brand and the person making creative decisions sits somewhere else entirely. If you sell to brands this is fine. If you sell to agencies you are chasing the wrong end.

Politics and issue ads. The Ad Library covers those under a separate disclosure regime with different fields and a different retention window. If your keyword catches them, filter them out rather than trying to enrich them.

Small companies with no LinkedIn presence. A five-person DTC brand may have a Page, a store and no company LinkedIn page worth searching. The chain dead-ends after the bridge and you have paid for the bridge. This is the most common way this recipe underperforms against the Google one, whose advertisers skew larger and better documented.

When to run the Meta Ad Library instead

If your buyers spend on search rather than social, the Google chain starts from a landing domain and skips the bridge entirely — see Google Ads Transparency to outbound. To size a brand before you spend on its contacts, Similarweb traffic qualification is a 2-credit filter per domain. For local businesses rather than online brands, maps local lead to CRM is the better shape, and signal-based prospecting covers the pattern in general. Endpoint detail for the last two steps sits on the email verifier page, pricing on the pricing page, and the rest on the use-case index.

The Meta Ad Library FAQ

Do I have to build the Ad Library URL by hand?
Yes, and that is the fastest way to work. Filter in the browser until the results look right, then pass that URL straight to meta_ad_url.

What does limit do to my bill?
It sets how many results you pay for. The default is 0 and the maximum is 100, and there is no preview. On a new keyword, start at 10.

Can I tell how much a brand is spending?
Not from this. You get the ads, their status, their start dates and their platforms. Spend is not disclosed outside the political and issue-ad regime, and anybody quoting you a number for a commercial advertiser is estimating.

What is free if the chain misses?
Only email_finder and email_verifier. Their soft misses return billed: false and cost zero. The scraper, the website bridge and both LinkedIn searches bill on any 2xx.

Do I need a credit card?
No. 100 free credits on signup.

Try the Meta Ad Library: 100 free credits, no card

Pull ten ads from a keyword you already know well and see how many distinct Pages come back. That ratio decides whether the rest is worth automating. Get 100 free credits

FAQ

Frequently asked

Yes, and that is the fastest way to work. Filter in the browser until the results look right, then pass that URL straight to `meta_ad_url`.
It sets how many results you pay for. The default is 0 and the maximum is 100, and there is no preview. On a new keyword, start at 10.
Not from this. You get the ads, their status, their start dates and their platforms. Spend is not disclosed outside the political and issue-ad regime, and anybody quoting you a number for a commercial advertiser is estimating.
Only `email_finder` and `email_verifier`. Their soft misses return `billed: false` and cost zero. The scraper, the website bridge and both LinkedIn searches bill on any 2xx.
No. 100 free credits on signup.

More playbooks

Related playbooks

n8n: Enrich Over HTTP, Then Push to HubSpot With n8n's Own NodeAn n8n workflow with two owners: the enrichment half is an HTTP Request node hitting RichAPI, and the HubSpot half is n8n's built-in HubSpot node. We have no HubSpot app, so nothing in this workflow writes to your CRM except n8n itself. Costs are scoped per endpoint: email_finder and email_verifier are waterfall and do not bill on a miss, everything else bills on any 2xx.People Search to Email Waterfall: One Billing Model Per LegSearch builds the list; the finder and verifier resolve it. The search leg bills per result whether or not you end up using the row, while the other two are waterfall endpoints and cost zero on a miss. Three calls, two billing models, and the search leg is the one that charges you for rows you throw away.One key per client: what that buys an agency, and what it does notIssue a named API key per client, revoke any one of them without touching the others, and read usage attributed per key with a CSV export. What does not exist: per-client credit budgets, billed sub-accounts, and per-key spend caps. All credits come from one team balance, so a runaway job on one client's key spends the whole agency's credits. Budget enforcement lives in your scheduler, not in ours.Phone Append After an Email Hit: The 25-Credit Call That's Free When It MissesFind the email first, then append a phone number only to the rows that resolved. Both legs are waterfall endpoints, so both return `billed: false` and cost zero when sources find nothing. At 25 credits, the phone call is the most expensive in the catalog, which is exactly why the miss-free rule carries most of the value here.