Instagram Ads Library Scraper (Meta Ad Library) avatar

Instagram Ads Library Scraper (Meta Ad Library)

Pricing

from $3.00 / 1,000 ad scrapeds

Go to Apify Store
Instagram Ads Library Scraper (Meta Ad Library)

Instagram Ads Library Scraper (Meta Ad Library)

Scrape ads that run on Instagram from the Meta Ad Library by keyword, advertiser page ID or Ad Library URL. Returns ad text, images and videos, carousel cards, links, call to action, start and end dates, days active and all platforms each ad runs on. No login.

Pricing

from $3.00 / 1,000 ad scrapeds

Rating

0.0

(0)

Developer

PulseData

PulseData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

This Instagram ads scraper exports ads that run on Instagram from the Meta Ad Library, which is where Meta publishes Instagram's ad library. You search by keyword, by advertiser page ID, or by pasting an Ad Library search URL, and get one row per ad with the ad text, headline, link, call to action, image and video URLs, carousel cards, start and end date, days active and the advertiser page. The actor asks Meta for Instagram placements only, so ads that run only on Facebook, Messenger, Threads or Audience Network are left out.

It works logged out, the same way the public Ad Library page does. You need no Instagram or Facebook account, no cookies and no Meta API token.

Features

  • Scrape all Instagram ads of an advertiser by numeric page ID, active and stopped.
  • Search the Instagram ad library by keyword in one country or all countries. Wrap the keyword in double quotes for the exact phrase.
  • Scrape a Meta Ad Library URL you set up in the browser. Its filters are used as they are, and the Instagram filter is added.
  • Filter Instagram ads by country, status and media type: active or inactive, images, videos, memes or text only.
  • Download Instagram ad creatives: image URLs, HD and SD video URLs with preview images, and every card of a carousel ad.
  • See how long each Instagram ad has been running with startDate, endDate and daysActive.
  • Export Instagram ads to CSV, Excel or JSON through the Apify dataset or API.

Use cases

  • Competitor research on Instagram: every creative a competitor runs on Instagram, when it started and whether it is still live. Ads that have run for months are usually the ones that convert.
  • Creative swipe files: ad copy, headlines, calls to action and video URLs for one product category, for example video ads for running shoes in the UK.
  • Agency pitches and audits: bring a prospect's current Instagram ads and run dates to the first meeting.
  • Influencer and brand monitoring: find ads that mention a brand name, including ads from creators and resellers.
  • Market scans by country: which brands advertise a product category on Instagram in Germany, France or the US right now.
  • Lead generation: check which companies advertise on Instagram at all. Pass a list of page IDs and set maxAdsPerQuery to 1.

Input

FieldWhat it does
queries (required)One search per line. A keyword such as running shoes, "running shoes" for the exact phrase, a numeric page ID such as 15087023444 for every Instagram ad of one advertiser, or a URL copied from facebook.com/ads/library.
countryISO code (US, DE, GB), a country name such as United Kingdom, or ALL. Default ALL.
activeStatusall (default), active or inactive.
mediaTypeall (default), image, video, meme or none (text only).
maxAdsPerQueryStop after this many ads per line. Default 100, 0 for no limit.
proxyConfigurationResidential Apify Proxy by default. Leave it as is; Meta keeps datacenter IPs on its challenge page.

Example input:

{
"queries": ["nike", "\"running shoes\"", "15087023444"],
"country": "US",
"activeStatus": "active",
"mediaType": "all",
"maxAdsPerQuery": 200
}

A pasted Ad Library URL keeps its own country, status and media filters. For example https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=DE&q=bakery&media_type=all returns active bakery ads in Germany that run on Instagram. If the URL carries its own platform filter, for example Facebook only, that part is removed, because this actor always returns Instagram ads.

How to find a page ID

Page names and vanity URLs such as instagram.com/nike or facebook.com/nike cannot be resolved without logging in, so an advertiser search needs the numeric page ID. Open the advertiser in the Ad Library in your browser and copy the number after view_all_page_id= in the address bar. Lines the actor cannot use are skipped with a note in the log, and the other lines still run.

