Facebook hub

Facebook Company Ads API

Pull every Ad Library creative for one advertiser — page id or company name in, structured ad rows out.

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

1 credit per successful request.

About this endpoint

When you already know the advertiser, keyword search is the wrong tool. You want that page's active and inactive creatives, filtered by country or date, on a schedule that lands next to Instagram and TikTok rows in one warehouse. Meta's Ad Library UI can show one brand at a time; it does not give you a stable REST contract.

`GET /v1/facebook/ad-library/companies/ads` requires either `pageId` or `companyName` (not both required — one is enough). Optional filters: `country` (`ALL` or a two-letter code), `status` (`all`, `active`, `inactive`), `mediaType`, `language`, `sortBy` (`impressions`, `most-recent`), `startDate` / `endDate` as `YYYY-MM-DD`, and `cursor` for the next page. The response puts ads under `data.ads`, pagination under `data.page` (`hasMore`, `nextCursor`), and `data.lookupStatus` as `found` or `not_found`. A `found` lookup can still return an empty `ads` array when filters match nothing. Bill from `meta.creditsCharged`.

This route lists ads for one company or page. Keyword sweeps use `GET /v1/facebook/ad-library/ads/search`. Name-to-page discovery uses `GET /v1/facebook/ad-library/companies/search`. A single archive id or Ad Library URL uses `GET /v1/facebook/ad-library/ads`. Same Social Fetch API key for all of them.

Facebook Company Ads API FAQ

What does the Facebook Company Ads API return?

Ads for the requested page or company under data.ads, pagination under data.page (hasMore, nextCursor), and data.lookupStatus (found or not_found). Each ad can include id, Ad Library url, page summary, campaign collation, isActive, publisher platforms, dates, categories, countries, impressions, spend, and creative assets when Meta exposes them. Responses use the shared Social Fetch envelope with meta.requestId and meta.creditsCharged.

How do I list Facebook Ad Library ads for a company?

Send GET /v1/facebook/ad-library/companies/ads with x-api-key and either pageId or companyName. Optionally add country, status, mediaType, language, sortBy, startDate, endDate, and cursor. Read data.ads, data.page, and data.lookupStatus in the JSON response. Full parameter rules are in the API docs.

How much does Facebook company ads listing cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth. Each paginated page is a separate billed request.

Is this the same as Facebook Ad Library keyword search?

No. GET /v1/facebook/ad-library/companies/ads lists ads for one page id or company name. GET /v1/facebook/ad-library/ads/search finds ads across the library by keyword and filters. Use company ads when you already know the advertiser; use keyword search when you do not.

What is data.lookupStatus?

found means the company or page resolved for the request. not_found means it did not. found can still include an empty data.ads array when no creatives match your filters.

Can I filter company ads by country, status, or media?

Yes. country accepts ALL or a two-letter country code. status accepts all, active, or inactive. mediaType accepts all, image, video, meme, image-and-meme, or none. You can also pass language, sortBy, and startDate / endDate. Keep the same identifier and filters when you paginate with cursor.

How does pagination work on Facebook company ads?

When data.page.hasMore is true, pass data.page.nextCursor as the cursor query param on the next request. Each page is billed separately via meta.creditsCharged.

Do I need a Meta ads account or Marketing API token?

No. You authenticate to Social Fetch with an API key. The route reads public Ad Library company/page results; it does not act on behalf of an ads account you manage.