/v1/call/meta.ad_searchPreviewMeta Ad Library search API
Only on Meta Ad Library.
The Meta Ad Library search API searches the ads running now in the Meta Ad Library (Facebook, Instagram and Meta's other apps) by keyword: advertiser, text, headline, images and videos, landing page, first and last day shown; can be limited to a country and to image or video ads, sorted by impressions or newest first. 30 ads a page. One call costs 2 credits ($0.004 to $0.0067 depending on the pack); failed calls are free. Last tested 2026-10-17.
Last updated:
Request and response
curl https://api.socialtoai.com/v1/call/meta.ad_search \ -H "Authorization: Bearer $SOCIALTOAI_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "running shoes" }'import osimport requestsresponse = requests.post( "https://api.socialtoai.com/v1/call/meta.ad_search", headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"}, json={ "query": "running shoes", },)print(response.json())# Connected over MCP? Ask in plain words.Use the Meta Ad Library search interface (meta.ad_search) with query: running shoes.# Your AI calls the call tool with:{ "query": "running shoes"}sorttype{ "op": "meta.ad_search", "platform": "meta", "status": "ok", "items": [ { "platform": "meta", "id": "…", "ref": "…", "approx": [], "type": "entry", "entry_type": "ad", "title": "…", "url": "https://example.com/…", "rank": null, "heat": null, "fields": { "format": "image", "text": "…", "landing_url": "https://example.com/…", "advertiser": { "id": "…", "name": "…", "url": "https://example.com/…" }, "images": ["https://example.com/…", "https://example.com/…"], "first_shown_at": "2026-10-07T07:00:00.000Z", "last_shown_at": "2026-10-12T07:00:00.000Z" } } ], "unavailable": [], "page": { "has_more": true, "cursor": "cur_…", "cursor_expires_at": "2026-10-12T22:18:35.000Z" }, "cost_credits": 2}- entry_type
- ad
- format
- image
- text
- …
- landing_url
- https://example.com/…
- first_shown_at
- 2026-10-07T07:00:00.000Z
- last_shown_at
- 2026-10-12T07:00:00.000Z
Names and text were removed from the sample; the numbers are as recorded.
5 parameters.
1 required.
Send them as a JSON body with POST. Your key goes in the Authorization header, never in the URL.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| query | string | Required | — | Search terms |
| region | string | Optional | — | Only ads delivered in this country or region, by its two-letter code; all of them when left out |
| sort | string | Optional | "popular" | By impressions, highest first, or newest first"popular""latest" |
| type | string | Optional | — | Only image ads or only video ads; all of them when left out"image""video" |
| cursor | string | Optional | — | Pass page.cursor from the last response to get the next page. |
The fields of each item.
What Meta Ad Library cannot give is marked.
| Field | Type | Meaning |
|---|---|---|
| items[].title | string | The entry's title or name. |
| items[].url | string | A link that opens it; null where the platform's list has none. |
| items[].rank | integer | Position on a board, from 1. |
| items[].heat | integer | The platform's heat score. |
| items[].fields.format | string | The ad's format: text, image or video. other is a format of the platform's own. |
| items[].fields.text | string | The ad's body text. |
| items[].fields.landing_url | string | Where a click on the ad leads. |
| items[].fields.advertiser.id | string | Advertiser ID. |
| items[].fields.advertiser.name | string | Advertiser's name. |
| items[].fields.advertiser.url | string | The advertiser's page on the platform. |
| items[].fields.images | string[] | Addresses of the ad's images. |
| items[].fields.first_shown_at | string | When the ad was first shown. |
| items[].fields.last_shown_at | string | When the ad was last shown. For an ad still running, when the platform last saw it. |
nullFields Meta Ad Library cannot giveMeta Ad Library gives every field of this call. Where one item lacks a value, that field is null.
Every item also has platform, id, ref, approx and type; the response around the items is the same on every call. Response format
What to expect.
1 call per second per key, 5 after a purchase; going over is not charged. Rate limits
A failed call costs 0 credits and is never retried on its own. Error codes
Once connected over MCP, these questions use it.
Search the ads running now in the Meta Ad Library (Facebook, Instagram and Meta's other apps) by keyword: running shoes.
2 creditscall {"op":"meta.ad_search","query":"running shoes"}Search the ads running now in the Meta Ad Library (Facebook, Instagram and Meta's other apps) by keyword: running shoes, with sort set to latest.
2 creditscall {"op":"meta.ad_search","query":"running shoes","sort":"latest"}
The interface of the same name on other platforms.
All platforms and prices/v1/call/meta.ad_search{ "query": "running shoes" }2 creditsper call