Facebook Ad Library Scraper
Search Meta's public Ad Library, discover advertisers, inspect individual public ads, and transcribe public video creatives without login.
Workspace
Configure
Inputs stay here while results become exportable artifacts.
Start from an example
Results
Preview, inspect, copy, or export the complete output.
Your result will become an artifact
Run the tool to inspect structured rows, raw JSON, execution details, and downloadable JSON, CSV, and Markdown files.
Overview
Facebook Ad Library Scraper reads Meta's official public Ad Library without a Facebook account. It returns stable library IDs, activity state, start dates, advertiser page IDs and names, visible ad copy, destinations, and public creative assets when Meta exposes them.
Last validated: Jul 15, 2026
Input
idstringMeta Ad Library ID.
urlstringMeta Ad Library URL containing an id query parameter.
mode"search_ads" | "company_ads" | "search_companies" | "ad" | "ad_transcript"requiredSearch ads, list company ads, discover companies, inspect one ad, or transcribe one public video ad.
querystringKeyword or advertiser search query.
status"ALL" | "ACTIVE" | "INACTIVE"default: "ACTIVE"Ad activity filter.
countrystringdefault: "ALL"ALL or a 2-letter country code.
page_idstringMeta advertiser page ID.
languagestringOptional spoken-language hint for ad_transcript mode; omit for detection.
media_type"ALL" | "IMAGE" | "VIDEO" | "MEME" | "IMAGE_AND_MEME" | "NONE"default: "ALL"Media filter.
max_resultsintegerdefault: 10Maximum records to return.
search_type"keyword_unordered" | "keyword_exact_phrase"default: "keyword_unordered"Keyword matching mode.
max_body_charsintegerdefault: 3000Maximum visible ad-copy characters per result.
Output
adobjectResolved individual ad.
ad.urlstringPublic Ad Library URL.
ad.bodystringVisible ad copy.
ad.page_idstringLinked advertiser page ID.
ad.page_urlstringPublic advertiser page URL.
ad.is_activebooleanVisible activity state.
ad.page_namestringAdvertiser page name.
ad.page_handlestringPublic advertiser handle when Meta links by handle instead of numeric ID.
ad.ad_archive_idstringStable Meta Library ID.
ad.body_truncatedbooleanTrue when visible ad copy exceeded max_body_chars.
ad.page_image_urlstringPublic advertiser image.
ad.destination_urlstringVisible off-Facebook destination URL.
ad.started_runningstringVisible start-date label.
ad.creative_image_urlstringPublic creative image.
ad.creative_video_urlstringPublic video creative rendition when Meta exposes one.
adsobject[]requiredPublic Meta ad cards.
modestringrequiredResolved operation.
countintegerrequiredPrimary record count.
companiesobject[]requiredUnique advertisers found in the returned ads.
source_urlstringrequiredFetched Meta Ad Library URL.
transcriptobjectSpeech transcript generated from the public video creative.
transcript.textstringNormalized spoken text.
transcript.languagestringDetected or requested language code.
transcript.duration_secondsnumberMedia duration in seconds.
transcript.language_probabilitynumberLanguage-detection confidence when available.
total_matchesintegerVisible total result count when exact.
transcript_segmentsobject[]Timed transcript segments.
Examples
search-ads
{
"mode": "search_ads",
"query": "Cholesterol Relief Community",
"country": "IN",
"max_results": 5
}search-companies
{
"mode": "search_companies",
"query": "Cholesterol Relief Community",
"country": "IN",
"max_results": 5
}company-ads
{
"mode": "company_ads",
"status": "ALL",
"country": "ALL",
"page_id": "866655706540346",
"max_results": 5
}ad-details
{
"id": "866569929827744",
"mode": "ad",
"query": "Cholesterol Relief Community",
"country": "IN"
}video-ad-transcript
{
"id": "866569929827744",
"mode": "ad_transcript",
"query": "Cholesterol Relief Community",
"country": "IN",
"language": "en"
}Use cases
FAQ
Does this require Facebook login?
No. It reads only data exposed by Meta's official public Ad Library without login.
Is every Facebook ad included?
No. Coverage follows Meta's public library, selected country, status, and media filters.
Does advertiser search return page IDs?
It returns Meta's numeric page ID when the public link exposes one; otherwise it returns the advertiser's public Facebook handle and page URL.
Use it anywhere
MCP (Claude, ChatGPT, Codex)
# After connecting https://betterfetch.co/api/mcp, ask your AI to:
1. Call search_tools for "Facebook Ad Library Scraper"
2. Call run_tool with:
name: "facebook_ad_library_scraper"
input: {"mode":"search_ads","query":"Cholesterol Relief Community","country":"IN","max_results":5}REST
curl -sS -X POST "https://betterfetch.co/api/tools/facebook_ad_library_scraper/run" \
-H "Authorization: Bearer bf_your_key_here" \
-H "Content-Type: application/json" \
-d '{"input": {"mode":"search_ads","query":"Cholesterol Relief Community","country":"IN","max_results":5}}'Run locally
git clone https://github.com/better-fetch/tools/tree/main/tools/facebook-ad-library-scraper && cd facebook-ad-library-scraper && npm i
BETTER_FETCH_API_KEY=bf_your_key_here npx bf-tool run --input '{"mode":"search_ads","query":"Cholesterol Relief Community","country":"IN","max_results":5}'