Meta Ads Library Scraper — Facebook & Instagram Ads
Pricing
from $6.00 / 1,000 ads
Meta Ads Library Scraper — Facebook & Instagram Ads
Scrape Meta Ad Library for Facebook and Instagram ads — copy, CTAs, links, creatives, dates, platforms, spend and reach when shown. Hard resultsLimit cap and honest onlyTotal counts. Residential proxy required. Unofficial; not affiliated with Meta.
Pricing
from $6.00 / 1,000 ads
Rating
0.0
(0)
Developer
Bakos Bence
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
3
Monthly active users
13 days ago
Last modified
Categories
Share
What is Meta Ads Library Scraper — Facebook & Instagram Ads?
Scrape ads from Meta Ad Library across Facebook and Instagram. Keyword search or page URLs, hard resultsLimit, honest onlyTotal mode, drop-in fields for apify/facebook-ads-scraper.
What Meta Ads Library Scraper — Facebook & Instagram Ads returns
| Field | What it is | Example |
|---|---|---|
pageName | Page name | Nike |
adArchiveId | Ad archive ID | 1234567890123456 |
isActive | Active | true |
How do I scrape ads from Meta Ad Library across Facebook and Instagram?
- Click Try for free.
- Fill Ad Library or Facebook Page URL, Count only (no ad rows) and Active status (if not in URL).
- Set Max ads per URL.
- Click Start.
- Open the dataset and download it, or send it on with one of the integrations below.
A search can match more than one row. The run keeps the first matches, up to Max ads per URL.
Saved runs on the Tasks tab:
- Count total Facebook ads without downloading creatives
- Scrape Facebook Ads in Australia | Ad Library
- Scrape Facebook Ads in Austria | Ad Library
- Scrape Facebook Ads in Belgium | Ad Library
- Scrape Facebook Ads in Brazil | Ad Library
- Scrape Facebook Ads in Canada | Ad Library
- Scrape Facebook Ads in Egypt | Ad Library
- Scrape Facebook Ads in France | Ad Library
Input
The Input tab lists every field. The sample input is:
{"startUrls": [{"url": "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&search_type=keyword&q=nike"}],"resultsLimit": 5,"onlyTotal": false,"activeStatus": "","sorting": "","isDetailsPerAd": false,"includeAboutPage": false,"enrichWithEcommerceData": false}
Output
One row looks like this. scrapedAt, when present, is the time that run finished.
{"adArchiveId": "1234567890123456","pageName": "Nike","pageId": "15087023444","isActive": true,"publisherPlatform": ["FACEBOOK","INSTAGRAM"],"startDate": 1735689600,"snapshot": {"body": "Just Do It.","title": "New collection","linkUrl": "https://www.nike.com/","ctaText": "Shop Now","images": ["https://..."],"videos": []},"sourceUrl": "https://www.facebook.com/ads/library/?...&q=nike","scrapedAt": "2026-08-28T11:00:00+00:00"}
How much does Meta Ads Library Scraper — Facebook & Instagram Ads cost?
You pay for each row saved. Platform usage is included. Current rates are on the Pricing tab.
How pay-per-event billing works: Actors in Store.
Related Actors
| Actor | When to use it |
|---|---|
| Instagram Profile Scraper | You need public profile metadata for brands running the ads |
| Instagram Comments Scraper | You pair paid creatives with organic post comment research |
| Apify Facebook Ads Scraper | You need the official Store leader with full EU reach enrichment |
Integrations
Excel
- Click Try for free, run this Actor, and wait until the run finishes.
- Open that run and go to its dataset.
- Choose Export, then Excel.
To download the newest successful run later without opening the dataset:
- In Apify Console, open Settings → API & Integrations and copy an API token.
- On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
- Run that task once.
- Paste this into a browser. Replace
TASK_IDandYOUR_TOKEN.
https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=xlsx&clean=true&status=SUCCEEDED&token=YOUR_TOKEN
Anyone with that URL can read the rows. Treat the token like a password.
Dataset export formats: Dataset items.
Google Sheets
- In Apify Console, open Settings → API & Integrations and copy an API token.
- On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
- Run that task once so there is a successful dataset.
- In a Google Sheet, click cell A1 and paste this formula. Replace
TASK_IDandYOUR_TOKEN.
=IMPORTDATA("https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=csv&clean=true&status=SUCCEEDED&token=YOUR_TOKEN")
- Wait until the columns fill. Sheets refreshes
IMPORTDATAon its own. Use Data → Data connectors → Refresh when you want it now.
Anyone with that URL can read the rows. Treat the token like a password.
API, Python, and Node
- In Apify Console, open Settings → API & Integrations and copy an API token.
- Send this request. Replace
YOUR_TOKEN.
curl -X POST "https://api.apify.com/v2/acts/bakos_bence~meta-ads-library/runs?token=YOUR_TOKEN&waitForFinish=120" \-H "Content-Type: application/json" \-d '{"startUrls":[{"url":"https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&search_type=keyword&q=nike"}],"resultsLimit":5,"onlyTotal":false,"activeStatus":"","sorting":"","isDetailsPerAd":false,"includeAboutPage":false,"enrichWithEcommerceData":false}'
- From the response, copy
defaultDatasetId. - Fetch the rows:
https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=true&token=YOUR_TOKEN
The API tab on this page has the same call in JavaScript, Python, and the CLI. Client docs: JavaScript, Python, Run an Actor.
Zapier
- In Apify Console, open Settings → API & Integrations and copy an API token. You will only need it if the connection asks for a token. The usual path is the access prompt below.
- In Zapier, create a Zap. For the action, search Apify and choose Run Actor.
- Connect your Apify account and choose Allow Access.
- Select Meta Ads Library Scraper — Facebook & Instagram Ads.
- Paste this input:
{"startUrls": [{"url": "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&search_type=keyword&q=nike"}],"resultsLimit": 5,"onlyTotal": false,"activeStatus": "","sorting": "","isDetailsPerAd": false,"includeAboutPage": false,"enrichWithEcommerceData": false}
- Use a synchronous run only when the run will finish within 30 seconds. Otherwise leave it asynchronous, then add Fetch dataset items, or start the Zap with the Finished Actor run trigger.
- Test the step. Add the next action, such as Google Sheets, Slack, or email. Publish the Zap.
Triggers and the other actions: Zapier integration.
Make
- In Apify Console, open Settings → API & Integrations and copy an API token.
- In a Make scenario, add a module and search Apify.
- Create the connection with OAuth, or paste the API token.
- Choose Run an Actor. Select Meta Ads Library Scraper — Facebook & Instagram Ads. Set Run synchronously to Yes.
- Paste this input:
{"startUrls": [{"url": "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&search_type=keyword&q=nike"}],"resultsLimit": 5,"onlyTotal": false,"activeStatus": "","sorting": "","isDetailsPerAd": false,"includeAboutPage": false,"enrichWithEcommerceData": false}
- Add Get Dataset Items. Set the dataset ID to the default dataset ID from the Run an Actor module.
- Add the module that should receive the rows, such as Google Sheets Bulk add rows, and map the fields.
If the run can take longer than your Make plan lets a synchronous module wait, start with Watch Actor Runs instead, then add Get Dataset Items. Details: Make integration.
n8n
- In Apify Console, open Settings → API & Integrations and copy an API token.
- On n8n Cloud, open the nodes panel, search Apify, and install the node. On a self-hosted n8n, go to Settings → Community Nodes → Install and enter
@apify/n8n-nodes-apify. - Create a credential. Search Apify API, paste the token, and save. On n8n Cloud you can use Apify OAuth2 instead.
- Add an Apify node. Choose Run Actor. Pick Meta Ads Library Scraper — Facebook & Instagram Ads. Turn on Wait for finish.
- Set the input to:
{"startUrls": [{"url": "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&search_type=keyword&q=nike"}],"resultsLimit": 5,"onlyTotal": false,"activeStatus": "","sorting": "","isDetailsPerAd": false,"includeAboutPage": false,"enrichWithEcommerceData": false}
- Add another Apify node, Get Dataset Items. Set the dataset ID to the
defaultDatasetIdfrom the Run Actor node. - Add the next node, such as Google Sheets, and map the fields.
Full setup, triggers, and the AI-tool node: n8n integration.
Power BI
- In Apify Console, open Settings → API & Integrations and copy an API token.
- On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
- Run that task once.
- Open Power BI Desktop → Home → Get data → Web.
- Paste this URL. Replace
TASK_IDandYOUR_TOKEN.
https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=csv&clean=true&status=SUCCEEDED&token=YOUR_TOKEN
- When asked how to sign in, choose Anonymous → Connect.
- Check that the preview is a table, then Load.
- After you publish, schedule refresh against that same URL.
A 401 means the token is missing or you did not choose Anonymous. Anyone with the URL can read the rows.
Looker Studio
Looker Studio does not open a private CSV URL on its own. Put the rows in a Google Sheet first.
- In Apify Console, open Settings → API & Integrations and copy an API token.
- On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
- Run that task once.
- In a Google Sheet, click cell A1 and paste this formula. Replace
TASK_IDandYOUR_TOKEN.
=IMPORTDATA("https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=csv&clean=true&status=SUCCEEDED&token=YOUR_TOKEN")
- Wait until the columns fill.
- In Looker Studio, choose Create → Report → Google Sheets and pick that spreadsheet.
- After the next run, refresh the Sheet, then refresh the Looker data source.
For a single snapshot, open the finished run, export CSV from the dataset, and use File upload in Looker Studio.
Tableau
- In Apify Console, open Settings → API & Integrations and copy an API token.
- On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
- Run that task once.
- In Tableau Desktop 2023.3+, install the REST API connector from Tableau Exchange.
- Choose Connect → To a Server → REST API.
- Paste this URL. Replace
TASK_IDandYOUR_TOKEN. Set the response format to CSV.
https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=csv&clean=true&status=SUCCEEDED&token=YOUR_TOKEN
- Leave credentials empty. The token is already in the URL.
- Create an extract. Refresh it after the next run.
For a single snapshot, open the finished run, export CSV from the dataset, and connect Tableau to that file.
Qlik
- In Apify Console, open Settings → API & Integrations and copy an API token.
- On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
- Run that task once.
- In Qlik Cloud or Qlik Sense, choose Add data → REST.
- Set the method to GET and paste this URL. Replace
TASK_IDandYOUR_TOKEN.
https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=csv&clean=true&status=SUCCEEDED&token=YOUR_TOKEN
- Set the response type to CSV.
- Test the connection, pick the table, and load.
- Reload the app after the next run.
For a single snapshot, open the finished run, export CSV from the dataset, and add that file in Qlik.
Webhooks
- In Apify Console, open this Actor and go to Integrations.
- Add a webhook for Actor run succeeded.
- Set the URL of the service that should receive the run.
- When a run finishes, the payload includes
defaultDatasetId. Read the rows with this URL. ReplaceDATASET_IDandYOUR_TOKEN. The token is under Settings → API & Integrations.
https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=true&token=YOUR_TOKEN
Event types and the payload: Webhooks.
AI tools
- Open the API tab on this Actor.
- Copy the MCP config shown there.
- Paste it into the MCP client (Claude, Cursor, or another client that accepts that config).
- Sign in when the client asks. It can then run this Actor.
Setup for each client: Apify MCP server.
Airtable, Google Drive, Slack, and Snowflake are listed in Integrations.
FAQ
Limitations (v0.1)
isDetailsPerAdandincludeAboutPage: schema accepted; enrichment is stubbed (see README).onlyAdsNewerThan/onlyAdsOlderThan/enrichWithEcommerceData: accepted for clone compatibility; set filters in the Ad Library URL instead.- GraphQL
doc_idrotates — if extraction returns zero rows across retries, rebuild may be needed.
Can I schedule this?
Yes. Save a Task from the input you want, then add a schedule in Console. After each successful run, this URL returns that task’s newest dataset. Replace TASK_ID and YOUR_TOKEN (the token is under Settings → API & Integrations).
https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=json&clean=true&status=SUCCEEDED&token=YOUR_TOKEN
This Actor is not affiliated with Meta.