GET/v1/instagram/ads-by-page3 credits per ad

Instagram Ads by Page API

Every ad one advertiser is running or has run, from its Facebook Page URL or Meta Ad Library page URL. Each row is one ad with its copy, creatives, dates, status and the advertiser's Instagram handle.

Request

parametertypedescription
querystring, requiredA Facebook Page URL or a Meta Ad Library page URL.
limitintegerItems per page, up to 50 synchronously. Above that the call becomes a job.
cursorstringmeta.next_cursor from the previous page.
freshbooleanSkip the stored copy and read live, at the same price.
fieldsstringComma-separated field paths to keep.
formatjson, csvCSV flattens each item to one row.

Billing and freshness

3 credits per ad. Failed calls are never charged, and empty results are free up to 25 a day. Stored copies are refreshed every 3 hours.

What you get back

A page of ads. Each row carries the ad's id and Ad Library URL, its text and title, the call to action and landing URL, whether it is active, start and end dates, the platforms it runs on, image and video URLs, and the advertiser with its Instagram handle, follower count and verification when the Page has an Instagram account linked.

Reach and spend are passed through when the Ad Library publishes them; for most commercial ads they are null. Political and issue ads are the ones that carry them.

GET /v1/instagram/ads-by-page
curl "https://api.instadata.dev/v1/instagram/ads-by-page?query=https%3A%2F%2Fwww.facebook.com%2Fnike&limit=10" \
  -H "Authorization: Bearer ik_live_..."
{
  "data": [ … ],
  "meta": { "count": …, "limit": …, "next_cursor": "…" },
  "request_id": "req_01J…"
}

Fields

fieldtypenote
idstringThe Ad Library archive id.
urlstringThe ad's page in the Meta Ad Library.
textstring|nullPrimary ad copy.
titlestring|nullHeadline, when the format has one.
ctastring|nullCall-to-action type, e.g. SHOP_NOW.
link_urlstring|nullLanding URL.
is_activeboolean|nullWhether the ad is currently running.
started_atstring|nullISO 8601 start date.
ended_atstring|nullISO 8601 end date; null while running.
platformsstring[]|nullWhere the ad is delivered: instagram, facebook, messenger, audience_network.
advertiserobject{ handle, name }: the Facebook Page id and name behind the ad.
instagramobject{ handle, url, followers, verified } of the Page's linked Instagram account; nulls when none is linked.
pageobject{ alias, category, likes } of the Facebook Page.
imagesstring[]|nullCreative image URLs.
videosstring[]|nullCreative video URLs.
reachnumber|nullEU reach estimate when published.
spendnumber|string|nullSpend range when published, mostly on political ads.

Reach for it when

  • Ad intelligence: what a competitor is running right now, with the creatives and copy.
  • Creative research by category: search a keyword and read the ads that rank for it.
  • Finding brands that advertise on Instagram, by their handle, for outreach lists.

Not the right call when

  • You want a brand's organic posts. That is Profile Posts.
  • You want the creators a brand pays rather than the ads it runs. That is Brand Collaborations.

Things to know

3 credits per ad

Each ad row costs 3 credits, reflecting its upstream price. An empty result is free up to the daily allowance.

Platforms, not just Instagram

Rows carry every placement the ad runs on. Filter on the platforms field if you only want ads delivered on Instagram; most multi-placement ads include it.

The query parameter

A Facebook Page URL (https://www.facebook.com/nike) or a Meta Ad Library page URL.

Questions

Does every ad have an Instagram handle?

No. The handle, follower count and verification come from the Instagram account linked to the advertiser's Facebook Page. Pages with no linked account return nulls in the instagram object.

Are reach and spend included?

They are passed through when the Ad Library publishes them, which is mainly for political and issue ads and EU reach reporting. On most commercial ads both are null.

What does a call cost?

3 credits per ad returned. Failed calls cost nothing and empty results are free up to the daily allowance.

Related

GET /v1/instagram/ads-search The whole sheet