SignalShelf · Developer documentation

facebook · adLibrary · search · ads

Search the public Meta Ad Library (all ad types, all countries). GET /v1/facebook/adLibrary/search/ads accepts your x-api-key header. Costs 2 credits per successful fresh call; failures and opt-in cache hits (cache_max_age) are free. Native path: GET /api/v1/web/facebook/adLibrary/search/ads. Same request parameters and JSON shape as the reference API, so you can switch by changing the base URL.

Request parameters

Keyword search of facebook.com/ads/library as a logged-out guest. Covers every ad type and country the public site shows. First page comes from the server-rendered page; later pages replay the site's AdLibrarySearchPaginationQuery with the returned cursor.

ParameterTypeRequiredDescription
querystringYesKeyword or phrase.
sort_bystringNototal_impressions (default) or relevancy_monthly_grouped. Allowed: total_impressions, relevancy_monthly_grouped.
search_typestringNokeyword_unordered (default) or keyword_exact_phrase. Allowed: keyword_unordered, keyword_exact_phrase.
ad_typestringNoall (default) or political_and_issue_ads. Allowed: all, political_and_issue_ads.
countrystringNoISO-3166 alpha-2 country or ALL (default).
languagestringNoContent language ISO-639-1 code, e.g. en.
statusstringNoACTIVE (default), INACTIVE or ALL. Allowed: ACTIVE, INACTIVE, ALL.
media_typestringNoALL (default), IMAGE, VIDEO, MEME, IMAGE_AND_MEME, NONE. Allowed: ALL, IMAGE, VIDEO, MEME, IMAGE_AND_MEME, NONE.
start_datestringNoAds delivered on/after YYYY-MM-DD.
end_datestringNoAds delivered on/before YYYY-MM-DD.
trimbooleanNoReturn a slimmer ad object (no cards/extra media).
cursorstringNoOpaque pagination cursor returned by the previous page.
freshnessstringNo24h (default), 1h, 7d, or live. Accepted cache hits are free; live forces refresh except simultaneous requests may share newly fetched data.

Code examples

Set SIGNALSHELF_BASE_URL and SIGNALSHELF_API_KEY on your server.

REQUEST EXAMPLE
curl "$SIGNALSHELF_BASE_URL/v1/facebook/adLibrary/search/ads?query=nike" \
  -H "x-api-key: $SIGNALSHELF_API_KEY"

Response and pagination

The response contains data and meta. data includes platform, resource, sample:false, provider, and the public source payload. Lists return data.items; individual resources return data.data.

Author feeds include data.next_cursor. Return it unchanged in cursor for the next page. Feed entries can include reposts. Single-post lookups resolve the handle to a DID first. Deleted or moderated posts may be unavailable.

meta includes event_id, mode, cache, credits_charged, fetched_at, age_seconds, and duration_ms. A fresh successful result costs one credit; accepted cached results and failures cost zero.

Availability and failures

Implementation is not a continuous availability guarantee. Source rate limits, retention, deleted content, restrictions, and regional availability apply. This is an independent SignalShelf contract, not a drop-in competitor response format.

400: invalid parameters. 401: missing/revoked key. 402: insufficient credits. 404: missing public resource. 429: SignalShelf throttle. 502/503: upstream failure or rate limit, with credit restored.

Explore the API in your workspace. Sample results and accepted cache hits cost zero credits. Open the playground →