Api Endpoint

ApiToll Facebook Ad Library Keyword Search

Facebook Ad Library search by keyword — every live and recent ad matching a search term across all advertisers on Facebook, Instagram, Messenger and Threads. Returns the full ad creative (headline, body copy, CTA button + destination link, image and video URLs), the advertiser, run dates and days-running, and platform mix. Commercial and political ads, no Meta API or login. Competitor ad intelligence, ad spy, and creative research for AI agents.

Open interactive test console

Offering

Provider
ads.apitoll.cloud
Method
GET
Offering type
Api Endpoint
Transport type
http
Category
Business And Commerce
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://ads.apitoll.cloud/v1/ads/facebook/search
MIME type
application/json
First seen
2026-10-16T01:50:06.715Z
Last seen
Tags
facebook-ads, ad-library, ads, keyword-search, ad-creative, marketing, instagram-ads, apitoll

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.03 USDC
Atomic price: 30000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Payment option 2
0.03 USDC
Atomic price: 30000 · Network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "30000",
    "payTo": "0x4ce88238F669d04351937420C931988e464a975a"
  },
  {
    "scheme": "exact",
    "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
    "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": "30000",
    "payTo": "HZ5rN5HmZpu2H16auY5Zt5SuJjCMBG77odVhAVSuhK1x"
  }
]

Observed health

Status
Healthy
Latest latency
297 ms
Average latency
1041 ms
HTTP status
402
Last checked
Reachability
100% over 14 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "const": "http"
    },
    "method": {
      "type": "string",
      "enum": [
        "GET"
      ]
    },
    "queryParams": {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Keyword/phrase to search ads for (e.g. \"running shoes\", \"crypto wallet\"). Defaults to a demo query if omitted."
        },
        "country": {
          "type": "string",
          "description": "Two-letter ISO country (US, GB, DE, BR…) the ads target, or ALL for a bounded multi-region sweep (slower). Default US."
        },
        "media_type": {
          "type": "string",
          "description": "Creative format filter.",
          "enum": [
            "all",
            "image",
            "video",
            "meme",
            "image_and_meme",
            "none"
          ]
        },
        "ad_type": {
          "type": "string",
          "description": "Ad category filter. political_and_issue_ads MAY add spend + impressions ranges when Meta discloses them (often absent).",
          "enum": [
            "all",
            "political_and_issue_ads",
            "housing_ads",
            "employment_ads",
            "credit_ads",
            "financial_products_and_services_ads"
          ]
        },
        "platforms": {
          "type": "string",
          "description": "Comma-separated publisher filter: FACEBOOK,INSTAGRAM,MESSENGER,AUDIENCE_NETWORK,THREADS,WHATSAPP. Blank = all."
        },
        "period": {
          "type": "string",
          "description": "Limit to ads active in this window. Blank = all time.",
          "enum": [
            "",
            "last24h",
            "last7d",
            "last14d",
            "last30d"
          ]
        },
        "active_status": {
          "type": "string",
          "description": "Filter by whether the ad is still running.",
          "enum": [
            "all",
            "active",
            "inactive"
          ]
        },
        "sort_by": {
          "type": "string",
          "description": "most_recent (newest/currently-running first — default) or impressions_desc (all-time highest-impression ads, often older/ended).",
          "enum": [
            "impressions_desc",
            "most_recent"
          ]
        },
        "limit": {
          "type": "integer",
          "description": "Max ads to return (1-60).",
          "minimum": 1,
          "maximum": 60
        },
        "resolve_advertiser": {
          "type": "boolean",
          "description": "Also resolve each advertiser’s page identity (categories, profile pic). Slower. Default false."
        }
      },
      "required": [
        "q"
      ]
    }
  },
  "required": [
    "type",
    "method"
  ],
  "additionalProperties": false
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "method": {
          "enum": [
            "GET"
          ],
          "type": "string"
        },
        "queryParams": {
          "properties": {
            "active_status": {
              "description": "Filter by whether the ad is still running.",
              "enum": [
                "all",
                "active",
                "inactive"
              ],
              "type": "string"
            },
            "ad_type": {
              "description": "Ad category filter. political_and_issue_ads MAY add spend + impressions ranges when Meta discloses them (often absent).",
              "enum": [
                "all",
                "political_and_issue_ads",
                "housing_ads",
                "employment_ads",
                "credit_ads",
                "financial_products_and_services_ads"
              ],
              "type": "string"
            },
            "country": {
              "description": "Two-letter ISO country (US, GB, DE, BR…) the ads target, or ALL for a bounded multi-region sweep (slower). Default US.",
              "type": "string"
            },
            "limit": {
              "description": "Max ads to return (1-60).",
              "maximum": 60,
              "minimum": 1,
              "type": "integer"
            },
            "media_type": {
              "description": "Creative format filter.",
              "enum": [
                "all",
                "image",
                "video",
                "meme",
                "image_and_meme",
                "none"
              ],
              "type": "string"
            },
            "period": {
              "description": "Limit to ads active in this window. Blank = all time.",
              "enum": [
                "",
                "last24h",
                "last7d",
                "last14d",
                "last30d"
              ],
              "type": "string"
            },
            "platforms": {
              "description": "Comma-separated publisher filter: FACEBOOK,INSTAGRAM,MESSENGER,AUDIENCE_NETWORK,THREADS,WHATSAPP. Blank = all.",
              "type": "string"
            },
            "q": {
              "description": "Keyword/phrase to search ads for (e.g. \"running shoes\", \"crypto wallet\"). Defaults to a demo query if omitted.",
              "type": "string"
            },
            "resolve_advertiser": {
              "description": "Also resolve each advertiser’s page identity (categories, profile pic). Slower. Default false.",
              "type": "boolean"
            },
            "sort_by": {
              "description": "most_recent (newest/currently-running first — default) or impressions_desc (all-time highest-impression ads, often older/ended).",
              "enum": [
                "impressions_desc",
                "most_recent"
              ],
              "type": "string"
            }
          },
          "required": [
            "q"
          ],
          "type": "object"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "properties": {
            "ads": {
              "items": {
                "properties": {
                  "adArchiveId": {
                    "type": "string"
                  },
                  "bodyText": {
                    "type": "string"
                  },
                  "country": {
                    "type": "string"
                  },
                  "ctaText": {
                    "type": "string"
                  },
                  "ctaType": {
                    "type": "string"
                  },
                  "daysRunning": {
                    "type": "number"
                  },
                  "displayFormat": {
                    "type": "string"
                  },
                  "imageUrls": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "isActive": {
                    "type": "boolean"
                  },
                  "linkUrl": {
                    "type": "string"
                  },
                  "linkUrlType": {
                    "type": "string"
                  },
                  "mediaExpiresAt": {
                    "type": "string"
                  },
                  "pageId": {
                    "type": "string"
                  },
                  "pageName": {
                    "type": "string"
                  },
                  "publisherPlatform": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "scrapedAt": {
                    "type": "string"
                  },
                  "sourceUrl": {
                    "type": "string"
                  },
                  "startDate": {
                    "type": "number"
                  },
                  "templatedText": {
                    "type": "boolean"
                  },
                  "title": {
                    "type": "string"
                  },
                  "videoUrl": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "asOf": {
              "type": "string"
            },
            "count": {
              "type": "number"
            },
            "country": {
              "type": "string"
            },
            "query": {
              "properties": {
                "keyword": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "source": {
              "properties": {
                "name": {
                  "type": "string"
                },
                "via": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}