Facebook Ad Library Scraper avatar

Facebook Ad Library Scraper

Pricing

$1.00 / 1,000 ad collecteds

Go to Apify Store
Facebook Ad Library Scraper

Facebook Ad Library Scraper

See the ads any brand or keyword is running on Facebook and Instagram right now: ad wording, headline, button, landing link, format, placements and run dates. Move the start-date limit backwards to reach older ads. No account and no login needed.

Pricing

$1.00 / 1,000 ad collecteds

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Share

See what a brand is advertising right now. Give this actor a brand name, a product, a slogan or any keyword, and it returns the ads Facebook lists publicly for that search — the ad wording, the headline, the button, the landing link, the format, where each ad runs and when it started. No account, no login and no personal details are needed; it reads only what Facebook already shows to everyone.

What you can do with it

  • Watch a competitor's live creative. Pull the ads a rival is running today, and re-run it weekly to see what changed.
  • Build a swipe file. Collect winning ad wording, headlines and buttons across a whole category in one run.
  • Find the landing pages behind the ads. Every ad brings its destination link, so you can see which offers and pages a brand is pushing.
  • Spot new campaigns early. Ads that started in the last few days show up with their start date attached.
  • Compare formats and placements. See at a glance who is running video, who is running carousels, and which of Facebook, Instagram, Messenger and Audience Network each ad is booked on.
  • Feed a dashboard. Schedule it and append every run to the same dataset for a rolling record of a category's advertising.

What you get

One row per ad:

{
"searchTerm": "nike",
"country": "US",
"adArchiveId": "1869276447125570",
"pageId": "15087023444",
"pageName": "Nike",
"pageUrl": "https://www.facebook.com/nike/",
"pageCategories": ["Sportswear"],
"pageLikes": 39578020,
"bodyText": "Gear up for the season with the latest from Nike.",
"title": "Nike: Shoes, Apparel, Stories",
"ctaType": "INSTALL_MOBILE_APP",
"ctaText": "Install now",
"linkUrl": "http://itunes.apple.com/app/id1095459556",
"linkDescription": null,
"displayFormat": "DPA",
"publisherPlatforms": ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK", "MESSENGER"],
"startDate": "2026-03-17T07:00:00.000Z",
"endDate": "2026-08-01T07:00:00.000Z",
"isActive": true,
"variantCount": null,
"mediaUrls": ["https://scontent.xx.fbcdn.net/v/t39.35426-6/..."],
"carouselCards": [
{
"title": "Nike",
"bodyText": "Celebrate your birthday with Nike.",
"caption": null,
"linkUrl": "https://www.nike.com/",
"linkDescription": null,
"ctaText": "Install now",
"ctaType": "INSTALL_MOBILE_APP",
"imageUrl": "https://scontent.xx.fbcdn.net/v/t39.35426-6/...",
"videoUrl": null
}
],
"availability": "OK",
"sourceUrl": "https://www.facebook.com/ads/library/?id=1869276447125570",
"scrapedAt": "2026-08-01T12:00:00.000Z"
}

Input reference

FieldTypeDefaultDescription
searchTermslist of text["nike"]Brands, products, slogans or keywords. Each one is searched separately. Required.
countryselectUSBrowse from this country. Facebook shows a different set of ads in each country, so this changes the results as well as the point of view. All countries is supported.
adTypeselectallAll ads, or narrow the results to Political and issue ads only.
activeStatusselectallKeep ads that are still running, ads that have stopped, or both.
startDateMaxtextemptyOptional calendar date, YYYY-MM-DD. Returns ads that started on or before it. This is how you reach an older set of ads — see the limits below.
maxAdsPerTerminteger30How many ads to keep per search term, up to 30.

Output fields

