# Facebook Ad Search API

> Search the Meta Ad Library by keyword and get matching ads (advertiser, creative text, CTA, platforms, and run dates) with cursor pagination.

Source: https://www.sandbase.ai/apis/facebook/ads-search
API reference: https://www.sandbase.ai/apis/facebook/ads-search/docs

## Facts

- Provider: Facebook
- Type: Data API
- Endpoint: `POST https://api.sandbase.ai/v1/api/facebook/ads-search`
- Price: From $0.0011 per call
- Capabilities: api, facebook, social media
- Billing: pay per use from one SandBase balance; no provider account or subscription needed

## Call it

`POST https://api.sandbase.ai/v1/api/facebook/ads-search` with `Authorization: Bearer $SANDBASE_API_KEY` and the parameters as a JSON body.

| Parameter | Type | Required | Allowed values |
| --- | --- | --- | --- |
| `query` | string | yes |  |
| `adType` | string | no | all, political_and_issue_ads |
| `cursor` | string | no |  |
| `sortBy` | string | no | impressions, recent |
| `status` | string | no | ALL, ACTIVE, INACTIVE |
| `country` | string | no |  |
| `endDate` | string | no |  |
| `mediaType` | string | no | ALL, IMAGE, VIDEO, MEME, IMAGE_AND_MEME, NONE |
| `startDate` | string | no |  |
| `searchType` | string | no | keyword_unordered, keyword_exact_phrase |
| `requireFields` | array | no |  |

## FAQ

### How do I use the Facebook Ad Search API?

Send a POST request to https://api.sandbase.ai/v1/api/facebook/ads-search with your SandBase API key in the Authorization header (Bearer) and the parameters as a JSON body. You can also try it in the Playground on this page without writing code.

### How much does the Facebook Ad Search API cost?

From $0.0011 per call, billed from your SandBase balance. You are only charged for calls you make; there is no subscription.

### What parameters does the Facebook Ad Search API accept?

Required: query (string). Optional: adType (one of all, political_and_issue_ads), cursor (string), sortBy (one of impressions, recent), status (one of ALL, ACTIVE, INACTIVE), country (string) and endDate (string) and 4 more. The Parameters table and the Playground on this page list every field.

### What does the Facebook Ad Search API return?

A JSON response returned in the same HTTP request (synchronous).

### Do I need a Facebook developer account or API key?

No. Facebook Ad Search runs through SandBase, so one SandBase API key covers this endpoint and every other API and model in the catalog. You do not need to apply for Facebook API access separately.

## README

### Facebook Ad Search API

Search the Meta Ad Library by keyword and get matching ads (advertiser, creative text, CTA, platforms, and run dates) with cursor pagination.

#### Request

```bash
curl -X POST "https://api.sandbase.ai/v1/run" \
  -H "Authorization: Bearer $SANDBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "facebook/ads-search", "query": "nike", "country": "US", "searchType": "keyword_exact_phrase"}'
```

The result is returned in `outputs[0].data`. A lookup that finds nothing still succeeds and returns `found: false`.

#### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `query` | string | Yes | Keyword to search the Meta Ad Library for (e.g. "protein powder"). |
| `adType` | string | No | Restrict to all ads (default) or only political and issue ads. One of: `all`, `political_and_issue_ads`. |
| `country` | string | No | Two-letter country code to scope results. Omit for all countries. |
| `cursor` | string | No | Opaque pagination cursor from a previous response's nextCursor. |
| `endDate` | string | No | Filter to ads with impressions on or before this date, in YYYY-MM-DD format. |
| `mediaType` | string | No | Creative media type filter. One of: `ALL`, `IMAGE`, `VIDEO`, `MEME`, `IMAGE_AND_MEME`, `NONE`. |
| `requireFields` | array | No | Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `totalResults`, and it is served only by a source that returns every o |
| `searchType` | string | No | Match mode for the query: loose keyword match (keyword_unordered, the default) or exact phrase (keyword_exact_phrase). One of: `keyword_unordered`, `keyword_exact_phrase`. |
| `sortBy` | string | No | Sort order: impressions (highest first, the default) or recent (most recent). One of: `impressions`, `recent`. |
| `startDate` | string | No | Filter to ads with impressions on or after this date, in YYYY-MM-DD format. |
| `status` | string | No | Ad status filter. One of: `ALL`, `ACTIVE`, `INACTIVE`. Default `"ACTIVE"`. |

#### Pricing

Billed at the actual cost of each call, usually $0.0011 per request. A call can cost more when the first data source fails and another one answers. Failed calls are not charged. Lookups that find nothing and searches with no results are billed at their actual cost, which is often lower and can be $0.
