LurkAPI
Docs · Ad Library ad details

Ad Library ad details

Full detail for one ad from Meta's Ad Library, by its id or URL.

1 credit per callFresh within 6 hoursMCP tool: facebook_ad
GEThttps://api.lurkapi.com/v1/facebook/adLibrary/ad

Example responseView as markdown

When to use this

Use it for one ad's full creative after a search: pass its ad_archive_id as id, or an Ad Library link as url. Top-level keys here are camelCase (adArchiveID, isActive).

Everything about a single ad: copy, every image and video, landing page, platforms and run dates. Unlike the list endpoints, top-level keys are camelCase (adArchiveID, pageName, isActive), publisherPlatform values are lowercase and snapshot.body is a plain string. Ads with several versions keep their creative in snapshot.cards.

Returns 404 not_found if the ad doesn't exist.

Parameters

All parameters go in the query string.

ParameterDescription
id
stringoptional
The ad's Ad Library id (ad_archive_id), e.g. 1016451784037642. Required unless you pass url.
Example
1016451784037642
url
stringoptional
An Ad Library link containing ?id=…, e.g. https://www.facebook.com/ads/library/?id=1016451784037642.
trim
booleanoptional
true drops image and video URLs (inside snapshot.cards too). All text is kept.
One of
truefalse
Default
false

Example request

Replace YOUR_API_KEY with your key, or set LURKAPI_KEY for the code. Get a free key.

Language

Example response

A real response from this endpoint, captured from the live API and trimmed to a couple of items. Strings over 96 characters (mostly signed media URLs) are cut short and end in ….