Output

One item per ad:

{
"query": "15087023444",
"country": "ALL",
"adArchiveId": "1702938977100376",
"adLibraryUrl": "https://www.facebook.com/ads/library/?id=1702938977100376",
"pageId": "15087023444",
"pageName": "Nike",
"pageUrl": "https://www.facebook.com/nike/",
"pageLikeCount": 39505027,
"pageCategories": ["Sportswear", "Product/service"],
"isActive": true,
"startDate": "2025-04-07",
"endDate": "2026-10-09",
"daysActive": 550,
"publisherPlatforms": ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK", "MESSENGER"],
"displayFormat": "DPA",
"body": "Bring sports more fully into your day with the Nike App.",
"caption": "itunes.apple.com",
"linkUrl": "http://itunes.apple.com/app/id1095459556",
"ctaText": "Install now",
"ctaType": "INSTALL_MOBILE_APP",
"imageUrls": [],
"videos": [],
"cards": [
{
"title": "Nike Run Swift 3 Women's Road Running Shoes",
"linkUrl": "https://www.nike.com/ph/t/run-swift-3-road-running-shoes-2fHbzp/DR2698-002",
"linkDescription": "₱3,995",
"ctaText": "Install Now",
"imageUrl": "https://scontent..."
}
],
"spend": null,
"impressions": null,
"currency": null,
"scrapedAt": "2026-10-09T08:21:09.707Z"
}

publisherPlatforms lists every platform the ad runs on. Instagram is always one of them, and many ads also run on Facebook and other Meta platforms. Items also include title, linkDescription, pageProfilePictureUrl, collationId, collationCount, categories, disclaimer, reachEstimate, targetedOrReachedCountries and containsSensitiveContent. Each video has hdUrl, sdUrl and previewImageUrl; each carousel card has its own text, link, call to action and media. collationCount is the number of near-identical versions Meta groups under one ad. In our test runs 460 of 460 returned ads listed Instagram as a platform.

What Meta publishes

Meta shows the creative, the advertiser and the run dates for every ad in the library. Spend, impressions and reach are published as ranges only for political and issue ads; for ordinary commercial ads these fields are null. The actor reads the Ad Library search results and does not open each ad's detail page, so the EU reach and targeting breakdown Meta shows there is not included. Organic Instagram posts, reels and stories that are not ads are not in the Ad Library and are not returned.

Pricing

The actor is free to use until 23 October 2026. After that it is charged per ad returned plus a small fee per run, and the current price is always shown on the Pricing tab of this page. You can set a maximum cost per run in the run options; the actor then stops cleanly at that amount and keeps everything it collected.

FAQ

Do I need an Instagram account or a Meta API token? No. The actor reads the public Ad Library logged out and cannot see anything a logged-out visitor cannot see.

Why does it use the Facebook Ad Library? Meta runs one ad library for all its platforms. Instagram ads are listed there with Instagram as a placement, and the actor applies that filter for you.

Can I get all Instagram ads of an advertiser, not just 100? Set maxAdsPerQuery to 0. The actor follows the Ad Library's pagination until the last page. Large advertisers have thousands of ads.

How fast is it? In our test runs 100 ads took about 40 seconds and 300 ads from two searches took about a minute. All searches in one run share one browser session.

How long do the image and video links work? Meta signs media URLs and they expire after some days. Download the files soon after the run if you need them.

Can I get only ads that run on Instagram and nowhere else? The actor returns every ad that includes Instagram. Filter the dataset on publisherPlatforms if you want ads with Instagram as the only placement.

Can I schedule it or use it via API? Yes. Save a task with your queries, add an Apify schedule, and pull the dataset as JSON, CSV or Excel through the API, or send it to Google Sheets, Make, Zapier or n8n.

What can it not do? It does not return clicks, conversions, audience targeting or the EU reach breakdown, it does not download media files, and it does not read organic Instagram posts.

Is it legal to use this data? The actor returns public ad data only. If you process ads from individuals, you are responsible for handling that personal data lawfully, for example under the GDPR.

Example pages

Each of these opens a ready-made run with a real input: