Docs / API reference

POST/v1/data/facebook-ads/search

Facebook Ads Search

Search public Facebook Ads Library records by keyword, page, or library URL.

Execution model

Live request

Runtime depends on endpoint, target, pagination, rendering mode, and active plan limits.

Credit weight

Live catalog

Current weights are managed from the Data API Weights admin table and shown on pricing before use.

Facebook Ads Search Endpoint

Search the public Ads Library from a keyword, page, or library URL.

Getting Started

Send your API key as a bearer token. Start with the smallest request below.

Search Ads

Send one source: query, page_id, url, or urls.

curl -X POST "https://api.datablue.dev/v1/data/facebook-ads/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "kiro beauty",
  "country": "IN",
  "limit": 10
}'
Example response
{
  "success": true,
  "source": "facebook_ads_library",
  "operation": "search",
  "query": "kiro beauty",
  "country": "IN",
  "total_results": 1,
  "time_taken": 2.5,
  "ads": [
    {
      "position": 1,
      "ad_archive_id": "1234567890",
      "is_active": true,
      "page_name": "Kiro Beauty",
      "body": "Clean beauty essentials",
      "cta_text": "Shop Now",
      "image_count": 1,
      "video_count": 0,
      "publisher_platforms": [
        "facebook"
      ],
      "ad_library_url": "https://www.facebook.com/ads/library/?id=1234567890"
    }
  ]
}

Search Sources

Search a Page

Set page_id to return ads associated with one Facebook page.

curl -X POST "https://api.datablue.dev/v1/data/facebook-ads/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "page_id": "123456789",
  "country": "IN",
  "limit": 10
}'
Example response
{
  "success": true,
  "source": "facebook_ads_library",
  "operation": "search",
  "query": "kiro beauty",
  "country": "IN",
  "total_results": 1,
  "time_taken": 2.5,
  "ads": [
    {
      "position": 1,
      "ad_archive_id": "1234567890",
      "is_active": true,
      "page_name": "Kiro Beauty",
      "body": "Clean beauty essentials",
      "cta_text": "Shop Now",
      "image_count": 1,
      "video_count": 0,
      "publisher_platforms": [
        "facebook"
      ],
      "ad_library_url": "https://www.facebook.com/ads/library/?id=1234567890"
    }
  ]
}

Use a Library URL

Send url for one Ads Library source.

curl -X POST "https://api.datablue.dev/v1/data/facebook-ads/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://www.facebook.com/ads/library/?id=1234567890",
  "country": "IN"
}'
Example response
{
  "success": true,
  "source": "facebook_ads_library",
  "operation": "search",
  "query": "kiro beauty",
  "country": "IN",
  "total_results": 1,
  "time_taken": 2.5,
  "ads": [
    {
      "position": 1,
      "ad_archive_id": "1234567890",
      "is_active": true,
      "page_name": "Kiro Beauty",
      "body": "Clean beauty essentials",
      "cta_text": "Shop Now",
      "image_count": 1,
      "video_count": 0,
      "publisher_platforms": [
        "facebook"
      ],
      "ad_library_url": "https://www.facebook.com/ads/library/?id=1234567890"
    }
  ]
}

Use Multiple Library URLs

Send urls for a bounded batch of Ads Library sources.

curl -X POST "https://api.datablue.dev/v1/data/facebook-ads/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "urls": [
    "https://www.facebook.com/ads/library/?id=1234567890",
    "https://www.facebook.com/ads/library/?id=1234567891"
  ],
  "country": "IN"
}'
Example response
{
  "success": true,
  "source": "facebook_ads_library",
  "operation": "search",
  "query": "kiro beauty",
  "country": "IN",
  "total_results": 1,
  "time_taken": 2.5,
  "ads": [
    {
      "position": 1,
      "ad_archive_id": "1234567890",
      "is_active": true,
      "page_name": "Kiro Beauty",
      "body": "Clean beauty essentials",
      "cta_text": "Shop Now",
      "image_count": 1,
      "video_count": 0,
      "publisher_platforms": [
        "facebook"
      ],
      "ad_library_url": "https://www.facebook.com/ads/library/?id=1234567890"
    }
  ]
}

Ad Filters

Filter Status and Media

Set country, active_status, and media_type to narrow results.

curl -X POST "https://api.datablue.dev/v1/data/facebook-ads/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "kiro beauty",
  "country": "IN",
  "active_status": "active",
  "media_type": "video"
}'
Example response
{
  "success": true,
  "source": "facebook_ads_library",
  "operation": "search",
  "query": "kiro beauty",
  "country": "IN",
  "total_results": 1,
  "time_taken": 2.5,
  "ads": [
    {
      "position": 1,
      "ad_archive_id": "1234567890",
      "is_active": true,
      "page_name": "Kiro Beauty",
      "body": "Clean beauty essentials",
      "cta_text": "Shop Now",
      "image_count": 1,
      "video_count": 0,
      "publisher_platforms": [
        "facebook"
      ],
      "ad_library_url": "https://www.facebook.com/ads/library/?id=1234567890"
    }
  ]
}

Filter Dates and Platforms

Set start_date, end_date, and publisher_platforms for a bounded campaign view.

