Page or keyword
A Page search lists one advertiser's active ads. A keyword search finds ads on a topic from every advertiser, the most-seen first. If a Page has no Ads Library ID, it isn't running ads we can see.
See the ads a Facebook Page is running right now, or search ads by keyword, in any country, from Meta's Ad Library. Then see the API call that returns the same data.
facebook.com/nike (the username alone works too). Or choose Keyword and type what the ads are about, for example running shoes.A Page search lists one advertiser's active ads. A keyword search finds ads on a topic from every advertiser, the most-seen first. If a Page has no Ads Library ID, it isn't running ads we can see.
The Ads Library covers every Meta placement, so Instagram ads are included: each ad says whether it runs on Facebook, Instagram, Messenger or the Audience Network.
Meta publishes spend and reach only for political and social-issue ads and for ads shown in the EU. For other ads these numbers aren't public, so the checker doesn't show them.
Meta's official Ad Library API needs identity confirmation and a developer app, and it covers ads about social issues, elections or politics, plus ads shown in the EU. This checker, and the SocialAPIs API behind it, return what the public Ads Library website shows for any advertiser, with one API key. To get told when a competitor launches a new ad, read our guide to the Facebook Ads Library API (Python script and n8n workflow).
Every check is a call to the SocialAPIs REST API: 1 credit per keyword search; 2 for a Page (one to find its ads ID, one to search). Use the same calls to watch competitors every day, feed a dashboard or a sheet, from any language or from n8n, Make and Zapier.
GET /facebook/ads/search with activeStatus=Active · 1 credit per search · your key goes in the x-api-token header, never in the URL.
curl -G "https://api.socialapis.io/facebook/ads/search" \ -H "x-api-token: $SOCIALAPIS_API_KEY" \ --data-urlencode "query=running shoes" \ --data-urlencode "country=US" \ --data-urlencode "activeStatus=Active" \ --data-urlencode "sort_data=impressions"import os import requests HEADERS = {"x-api-token": os.environ["SOCIALAPIS_API_KEY"]} response = requests.get( "https://api.socialapis.io/facebook/ads/search", headers=HEADERS, params={ "query": "running shoes", "country": "US", "activeStatus": "Active", "sort_data": "impressions", }, timeout=100,)response.raise_for_status()groups = response.json()["data"]["ads"]ads = [group[0] for group in groups if group] # one ad per group of near-identical copiesfor ad in ads: print(ad["page_name"], f"https://www.facebook.com/ads/library/?id={ad['ad_archive_id']}")Set SOCIALAPIS_API_KEY to your key first (export SOCIALAPIS_API_KEY=…). Next page of results: pass end_cursor from data.page_info.
GET /facebook/pages/details for the Page's ad_page_id, then GET /facebook/ads/search with activeStatus=Active · 2 credits (one to find its ads ID, one to search) · your key goes in the x-api-token header, never in the URL.
# Step 1: the Page's ad_page_idcurl -G "https://api.socialapis.io/facebook/pages/details" \ -H "x-api-token: $SOCIALAPIS_API_KEY" \ --data-urlencode "link=https://www.facebook.com/nike" # Step 2: its active adscurl -G "https://api.socialapis.io/facebook/ads/search" \ -H "x-api-token: $SOCIALAPIS_API_KEY" \ --data-urlencode "ad_page_id=$AD_PAGE_ID" \ --data-urlencode "country=ALL" \ --data-urlencode "activeStatus=Active"import os import requests HEADERS = {"x-api-token": os.environ["SOCIALAPIS_API_KEY"]} page = requests.get( "https://api.socialapis.io/facebook/pages/details", headers=HEADERS, params={"link": "https://www.facebook.com/nike"}, timeout=100,)page.raise_for_status()record = page.json().get("data", page.json())record = record[0] if isinstance(record, list) else record.get("0", record)ad_page_id = record.get("ad_page_id") # None: the Page isn't running ads we can see response = requests.get( "https://api.socialapis.io/facebook/ads/search", headers=HEADERS, params={ "ad_page_id": ad_page_id, "country": "ALL", "activeStatus": "Active", }, timeout=100,)response.raise_for_status()groups = response.json()["data"]["ads"]ads = [group[0] for group in groups if group] # one ad per group of near-identical copiesfor ad in ads: print(ad["page_name"], f"https://www.facebook.com/ads/library/?id={ad['ad_archive_id']}")Set SOCIALAPIS_API_KEY to your key first (export SOCIALAPIS_API_KEY=…). In curl, put the ad_page_id from step 1 in AD_PAGE_ID. Next page of results: pass end_cursor from data.page_info.
The active ads in Meta's Ad Library for a Facebook Page or a keyword, in the country you pick: for each ad the advertiser, the headline, the ad text, the call to action, where it runs (Facebook, Instagram, Messenger, Audience Network), the date it started, a thumbnail and a link to the ad in the Ads Library. It also says how many ads it shows and whether more exist.
Search by Page to see what one advertiser is running: paste its Facebook Page URL or username (for example facebook.com/nike). Search by keyword to see who advertises on a topic (for example "running shoes"); keyword results are sorted by impressions, so the most-seen ads come first.
Pick one country from the list, or All countries. Meta shows different ads in different countries, so a brand can run ads in Germany and none in the US. A Page search defaults to All countries, a keyword search to the United States.
Meta only publishes spend, impressions and reach for ads about social issues, elections or politics, and for ads shown in the EU. For ordinary commercial ads elsewhere these numbers aren't public, so no tool can give you a competitor's real budget.
Yes. The Ads Library covers every Meta placement, so each ad lists where it runs: Facebook, Instagram, Messenger, Audience Network. An ad that only runs on Instagram is still listed under the advertiser's Facebook Page.
Use the API: call GET /facebook/ads/search once a day with the advertiser's ad_page_id, keep the ad_archive_id values you've already seen, and alert on new ones. Our guide to the Facebook Ads Library API has a ready Python script and an n8n workflow.
Meta's Ad Library API asks for identity confirmation and a developer app, and it only covers ads about social issues, elections or politics, plus ads shown in the EU. For commercial ads elsewhere it has no answer. The SocialAPIs API returns what the public Ads Library website shows, with one API key.
Without an account you get a few free checks a day to try it. Signed in, each check runs on your own account: 1 credit for a keyword search, 2 for a Page (one call to find its ads ID, one to search). The free plan includes 200 calls a month, no credit card; paid plans start at $4.99 a month.
Free plan: 200 calls a month, no credit card. Paid plans from $4.99 a month. Facebook and Instagram data, one x-api-token header.