Show the example response (8 KB)
{
  "success": true,
  "credits_remaining": 997,
  "credits_charged": 1,
  "adArchiveID": "1016451784037642",
  "adid": null,
  "categories": [
    "UNKNOWN"
  ],
  "collationCount": null,
  "collationID": null,
  "containsDigitallyCreatedMedia": false,
  "containsSensitiveContent": false,
  "currency": "",
  "endDate": 1756364400,
  "endDateString": null,
  "fevInfo": null,
  "gatedType": "eligible",
  "hasUserReported": false,
  "hideDataStatus": "NONE",
  "impressionsWithIndex": {
    "impressionsText": null,
    "impressionsIndex": -1
  },
  "isAAAEligible": false,
  "isActive": true,
  "menuItems": [],
  "pageID": "15087023444",
  "pageIsDeleted": false,
  "pageName": "Nike",
  "publisherPlatform": [
    "facebook",
    "instagram"
  ],
  "reachEstimate": null,
  "regionalRegulationData": {
    "finserv": {
      "is_deemed_finserv": false,
      "is_limited_delivery": false
    },
    "tw_anti_scam": {
      "is_limited_delivery": false
    }
  },
  "reportCount": null,
  "snapshot": {
    "additional_info": null,
    "branded_content": null,
    "brazil_tax_id": null,
    "byline": null,
    "caption": "NIKE.COM",
    "cards": [
      {
        "body": "Get the gear that goes hard on and off the field.",
        "caption": "nike.com",
        "cta_text": "Shop Now",
        "cta_type": "SHOP_NOW",
        "image_crops": [],
        "link_description": "",
        "link_url": "https://www.nike.com/t/air-monarch-iv-mens-workout-shoes-extra-wide-p8qN…",
        "original_image_url": "https://scontent-sjc3-1.xx.fbcdn.net/v/t39.35426-6/509269099_74052692168…",
        "resized_image_url": "https://scontent-sjc3-1.xx.fbcdn.net/v/t39.35426-6/509269099_74052692168…",
        "title": "Nike Air Monarch IV ",
        "video_hd_url": null,
        "video_preview_image_url": null,
        "video_sd_url": null,
        "watermarked_resized_image_url": "",
        "watermarked_video_hd_url": null,
        "watermarked_video_sd_url": null
      },
      {
        "body": "Get the gear that goes hard on and off the field.",
        "caption": "nike.com",
        "cta_text": "Shop Now",
        "cta_type": "SHOP_NOW",
        "image_crops": [],
        "link_description": "",
        "link_url": "https://www.nike.com/t/tempo-shorts-toddler-shorts-Gx0CH3/267358-019?dplnk=member",
        "original_image_url": "https://scontent-sjc6-1.xx.fbcdn.net/v/t39.35426-6/508839160_17958205780…",
        "resized_image_url": "https://scontent-sjc6-1.xx.fbcdn.net/v/t39.35426-6/508839160_17958205780…",
        "title": "Nike Tempo Shorts ",
        "video_hd_url": null,
        "video_preview_image_url": null,
        "video_sd_url": null,
        "watermarked_resized_image_url": "",
        "watermarked_video_hd_url": null,
        "watermarked_video_sd_url": null
      },
      {
        "body": "Get the gear that goes hard on and off the field.",
        "caption": "nike.com",
        "cta_text": "Shop Now",
        "cta_type": "SHOP_NOW",
        "image_crops": [],
        "link_description": "",
        "link_url": "https://www.nike.com/t/air-monarch-iv-mens-workout-shoes-p8qNlT/415445-001?dplnk=member",
        "original_image_url": "https://scontent-sjc6-1.xx.fbcdn.net/v/t39.35426-6/509290535_73016820272…",
        "resized_image_url": "https://scontent-sjc6-1.xx.fbcdn.net/v/t39.35426-6/509290535_73016820272…",
        "title": "Nike Air Monarch IV ",
        "video_hd_url": null,
        "video_preview_image_url": null,
        "video_sd_url": null,
        "watermarked_resized_image_url": "",
        "watermarked_video_hd_url": null,
        "watermarked_video_sd_url": null
      },
      {
        "body": "Get the gear that goes hard on and off the field.",
        "caption": "nike.com",
        "cta_text": "Shop Now",
        "cta_type": "SHOP_NOW",
        "image_crops": [],
        "link_description": "",
        "link_url": "https://www.nike.com/t/air-monarch-iv-mens-workout-shoes-extra-wide-p8qN…",
        "original_image_url": "https://scontent-sjc6-1.xx.fbcdn.net/v/t39.35426-6/509359383_12428901607…",
        "resized_image_url": "https://scontent-sjc6-1.xx.fbcdn.net/v/t39.35426-6/509359383_12428901607…",
        "title": "Nike Air Monarch IV ",
        "video_hd_url": null,
        "video_preview_image_url": null,
        "video_sd_url": null,
        "watermarked_resized_image_url": "",
        "watermarked_video_hd_url": null,
        "watermarked_video_sd_url": null
      },
      {
        "body": "Get the gear that goes hard on and off the field.",
        "caption": "nike.com",
        "cta_text": "Shop Now",
        "cta_type": "SHOP_NOW",
        "image_crops": [],
        "link_description": "",
        "link_url": "https://www.nike.com/t/air-monarch-iv-mens-workout-shoes-p8qNlT/415445-102?dplnk=member",
        "original_image_url": "https://scontent-sjc6-1.xx.fbcdn.net/v/t39.35426-6/508595289_38944231908…",
        "resized_image_url": "https://scontent-sjc6-1.xx.fbcdn.net/v/t39.35426-6/508595289_38944231908…",
        "title": "Nike Air Monarch IV ",
        "video_hd_url": null,
        "video_preview_image_url": null,
        "video_sd_url": null,
        "watermarked_resized_image_url": "",
        "watermarked_video_hd_url": null,
        "watermarked_video_sd_url": null
      },
      {
        "body": "Get the gear that goes hard on and off the field.",
        "caption": "nike.com",
        "cta_text": "Shop Now",
        "cta_type": "SHOP_NOW",
        "image_crops": [],
        "link_description": "",
        "link_url": "https://www.nike.com/t/air-monarch-iv-mens-workout-shoes-extra-wide-p8qN…",
        "original_image_url": "https://scontent-sjc3-1.xx.fbcdn.net/v/t39.35426-6/509094198_14858974427…",
        "resized_image_url": "https://scontent-sjc3-1.xx.fbcdn.net/v/t39.35426-6/509094198_14858974427…",
        "title": "Nike Air Monarch IV ",
        "video_hd_url": null,
        "video_preview_image_url": null,
        "video_sd_url": null,
        "watermarked_resized_image_url": "",
        "watermarked_video_hd_url": null,
        "watermarked_video_sd_url": null
      }
    ],
    "country_iso_code": null,
    "cta_text": "Shop now",
    "cta_type": "SHOP_NOW",
    "disclaimer_label": null,
    "display_format": "DPA",
    "ec_certificates": [],
    "event": null,
    "extra_images": [],
    "extra_links": [],
    "extra_texts": [],
    "extra_videos": [],
    "images": [],
    "is_reshared": false,
    "link_description": null,
    "link_url": "https://www.nike.com/us/en_us",
    "page_categories": [
      "Sportswear"
    ],
    "page_id": "15087023444",
    "page_is_deleted": false,
    "page_like_count": 39514042,
    "page_name": "Nike",
    "page_profile_picture_url": "https://scontent-sjc6-1.xx.fbcdn.net/v/t39.35426-6/509357337_40881708814…",
    "page_profile_uri": "https://facebook.com/nike",
    "root_reshared_post": null,
    "title": "{{product.name}}",
    "videos": [],
    "body": "Get the gear that goes hard on and off the field.",
    "final_url": null
  },
  "spend": null,
  "startDate": 1750402800,
  "startDateString": null,
  "stateMediaRunLabel": null,
  "totalActiveTime": null,
  "url": null,
  "aaa_info": null
}

