Apify actor · whoareyouanas/meta-ad-lite-scraper

Meta (Facebook) Ad Library Scraper - Modern, Fast & Reliable

Export unique Facebook and Instagram ads from Meta Ad Library using a keyword, advertiser Page ID, or supported search URL. Choose an explicit ad limit and review copy, CTAs, formats, dates, and source-hosted media links.

Documentation checked 2026-10-29 · deployed build 0.1.15 · run through your Apify account

01 / Overview

Match the actor to the job.

One focused search

Use one keyword, Page ID, or direct search URL per run.

Bound the ad sample

Set maxAds rather than relying on Meta's approximate displayed result count.

Keep creative structure

Review image, video, carousel, and dynamic creative fields in JSON or dataset exports.

02 / Input

Start with a clear, bounded input.

Provide targetUrl, searchQuery, or pageId with the appropriate country/status/media filters. maxAds controls the requested unique-ad limit. The proxy setting has its own cost and coverage implications.

input.json · example based on the deployed schema
{
  "searchQuery": "dinosaur",
  "country": "US",
  "activeStatus": "active",
  "maxAds": 10
}

Replace example targets and credential placeholders before running. These are documentation examples, not a promise of currently available source results.

Deployed actor input fields, types, defaults, and descriptions
FieldType / requiredDefaultPurpose
targetUrlstringNot specifiedSearch URL takes precedence over Page ID and keyword, including the example keyword. URL filters take precedence over form defaults. Single-ad URLs are not supported.
searchQuerystringNot specifiedSearch public ads by keyword. The example searches nike. A URL or Page ID takes precedence when provided.
pageIdstringNot specifiedNumeric advertiser Page ID. Takes precedence over the keyword example. A search URL takes precedence over this field.
countrystring"US"Two-letter country code or ALL. Used for keyword/Page ID searches.
activeStatusstring"active"Filter by status. Applies to keyword/Page ID searches.

Options: active, inactive, all

maxAdsinteger100Maximum unique ads delivered in this run. Scraping may stop earlier when results end or the run budget is reached.

Minimum: 1 · Maximum: 10000

All other input controls (2)
Deployed actor input fields, types, defaults, and descriptions
FieldType / requiredDefaultPurpose
mediaTypestring"all"Filter by media type. Applies to keyword/Page ID searches.

Options: all, image, video, meme, none

proxyConfigurationobject{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}Residential proxies are enabled by default for reliable public Meta requests, including the one-ad example. Disable explicitly for a direct connection. Custom proxy charges depend on your provider.

03 / Output

Know what each returned row represents.

Illustrative output shape · not a live run
{
  "libraryID": "example-ad-id",
  "brand": "Example Brand",
  "pageId": "example-page-id",
  "active": null,
  "body": "Illustrative ad copy",
  "format": "image",
  "platforms": [
    "Facebook",
    "Instagram"
  ],
  "images": [
    {
      "url": "https://example.com/creative.jpg"
    }
  ],
  "videos": [],
  "adLibraryUrl": "https://www.facebook.com/ads/library/?id=example-ad-id"
}

Example values illustrate the published contract. Available fields and populated values depend on the source, mode, and result status.

Fields in the documented output view

libraryID

Ad ID

brand

Advertiser

pageId

pageId

active

active

body

Ad copy

linkTitle

linkTitle

ctaText

ctaText

linkUrl

Landing page

format

format

platforms

platforms

startDate

startDate

endDate

endDate

images

images

videos

videos

adLibraryUrl

View ad

Output views select columns. They do not necessarily filter record types or exhaust the full JSON payload. Use structured JSON when you need nested arrays or objects.

Dataset links and run artifacts (2)
Ads
Available through the actor's Output tab for your run.
Run summary
Available through the actor's Output tab for your run.

04 / Pricing

Understand the billable unit.

These are the active public event prices checked on 2026-10-29, in USD. They describe each event, not a universal flat price for a run. Confirm your current Apify plan and run budget before starting.

Actor event prices and billing units
Billable eventRate (USD)When it applies

result

apify-default-dataset-item

$0.004 / event

Single result in the default dataset.

$4.00 per 1,000 of this event. Other events and separate services are additional.

  • This configuration currently lists the dataset-result event without an actor-start event. Do not add another actor's startup assumptions.
  • Check the live Pricing tab and your proxy settings before scaling; custom proxy providers can bill separately.

A result limit and a spending cap are different controls. Account charges, applicable taxes, and separately billed providers or proxies must be considered where relevant. A cap setting is not a minimum invoice charge.

05 / API & automation

Use the same input from your workflow.

Test a small run in Apify Console, inspect its records and charges, then save a task or call the actor from your own application. Keep your Apify token in an environment variable. Source-specific credentials, if required, are separate from the Apify API token.

cURL · start an asynchronous actor run
# Save the input example as input.json and set APIFY_TOKEN.
# This request starts an asynchronous, potentially billable run.
curl --request POST \
  'https://api.apify.com/v2/acts/whoareyouanas~meta-ad-lite-scraper/runs' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header 'Content-Type: application/json' \
  --data @input.json

The response identifies the run. Wait for it to finish, inspect its status, and use its default dataset and key-value store to retrieve results. A successful run can still contain partial or failed records; check the output contract above before continuing downstream.

Coverage & interpretation

Check the result before relying on it.

Questions

Before you build an integration.

What do I need to provide?

Provide targetUrl, searchQuery, or pageId with the appropriate country/status/media filters. maxAds controls the requested unique-ad limit. The proxy setting has its own cost and coverage implications.

What should I check in the output?
  • Rows include ad identity, advertiser, copy, CTA, media references, status, dates, platforms, and adLibraryUrl.
  • Unknown status, dates, counts, and durations can be null. A carousel does not by itself establish multiple ad versions.
How do I budget the run?
  • This configuration currently lists the dataset-result event without an actor-start event. Do not add another actor's startup assumptions.
  • Check the live Pricing tab and your proxy settings before scaling; custom proxy providers can bill separately.

Keep exploring

Practical guides for the next step.