curl -X POST "https://api.datablue.dev/v1/data/facebook-ads/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "kiro beauty",
  "country": "IN",
  "start_date": "2026-01-01",
  "end_date": "2026-06-30",
  "publisher_platforms": [
    "facebook",
    "instagram"
  ]
}'
Example response
{
  "success": true,
  "source": "facebook_ads_library",
  "operation": "search",
  "query": "kiro beauty",
  "country": "IN",
  "total_results": 1,
  "time_taken": 2.5,
  "ads": [
    {
      "position": 1,
      "ad_archive_id": "1234567890",
      "is_active": true,
      "page_name": "Kiro Beauty",
      "body": "Clean beauty essentials",
      "cta_text": "Shop Now",
      "image_count": 1,
      "video_count": 0,
      "publisher_platforms": [
        "facebook"
      ],
      "ad_library_url": "https://www.facebook.com/ads/library/?id=1234567890"
    }
  ]
}

Details and Pagination

Include Ad Details

Set scrape_ad_details to include available snapshot media and detail fields.

curl -X POST "https://api.datablue.dev/v1/data/facebook-ads/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "kiro beauty",
  "country": "IN",
  "scrape_ad_details": true,
  "limit": 10
}'
Example response
{
  "success": true,
  "source": "facebook_ads_library",
  "operation": "search",
  "query": "kiro beauty",
  "country": "IN",
  "total_results": 1,
  "time_taken": 2.5,
  "ads": [
    {
      "position": 1,
      "ad_archive_id": "1234567890",
      "is_active": true,
      "page_name": "Kiro Beauty",
      "body": "Clean beauty essentials",
      "cta_text": "Shop Now",
      "image_count": 1,
      "video_count": 0,
      "publisher_platforms": [
        "facebook"
      ],
      "ad_library_url": "https://www.facebook.com/ads/library/?id=1234567890"
    }
  ]
}

Continue with a Cursor

Send the previous cursor and set limit from 1 to 50.

curl -X POST "https://api.datablue.dev/v1/data/facebook-ads/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "kiro beauty",
  "country": "IN",
  "cursor": "NEXT_CURSOR",
  "limit": 25
}'
Example response
{
  "success": true,
  "source": "facebook_ads_library",
  "operation": "search",
  "query": "kiro beauty",
  "country": "IN",
  "total_results": 1,
  "time_taken": 2.5,
  "ads": [
    {
      "position": 1,
      "ad_archive_id": "1234567890",
      "is_active": true,
      "page_name": "Kiro Beauty",
      "body": "Clean beauty essentials",
      "cta_text": "Shop Now",
      "image_count": 1,
      "video_count": 0,
      "publisher_platforms": [
        "facebook"
      ],
      "ad_library_url": "https://www.facebook.com/ads/library/?id=1234567890"
    }
  ]
}

Request Controls

Set Provider Timeout

Set timeout_ms from 5,000 to 90,000 milliseconds.

curl -X POST "https://api.datablue.dev/v1/data/facebook-ads/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "kiro beauty",
  "timeout_ms": 45000
}'
Example response
{
  "success": true,
  "source": "facebook_ads_library",
  "operation": "search",
  "query": "kiro beauty",
  "country": "IN",
  "total_results": 1,
  "time_taken": 2.5,
  "ads": [
    {
      "position": 1,
      "ad_archive_id": "1234567890",
      "is_active": true,
      "page_name": "Kiro Beauty",
      "body": "Clean beauty essentials",
      "cta_text": "Shop Now",
      "image_count": 1,
      "video_count": 0,
      "publisher_platforms": [
        "facebook"
      ],
      "ad_library_url": "https://www.facebook.com/ads/library/?id=1234567890"
    }
  ]
}

Response

Consume normalized rows from ads; use has_next_page and cursor for pagination.

Error Handling

Handle 401 for authentication, 422 for invalid input, 429 for limits, and retry only transient failures.

Parameters

NameTypeRequirementDescription
querystringOptionalKeyword search query. Required unless url, urls, or page_id is supplied.
urlstringOptionalDirect Facebook Ads Library URL.
urlsstring[]OptionalBatch of direct Ads Library URLs.
countrystringOptionalTwo-letter country code.
active_statusstringOptionalall, active, or inactive.
media_typestringOptionalMedia type filter.
page_idstringOptionalFacebook page ID.
start_datestringOptionalStart date filter.
end_datestringOptionalEnd date filter.
publisher_platformsstring[]OptionalPublisher platforms such as facebook or instagram.
scrape_ad_details / scrapeAdDetailsbooleanOptionalReturn full snapshot media/detail fields when available.
limit / count / limitPerSourcenumberOptionalMaximum ads to return (1-50).
cursorstringOptionalPagination cursor from a previous response.
timeout_msnumberOptionalProvider timeout in milliseconds (5000-90000).

Response fields

FieldTypeDescription
successbooleanWhether the request completed successfully.
adsarrayAd rows with ad_archive_id, active status, page metadata, body, title, caption, CTA, link URL, images, videos, platforms, dates, reach/spend, and ad_library_url.
cursor / has_next_pagestring | booleanPagination metadata.
time_takennumberAPI response time in seconds.

Request and response

curl -X POST "https://api.datablue.dev/v1/data/facebook-ads/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "kiro beauty",
  "country": "IN",
  "active_status": "active",
  "limit": 10,
  "scrapeAdDetails": true
}'
Example response
{
  "success": true,
  "source": "facebook_ads_library",
  "operation": "search",
  "query": "kiro beauty",
  "country": "IN",
  "total_results": 1,
  "time_taken": 2.5,
  "ads": [
    {
      "position": 1,
      "ad_archive_id": "1234567890",
      "is_active": true,
      "page_name": "Kiro Beauty",
      "body": "Clean beauty essentials",
      "cta_text": "Shop Now",
      "image_count": 1,
      "video_count": 0,
      "publisher_platforms": [
        "facebook",
        "instagram"
      ],
      "ad_library_url": "https://www.facebook.com/ads/library/?id=1234567890"
    }
  ]
}