FieldTypeDescription
searchTermtextThe term this ad was found under.
countrytextThe country the search was run for.
adArchiveIdtextFacebook's own identifier for the ad. Unique per row.
pageIdtextNumeric identifier of the advertising Page.
pageNametextThe advertiser's name as shown on the ad.
pageUrltextLink to the advertiser's Page.
pageCategorieslistCategories the advertiser lists for itself.
pageLikesnumberLikes on the advertising Page.
bodyTexttextThe main ad copy.
titletextThe ad headline, when there is one.
ctaTypetextThe kind of action button, e.g. SHOP_NOW.
ctaTexttextThe wording printed on the button, always reported in English so the same button reads the same way in every country.
linkUrltextWhere the ad sends people.
linkDescriptiontextThe small print under the headline, when present.
displayFormattextVIDEO, IMAGE, MULTI_IMAGES, DPA and similar.
publisherPlatformslistWhere the ad runs: Facebook, Instagram, Messenger, Audience Network, Threads, WhatsApp.
startDatedateWhen the ad started running.
endDatedateWhen it stopped, or is scheduled to stop.
isActivebooleanWhether it was still running when collected.
variantCountnumberHow many near-identical versions of this ad Facebook grouped together.
mediaUrlslistImage and video links for the creative.
carouselCardslistFor carousel ads, each card with its own headline, text, button and link.
availabilitytextOK for every row produced.
sourceUrltextThe public Facebook page for this exact ad.
scrapedAtdateWhen the row was collected.

Pricing

You pay per result. Every ad added to your dataset costs $0.0010, which works out at $1.00 per 1,000 ads. Nothing else is charged, and a search that finds no ads costs you nothing.

A worked example: ten search terms, each returning Facebook's full set of about 30 ads, is roughly 300 ads — about $0.30 for the run.

Limits & what this actor cannot do

  • A public ad search returns about 30 ads, and that set cannot be extended. This is a limit Facebook places on public ad searching, not a setting. Asking for more than 30 per term is not possible.
  • To reach beyond those 30, move the Started on or before date backwards. Each date reaches a different set of about 30. Sweeping the date backwards over several runs is the only way to build a deeper picture, and even then it is a sample rather than a complete history.
  • The further back you go, the fewer ordinary ads come back. Facebook keeps ordinary ads publicly listed around the time they run, while political and issue ads stay listed for years.
  • Spending and impression figures are not published for ordinary advertising. Facebook publishes those only for political and issue ads, so this actor does not carry them at all — the Facebook Political Ads Scraper is the one that reports them.
  • There is no breakdown of who saw an ad. Facebook publishes no split by age, gender or region for any ad, so none is reported.
  • Button wording comes back in English, whichever country you search. The standard Facebook buttons (Shop now, Learn more, Sign up) are reported in one language on purpose, so a French run and a US run describe the same ad the same way and the column can be grouped and counted. The advertiser's own copy — the ad text, headline and card wording — is untouched and stays in whatever language it was written in.
  • A search term that the source turns away is tried once more before it is given up on, and any term that still fails is reported in the run log rather than passed off as a search with no ads.
  • The same ad often appears under more than one search term. Each ad is produced once per run, and you are never charged twice for it.
  • Narrowing the run status can leave you with fewer than 30 ads, because the filter is applied to the set Facebook returns.
  • Image and video links published by Facebook are temporary and stop working after a while. Download anything you want to keep.
  • Speed depends on the size of the job and on the source site's own response times, so no fixed throughput is promised.
  • Facebook's terms prohibit automated access, and advertising data can include personal data. You are responsible for using the results lawfully, in line with the source site's terms and with applicable privacy law.

FAQ

Do I need a Facebook account? No. The actor reads only what Facebook publishes to everyone.

Does it need my login or personal details? No. There is nothing to connect and nothing to sign in to.

Can I schedule it? Yes. Schedule it daily or weekly and append every run to the same dataset to track how a brand's creative changes over time.

Is the data complete? No, and no tool can make it so. Facebook publishes about 30 ads for any one public ad search. You can reach further back with the Started on or before date, but you should treat the results as a strong sample of what an advertiser is running, not as their entire history.

Why is there no spending or impressions column? Because Facebook does not publish those figures for ordinary advertising — they exist only for political and issue ads. Shipping permanently blank columns would look like a collection failure, so they are left out. Use the Facebook Political Ads Scraper when you need them.

How do I get more ads for one brand? Use several related terms — the brand name, its product lines, its slogans — and run the same terms again with earlier Started on or before dates. Each combination reaches a different set.

Why did a search return nothing? Either nobody is running ads matching that term in the chosen country, or the term is too narrow. Try a broader keyword, or switch the country to All countries.