Meta Ads
Search Meta's public Ad Library by keyword, advertiser or Facebook Page, and get each ad's copy, call to action, images and videos as JSON for AI nodes.
The Meta Ads node searches Meta's public Ad Library and returns the matching Facebook and Instagram ads as a JSON list. Each ad carries the advertiser's Page, the ad copy, headline, call to action, landing link, image and video links, run dates and whether it is still active. Wire the list into a Generate Text - Any LLM node for competitive analysis, or into Extract Field to run one generation per ad.
When to use it
- Research how competitors advertise a product category, with a keyword search.
- Follow the newest creatives of a specific brand, by advertiser or Facebook Page.
- Start a creative workflow from real ad copy and visuals, then remix them.
- Send yourself a recurring digest of new ads, with a Schedule Trigger.
Quick start
Add the node
Press Tab on the canvas and choose Automate › Get Content › Meta Ads.
Choose what to search
Open the settings panel and choose Search by: Keyword, Advertiser or Facebook pages. Fill in the keyword, pick the advertisers, or paste the Page addresses.
Set the filters
Set Ads per source, Period and Ad status. The Run button shows the price of the request.
Run it and use the ads
Click Run. The node card shows one ad at a time, and the Results tab lists them all. Connect the JSON output to a Generate Text - Any LLM node or to Extract Field.
Search by
| Mode | What you give it | What it does |
|---|---|---|
| Keyword | A Keyword, up to 100 characters | Searches the words inside the ads, not the advertiser's name. |
| Advertiser | Up to 5 Advertisers | Type an advertiser's name, click Find and pick the right Facebook Page from the matches. The verified Page is usually the right one. The run pulls only those advertisers' ads. The lookup costs no credits. |
| Facebook pages | Up to 5 Facebook Page URLs | One Page address per line, such as https://www.facebook.com/nike. https:// is optional. An advertiser's Ad Library link also works. |
The Keyword and Facebook Page URLs fields accept {}. The text of a node connected to the Keyword / Page URLs input replaces {}, so a Text or List node can drive the search.
In Advertiser mode, you can also connect a Text or List node to the input instead of picking advertisers. Each line is then matched to a Facebook Page when the node runs: the verified match, or else the first match. The result lists the Pages it found in resolvedAdvertisers.
Settings
| Setting | Default | What it does |
|---|---|---|
| Ads per source | 20 | How many ads to return for the keyword or for each Page, from 1 to 100. |
| Period | Last 30 days | Last 24 hours, Last 7 days, Last 30 days or All time, by the ad's start date. |
| Ad status | Active | Active, Inactive or All. |
| Country | All countries | Or one country, to keep only the ads delivered there. |
| Platforms | No filter | Keep only the ads delivered on the platforms you select: Facebook, Instagram, Audience Network, Messenger, WhatsApp and Threads. No selection, or all six, means no filter. |
| Creative format | No filter | Keep only the ads whose creative is Vertical · phone, Square or Horizontal · web, measured from the creative's own pixels. Fewer ads than requested may come back. |
| AI analysis | Off | Reads every returned ad as an expert ad analyst: asset type, format, visual hooks, audiences, graphic identity, copywriting hooks, selling points, call to action and a summary. Choose the Analysis model and an optional Focus (optional) line, for example what you sell. |
| Copy all videos to your library | Off | Copies the video of every returned ad into your library, not only the featured ad's video. |
Inputs
| Input | Required | What to connect |
|---|---|---|
| Keyword / Page URLs | No | Text: a keyword in Keyword mode, Page addresses one per line in Facebook pages mode, or advertiser names one per line in Advertiser mode. |
Outputs
| Output | What it carries |
|---|---|
| JSON | The whole list of ads. Run a node once per ad with a List node or Extract Field. |
| Ad copy | The featured ad's headline and body copy. |
| Creative image | The featured ad's first image, or its video poster. |
| Creative video | The featured ad's first video. |
The featured ad is the one shown on the node card. Choose it with the thumbnail strip, the ‹ › arrows or a click on a row in the Results tab. A workflow run features the first returned ad.
Each ad in the JSON output has these fields:
{
"adArchiveId": "866569929827744",
"adLibraryUrl": "https://www.facebook.com/ads/library/?id=866569929827744",
"pageName": "Nike",
"pageId": "15087023444",
"startDate": "2026-09-01T07:00:00.000Z",
"endDate": null,
"isActive": true,
"platforms": ["FACEBOOK", "INSTAGRAM"],
"text": "Just do it.",
"title": "Air Max",
"caption": "nike.com",
"ctaText": "Shop now",
"linkUrl": "https://nike.com/airmax",
"images": ["https://…/creative.jpg"],
"videos": ["https://…/creative.mp4"],
"videoPreviews": ["https://…/poster.jpg"],
"collationCount": 3
}Each ad also has a format and a creatives list, with the kind, link, size and format of each creative. When AI analysis is on, each analysed ad has an analysis object with the analyst's findings.
Results
The node card features one ad: its creative, advertiser, headline, copy, format, platforms, run dates and call to action. The Results tab of the settings panel lists every ad, in a List, Grid or Raw JSON view, and can filter them by format. Every row links to the ad's own page in the Ad Library.
A run that returns nothing, or fails, keeps the previous good results on the node. When you change an input, those results are marked as stale until the next run.
Creatives in your library
Meta's image and video links expire within days. After every run, the node copies each returned ad's images and video posters into your library. They count toward your storage, and they stay out of the media picker until you click Save to library on an ad.
The featured ad's video is copied only when the Creative video output is connected, because videos are large. Turn on Copy all videos to your library to copy the video of every returned ad. When your storage is full, the ads keep their original Meta links, which expire, and the run still succeeds. Use those creatives in the same workflow rather than keeping the links.
Credits
The price depends on the number of ads you request: Ads per source times the number of sources, rounded up to the next tier. A keyword search is one source, and each Page or picked advertiser is one source. The Run button on the node shows the exact price before you run it.
- The requested batch is charged. A narrow period or a quiet keyword may return fewer ads than requested.
- AI analysis adds a charge for every ad, by the tier of the analysis model: economy, standard or premium. It is reserved for the whole requested batch and settled for the ads actually analysed. An ad the model failed on, or one that a long run had no time left for, is refunded.
- Advertisers from the input. When a Text or List node supplies the advertiser names, the number of sources is known only when the node runs. Until then, the estimate on the node assumes one source.
- The advertiser lookup is free.
On a self-hosted install, the Meta Ads node needs the web-scraping key described in Provider keys, or a connection to Nodaro Cloud.
Tips
- Study retired creatives. Set Ad status to Inactive with a long period to see the ads an advertiser has already stopped.
- Fan out per ad. Use Extract Field on
imagesortextbefore a List node to run one generation per ad. - Use the video posters. The
videoPreviewsof a brand's video ads make good reference frames for new concepts.
Troubleshooting
| Problem | Cause and fix |
|---|---|
| A keyword returns ads from the wrong brands. | Keyword searches the words inside the ads, not the advertiser. Use Advertiser or Facebook pages to follow one brand. |
| Find shows no advertiser. | Try the exact name of the brand's Facebook Page. |
| Fewer ads came back than requested. | The period, the status or the Creative format filter left fewer matching ads. Widen the period or remove a filter. |
| A creative link stopped working. | It was a Meta link that expired, because the creative could not be copied into your library, for example when your storage was full. Run the node again. |
From the API
POST /v1/meta-ads-scrape runs the node from code. The API has two modes, keyword search and Pages: send a picked advertiser as its Facebook Page address. A run that copies every video and analyses every ad often takes longer than the limit of about 100 seconds on a single HTTP request, so send "respondAsync": true. The call then answers at once with a jobId, and you read the ads from the completed job with GET /v1/jobs/:id.
Without the flag, the request stays open until the run is done. A run that outlasts the request limit is cut off on the way back, although the job completes and is charged. See Run a single node and Jobs.
Frequently asked questions
What does the Meta Ads node return?
A JSON list of ads from Meta's public Ad Library. Each ad has the advertiser's Page, the ad copy, headline, call to action, landing link, image and video links, run dates and whether it is still active.
Can I see the ads of one specific brand?
Yes. Set Search by to Advertiser, type the brand's name, click Find and pick its Facebook Page, up to 5 advertisers. Or set Search by to Facebook pages and paste up to 5 Page addresses, one per line.
How much does the Meta Ads node cost?
The price depends on how many ads you request, Ads per source times the number of sources, rounded up to a tier. AI analysis adds a charge for every ad, by the tier of the analysis model. The Run button shows the exact price.
Why did I get fewer ads than I asked for?
A narrow period, a quiet keyword or a Creative format filter can find fewer ads than requested. The run is charged for the requested batch.
Do the image and video links expire?
Meta's own links expire within days. After each run, the node copies each ad's images and video posters into your library, so the links in the result keep working. Videos are copied for the featured ad when the video output is connected, or for every ad when you turn that on.
Related
Web Scrape
Extract Field
Generate Text - Any LLM
Schedule Trigger
Lists and batching
Last updated on
Site Capture
Capture a web page at phone width and get its sections as stills in page order, a full-page image, the section map and the exact figures the page writes.
Video URL
Paste a YouTube, TikTok, Instagram, Facebook or X link and get the video as a file for trimming, captions, analysis and remixing. Choose part of long videos.