← Guides

Competitive intelligence

How to pull every ad a competitor is running on Facebook

You want to see what a competitor is actually spending money on — the creatives, the hooks, the copy, how long each ad has been running, and which placements they bought.

Meta publishes all of it. The Ad Library is public by law, but the site is built for browsing one ad at a time. This endpoint reads the same data as structured JSON, so you can diff a competitor's creative rotation week over week instead of screenshotting it.

The endpoint

Facebook

Facebook Ad Library

Company Ads

GET /v1/facebook-ad-library/company-ads

All active and historical Facebook ads for a given advertiser page.

1 credit per call · $1.50 per 1,000 calls · failed calls never charged

Full endpoint reference

Make the call

Put your key in FASTFETCHZ_KEY. The target below is a real one — it works as written.

curl
curl "https://api.fastfetchz.com/v1/facebook-ad-library/company-ads?target=Nike" \
  -H "X-API-Key: $FASTFETCHZ_KEY"

What comes back

Trimmed to the fields that matter. The full payload carries more.

200 application/json
{
  "success": true,
  "service": { "platform": "Facebook Ad Library", "name": "Company Ads" },
  "credits_charged": 1,
  "data": {
    "ads": [
      {
        "ad_archive_id": "1094836722018341",
        "page_name": "Nike",
        "body": "Winter running, sorted. Shop the Pegasus 41.",
        "start_date": "2026-07-14",
        "end_date": null,
        "is_active": true,
        "publisher_platforms": ["facebook", "instagram"],
        "display_format": "video",
        "media": [{ "type": "video", "url": "https://cdn.example.com/ads/peg41.mp4" }],
        "cta_type": "SHOP_NOW",
        "link_url": "https://example.com/pegasus-41"
      }
    ]
  },
  "cursor": "eyJvZmZzZXQiOjMwfQ"
}

Getting more than one page

One call returns up to 30 ads and a cursor. Pass it back for the next 30 and repeat until no cursor is returned. Most brands run tens to low hundreds of ads at once, so a full pull is usually a handful of calls, not thousands.

For ongoing monitoring, do not re-pull the archive every day. Pull once, store ad_archive_id, then pull page one daily and stop as soon as you hit an ID you already have.

two calls
# Page 130 most recent ads
curl "https://api.fastfetchz.com/v1/facebook-ad-library/company-ads?target=Nike" \
  -H "X-API-Key: $FASTFETCHZ_KEY"
# -> { "data": { "ads": [ ... ] }, "cursor": "eyJvZmZzZXQiOjMwfQ" }

# Page 2
curl "https://api.fastfetchz.com/v1/facebook-ad-library/company-ads?target=Nike&cursor=eyJvZmZzZXQiOjMwfQ" \
  -H "X-API-Key: $FASTFETCHZ_KEY"

What it costs

300 ads ÷ 30 per call = 10 calls
10 calls × 1 credit = 10 credits
$0.03

Priced at the Starter pack rate: 10,000 credits for $29.00. Larger packs cost less per credit.

What the Ad Library does and does not publish

You get the creative, the copy, the CTA, the destination link, the run dates and the platforms. You do not get spend, impressions or targeting for commercial ads — Meta only publishes those for political and social-issue advertising. Any tool claiming exact spend for a retail brand is estimating.

end_date: null with is_active: true means the ad is still running. That pair is the single most useful signal in the payload: an ad that has been live for months is an ad that works.

Match the advertiser, not the brand name

Large brands run dozens of regional Pages with near-identical names. Search by name to find the advertiser, confirm the page_name on the ads you get back, and then keep using that exact value so your weekly diffs stay comparable.

Endpoints you will probably want next