InsightSocial API
Facebook

Facebook Ad Library Search API reference

Your first 10 calls are free, no card needed. Pricing and FAQ

Get a free API key
Example request
curl "https://api.insightsocial.app/v1/facebook/adlibrary/search/ads?query=artificial%20intelligence" \
  -H "x-api-key: $INSIGHTSOCIAL_API_KEY"

Step-by-step: Ad library aggregation

GET
/v1/facebook/adlibrary/search/ads

Returns Facebook Ad Library ads matching a keyword, each with its creative text, images, sponsor info, and running status.

Beta. The source's own structure under our naming rules (snake_case keys, string ids, ISO times where the source gives a timestamp), not one of the schema-2 entities. Fields may change. See Schema 2.

Use it to find ads across all advertisers by keyword; if you already know the advertiser, adlibrary/company/ads is more direct.

50 credits per call.

Paginates by cursor: see Pagination.

x-api-key<token>

Your key from the dashboard. It starts with isk_.

In: header

Query Parameters

query*string

Search keyword or phrase to find ads in the Facebook Ad Library

sort_by?string

Sort by impressions (high to low), or Most Recent (relevancy_monthly_grouped). Defaults to impressions.

Value in

  • "total_impressions"
  • "relevancy_monthly_grouped"
search_type?string

If you want to search by exact phrase or not

Value in

  • "keyword_unordered"
  • "keyword_exact_phrase"
ad_type?string

Search for all ads or only political and issue ads

Value in

  • "all"
  • "political_and_issue_ads"
country?string

This can only be one country. It has to be the 2 letter code for the country. It defaults to ALL.

status?string

Status of the ad. Defaults to ACTIVE.

Value in

  • "ALL"
  • "ACTIVE"
  • "INACTIVE"
media_type?string

Media type of the ad. Defaults to ALL. Meme just means the ad has text and an image. No clue why they call it meme.

Value in

  • "ALL"
  • "IMAGE"
  • "VIDEO"
  • "MEME"
  • "IMAGE_AND_MEME"
  • "NONE"
start_date?string

Impressions start date. Needs to be in YYYY-MM-DD format.

end_date?string

Impressions end date. Needs to be in YYYY-MM-DD format.

cursor?string

Cursor to paginate through results

trim?boolean

Set to true for a trimmed down version of the response

dry_run?"1"

Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.

Value in

  • "1"

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://api.insightsocial.app/v1/facebook/adlibrary/search/ads?query=string"
{  "success": true,  "platform": "string",  "endpoint": "string",  "schema_version": "2",  "pagination": {    "next_cursor": "string",    "has_more": true,    "page_size": 0,    "stopped_at": "since"  },  "unavailable": [    "string"  ],  "credits_used": 0,  "credits_remaining": 0,  "request_id": "string",  "cached": true,  "idempotent_replay": true,  "charge_reason": "string",  "free_call": true,  "data": {    "property1": null,    "property2": null  }}