Response fields

Every field of a successful response. [] marks a list: a[].b is the b of each item in a. nullable fields can be null; optional fields can be missing.

Show all 101 fields
FieldTypeDescription
successtrueAlways true here; errors have success: false.
credits_remainingnumberYour balance after this call. On anonymous playground calls: free tries left today.
credits_chargednumberCredits this call cost; 0 on free endpoints. On anonymous playground calls: tries used (1).
adArchiveIDstringnullableThe Ad Library id. Pass it as id to the ad details endpoint.
adidstringnullableMeta's internal ad id. null in every response we've seen; use the Ad Library id.
pageIDstringnullableThe advertiser's Facebook page id. Pass it as pageId to the company ads endpoint.
pageNamestringnullableThe advertiser's page name.
isActivebooleanWhether the ad is running now.
startDatenumbernullableWhen the ad started running, Unix seconds (UTC).
endDatenumbernullableWhen the ad stopped, or its latest delivery date if still running, Unix seconds (UTC).
startDateStringstringnullableThe same date as ISO 8601 text when Facebook includes it; often null, so prefer the Unix seconds field.
endDateStringstringnullableThe same date as ISO 8601 text when Facebook includes it; often null, so prefer the Unix seconds field.
totalActiveTimenumbernullableSeconds the ad has run, when Facebook reports it; usually null.
publisherPlatformstring[]Where it ran, lowercase: facebook, instagram, audience_network, messenger, threads.
collationCountnumbernullableHow many near-identical versions are grouped under this ad. A high count means the advertiser is scaling it; null for a single version.
collationIDstringnullableId shared by the grouped versions of this ad; null for a single version.
snapshotobjectThe creative: copy, media, landing page and advertiser details (snake_case inside).
snapshot.page_idstringnullableThe advertiser's page id (same as the ad's).
snapshot.page_namestringnullableThe advertiser's page name as shown on the ad.
snapshot.page_profile_uristringnullableThe advertiser's Facebook page URL.
snapshot.page_profile_picture_urlstringnullableThe advertiser's profile picture, 60×60 px.
snapshot.page_like_countnumbernullableFollowers of the advertiser's page.
snapshot.page_categoriesstring[]Page categories, e.g. ["Outdoor & Sporting Goods Company"].
snapshot.page_is_deletedbooleanWhether the advertiser's page has been deleted.
snapshot.titlestringnullableHeadline under the creative; null when there is none.
snapshot.captionstringnullableDisplay link under the creative, usually the domain (e.g. HOKA.com).
snapshot.link_urlstringnullableLanding page the ad sends people to, UTM tags included.
snapshot.link_descriptionstringnullableText under the headline; null when there is none.
snapshot.cta_textstringnullableButton label, e.g. "Shop now".
snapshot.cta_typestringnullableButton type, e.g. SHOP_NOW, LEARN_MORE, NO_BUTTON.
snapshot.display_formatstringnullableCreative format, e.g. IMAGE, VIDEO, DCO (dynamic creative), DPA (dynamic product ad) or MULTI_IMAGES. For DCO and DPA ads the creative is in cards.
snapshot.imagesobject[]Image creatives. Empty for video and card-based ads, and with trim=true.
snapshot.images[].original_image_urlstringnullableFull-size image URL. Facebook CDN links expire after a few days; download what you need.
snapshot.images[].resized_image_urlstringnullable600 px image URL, good for thumbnails.
snapshot.images[].watermarked_resized_image_urlstringWatermarked copy; empty or null in every response we've seen.
snapshot.images[].image_cropsany[]Facebook internal field; an empty array in every response we've seen. Crop hints for the image.
snapshot.videosobject[]Video creatives. Empty for image and card-based ads, and with trim=true.
snapshot.videos[].video_hd_urlstringnullableHD video file URL; null if Facebook has no HD version.
snapshot.videos[].video_sd_urlstringnullableSD video file URL.
snapshot.videos[].video_preview_image_urlstringnullablePoster frame (still image) URL.
snapshot.videos[].watermarked_video_hd_urlstringnullableWatermarked copy; empty or null in every response we've seen.
snapshot.videos[].watermarked_video_sd_urlstringnullableWatermarked copy; empty or null in every response we've seen.
snapshot.cardsobject[]Carousel, dynamic-creative and product versions, each with its own copy and media. With trim=true the text stays and media URLs are null.
snapshot.cards[].titlestringnullableThis version's headline.
snapshot.cards[].bodystringnullableThis version's primary text.
snapshot.cards[].captionstringnullableThis version's display link, usually the domain.
snapshot.cards[].cta_textstringnullableButton label, e.g. "Shop now".
snapshot.cards[].cta_typestringnullableButton type, e.g. SHOP_NOW, LEARN_MORE.
snapshot.cards[].link_urlstringnullableThis version's landing page URL.
snapshot.cards[].link_descriptionstringnullableText under the headline; null when there is none.
snapshot.cards[].original_image_urlstringnullableFull-size image URL; null for video versions.
snapshot.cards[].resized_image_urlstringnullable600 px image URL; null for video versions.
snapshot.cards[].watermarked_resized_image_urlstringWatermarked copy; empty or null in every response we've seen.
snapshot.cards[].image_cropsany[]Facebook internal field; an empty array in every response we've seen. Crop hints for the image.
snapshot.cards[].video_hd_urlstringnullableHD video file URL; null for image versions.
snapshot.cards[].video_sd_urlstringnullableSD video file URL; null for image versions.
snapshot.cards[].video_preview_image_urlstringnullablePoster frame URL; null for image versions.
snapshot.cards[].watermarked_video_hd_urlstringnullableWatermarked copy; empty or null in every response we've seen.
snapshot.cards[].watermarked_video_sd_urlstringnullableWatermarked copy; empty or null in every response we've seen.
snapshot.bylinestringnullableLine under the page name, when shown; null or empty in most ads.
snapshot.disclaimer_labelstringnullable"Paid for by" line on political and issue ads; null otherwise.
snapshot.country_iso_codestringnullableFacebook internal field; null in every response we've seen. A country code on some ads.
snapshot.is_resharedbooleanWhether the ad reshares an existing post (see root_reshared_post).
snapshot.root_reshared_postanyThe original post when is_reshared is true; null otherwise.
snapshot.branded_contentanyPaid partnership details when the ad is branded content; null otherwise.
snapshot.additional_infoanyFacebook internal field; null in every response we've seen.
snapshot.brazil_tax_idanyAdvertiser tax id shown on ads under Brazil's rules; null otherwise.
snapshot.ec_certificatesany[]Facebook internal field; an empty array in every response we've seen.
snapshot.eventanyEvent details on event ads; null otherwise.
snapshot.extra_imagesany[]More images from dynamic creative; usually empty.
snapshot.extra_linksany[]More landing page URLs from dynamic creative; usually empty.
snapshot.extra_textsany[]More text variations from dynamic creative; usually empty.
snapshot.extra_videosany[]More videos from dynamic creative; usually empty.
snapshot.bodystringnullableThe ad's primary text as a plain string; null when the copy is only in cards.
snapshot.final_urlstringnullableFinal landing URL after redirects, when Facebook reports it; usually null.
categoriesstring[]Special ad categories Facebook assigned. ["UNKNOWN"] for ordinary ads.
currencystringCurrency code of spend (e.g. USD) when spend is reported; an empty string otherwise.
spendanySpend range, reported for political and issue ads only; null otherwise.
impressionsWithIndexobjectImpressions range, reported for political and issue ads only.
impressionsWithIndex.impressionsTextstringnullableThe range as Facebook shows it; null when not reported.
impressionsWithIndex.impressionsIndexnumberFacebook's bucket number for the range; -1 when not reported.
reachEstimateanyEstimated reach, which Facebook reports for some EU-delivered ads; null otherwise.
urlstringnullableAd Library link for this ad. Often null; build it as https://www.facebook.com/ads/library/?id=<Ad Library id>.
containsDigitallyCreatedMediabooleanWhether Facebook labels the creative as AI-generated or digitally altered.
containsSensitiveContentbooleanFacebook internal field; false in every response we've seen. Facebook's sensitive-content flag.
gatedTypestringFacebook internal field; ELIGIBLE (lowercase in ad details) in every response we've seen.
hasUserReportedbooleanWhether the viewing user reported the ad. Always false: we read the Ad Library logged out.
hideDataStatusstringFacebook internal field; NONE in every response we've seen.
isAAAEligiblebooleanFacebook flag, true on a few ads; meaning undocumented. Ad details' aaa_info holds the related data when present.
menuItemsany[]Facebook internal field; an empty array in every response we've seen.
pageIsDeletedbooleanWhether the advertiser's page has been deleted.
regionalRegulationDataobjectDelivery limits under regional ad rules.
regionalRegulationData.finservobjectFinancial-services ad rules.
regionalRegulationData.finserv.is_deemed_finservbooleanFacebook treats the ad as a financial-services ad.
regionalRegulationData.finserv.is_limited_deliverybooleanDelivery is limited under financial-services rules.
regionalRegulationData.tw_anti_scamobjectTaiwan's anti-scam ad rules.
regionalRegulationData.tw_anti_scam.is_limited_deliverybooleanDelivery is limited under Taiwan's anti-scam rules.
reportCountnumbernullableTimes the ad was reported, when disclosed; null in every response we've seen.
fevInfoanyFacebook internal field; null in every response we've seen.
stateMediaRunLabelanyLabel for ads run by state-controlled media; null otherwise.
aaa_infoanyExtra transparency data on some ads (see isAAAEligible); null in every response we've seen.

Caching and freshness

Responses are cached for up to 6 hours, so a repeat call within that window can return the same data. It still costs 1 credit.

Errors

Errors return { success: false, error, code, docs } with the HTTP status below. Validation errors, 401/402/429 rejections and 5xx failures are free; not_found is charged (how charging works). All error codes.

StatusCodeMeaning
401missing_api_keyNo API key. Send it in the x-api-key header.
401invalid_api_keyThe key is unknown or was revoked.
402insufficient_creditsNot enough credits for this call. Buy a pack or wait for tomorrow's top-up.
404not_foundThe endpoint, or the thing you asked for (ad, post, subreddit), doesn't exist. Charged when the platform was checked.
405method_not_allowedEndpoints take GET with query params.
429rate_limitedToo many calls at once. Wait for the retry-after seconds, then retry.
500internal_errorSomething broke on our side. Retry; 5xx errors are free.
502upstream_errorThe platform didn't give a usable answer. Retry; 5xx errors are free.
503upstream_busyAll our connections to the platform are busy. Retry in a few seconds; 5xx errors are free.
504upstream_timeoutThe platform took over 30 seconds to answer. Retry; timeouts are free.

Use it in Claude

Once LurkAPI is connected to Claude, this endpoint is the facebook_ad tool. Ask in plain English, for example:

Ask Claude
Use LurkAPI's facebook_ad with id "1016451784037642" and summarize what you find.

Claude calls facebook_ad with arguments like these, and each call costs 1 credit:

Tool arguments
{
  "id": "1016451784037642"
}

Tool results skip nulls and empty lists to save tokens, and trim defaults to true.