Influencer #ad Disclosure Checker: FTC & ASA avatar

Influencer #ad Disclosure Checker: FTC & ASA

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Influencer #ad Disclosure Checker: FTC & ASA

Influencer #ad Disclosure Checker: FTC & ASA

Check influencer captions and video descriptions for missing or unclear #ad disclosures under FTC Endorsement Guides, the ASA/CAP 2026 influencer guide and CMA, plus German and French rules. Flags codes, affiliate links and gifted posts without a clear upfront label, with quote, rule link and fix.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Ultimate Foresight Inc

Ultimate Foresight Inc

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

Influencer Ad Disclosure Checker scans influencer captions, video descriptions and scripts for missing, unclear or hidden ad disclosures under the US FTC Endorsement Guides (16 CFR Part 255), the UK ASA/CAP influencer guide (4th edition, October 2026) and CMA guidance, plus German (Medienanstalten) and French (Law 2023-451) labelling rules. It spots discount codes, affiliate links, gifted products, "in partnership with" and other brand-relationship clues, then checks whether a clear label like #ad sits upfront. Each finding has the exact quote, a risk level per country, a link to the rule and a suggested fix. Click Start with the prefilled example to check three captions in a few seconds.

Text pre-check only. Not legal advice. The tool reads the text you give it. It cannot see images, video, audio, stickers or platform toggles (unless you pass the paid-partnership flag), and it never says a post is "compliant". A flag means "review this post".

What does the Influencer Ad Disclosure Checker do?

  • ✅ Finds commercial signals: discount codes ("use code SARAH20"), affiliate links (amzn.to, rstyle.me, liketk.it, shopmy.us, geni.us, Awin, CJ, Impact, Skimlinks and ?ref= links), "thanks @brand for sending", gifted/PR products, "in partnership with @brand", ambassador statements and paid-partnership flags from scrapers.
  • ✅ Finds labels and rates them per country: #ad, Ad |, Advertisement, Sponsored, #paidpartnership, #gifted, #affiliate, #collab, #sp, #spon, #partner, Werbung/Anzeige, Publicité/Collaboration commerciale, and the 2026 ASA list of labels to avoid.
  • ✅ Checks placement: a label after the first ~125 characters (hidden behind "more") or buried in a cluster of hashtags is flagged. In Germany it checks that "Werbung" or "Anzeige" comes first.
  • ✅ Flags "not sponsored" next to affiliate links or codes, and posts where you say the relationship is paid/gifted/affiliate but the text has no label.
  • ✅ Adds the French "Images retouchées / Images virtuelles" reminder when a French post mentions filters or AI images.
  • ✅ Ignores common false friends: dress code, QR code, source code, "AD 1200", adidas, "Ad-free", "gift ideas", "thanks to my mom" and more. In our tests on 1,400+ harmless texts (Wikipedia intros in English, German and French, plus product and job texts), the only flags were 2 encyclopedia sentences saying "sponsored by".
  • ✅ Takes plain texts, post objects, or a whole Apify dataset from an Instagram, TikTok, YouTube or X scraper. Captions, post URLs, platform and paid-partnership flags are detected automatically.

Risk levels: high, medium, low, none overall, plus riskByJurisdiction and disclosureStatus for each country you choose (us, uk, de, fr).

Who is it for?

  • Brands and in-house social teams checking creator posts before or after a campaign goes live.
  • Influencer marketing agencies and platforms auditing hundreds of posts for a client report.
  • Creators and managers who want a quick check that #ad is in the right place and worded for each country.
  • Compliance and legal teams who want a fast first pass with rule links, before human review.

How to check influencer posts for #ad disclosure

  1. Click Start with the prefilled example to see the output.
  2. Paste your own captions into Captions / post texts to check, or add Posts with your own IDs, platform and known relationship.
  3. Or pick the dataset of an Instagram, TikTok or YouTube scraper run. Leave Dataset fields empty to auto-detect the caption.
  4. Choose the rules (US, UK, Germany, France). If you know the posts are paid, set Brand relationship to "Paid post" so unlabeled posts are flagged even without clues in the text.
  5. Download as JSON, CSV or Excel and work through the rows sorted by riskLevel.

Input example

{
"texts": [
"Obsessed with my new serum from @glowco 😍 Use code SARAH20 for 20% off! #skincare #glow",
"#gifted these cosy slippers from @warmtoes and I never want to take them off",
"Ad | My honest review of the @runfast trainers after 100 miles. Not perfect, but comfy."
],
"jurisdictions": [
"us",
"uk"
],
"relationship": "unknown",
"visibleChars": 125,
"onlyFlagged": false
}

Output example

Real output from the prefill run on 2026-10-24 (shortened; every finding has full references and suggestions):

[
{
"itemNo": 1,
"ref": null,
"platform": null,
"textPreview": "Obsessed with my new serum from @glowco 😍 Use code SARAH20 for 20% off! #skincare #glow",
"riskLevel": "high",
"riskByJurisdiction": {
"us": "high",
"uk": "high"
},
"jurisdictionsApplied": [
"us",
"uk"
],
"languageHint": null,
"disclosureStatus": {
"us": "missing_label",
"uk": "missing_label"
},
"commercialSignals": [
{
"type": "discountCode",
"strength": "strong",
"quote": "Use code SARAH20"
}
],
"labelsFound": [],
"notSponsoredStatements": [],
"issueCount": 1,
"issues": [
{
"ruleId": "missing_disclosure",
"severity": "high",
"severityByJurisdiction": {
"us": "high",
"uk": "high"
},
"quote": "Use code SARAH20",
"explanation": "Commercial signal found (discountCode) but no ad label in the text.",
"references": [
{
"jurisdiction": "us",
"title": "FTC Endorsement Guides 16 CFR 255.5: disclose material connections clearly and conspicuously",
"url": "https://www.ecfr.gov/current/title-16/chapter-I/subchapter-B/part-255/section-255.5"
},
{
"jurisdiction": "us",
"title": "16 CFR 255.0(f): definition of 'clearly and conspicuously' (unavoidable on social media)",
"url": "https://www.ecfr.gov/current/title-16/chapter-I/subchapter-B/part-255/section-255.0"
},
{
"jurisdiction": "us",
"title": "FTC Disclosures 101 for Social Media Influencers (labels to use and avoid, placement)",
"url": "https://www.ftc.gov/business-guidance/resources/disclosures-101-social-media-influencers"
},
{
"jurisdiction": "uk",
"title": "ASA/CAP Influencers' guide to making clear that ads are ads (4th ed., Oct 2026: labels to use and avoid)",
"url": "https://www.asa.org.uk/resource/influencers-guide.html"
},
{
"jurisdiction": "uk",
"title": "CAP Code section 2 (rule 2.1/2.3: marketing communications must be obviously identifiable)",
"url": "https://www.asa.org.uk/type/non_broadcast/code_section/02.html"
},
{
"jurisdiction": "uk",
"title": "CMA guide for content creators: social media endorsements (DMCC Act 2024)",
"url": "https://www.gov.uk/government/publications/social-media-endorsements-guide-for-influencers"
}
],
"suggestion": {
"us": "Put a clear label such as 'Ad', '#ad', 'Advertisement' or 'Sponsored' (or 'Thanks to [Brand] for the free product') at the start of the caption, and also say it in the video.",
"uk": "Put 'Ad' / '#ad' (or 'Advert', 'Advertisement', 'Advertisement feature') at the very start, before anything else; don't rely on 'gifted', 'sponsored', 'affiliate', 'collab' or 'in partnership with'."
}
}
],
"notes": [],
"relationshipInput": "unknown",
"checkedAt": "2026-10-24T18:16:17+00:00",
"disclaimer": "Automated wording pre-check of the text only, based on publi..."
},
{
"itemNo": 2,
"textPreview": "#gifted these cosy slippers from @warmtoes and I never want to take them off",
"riskLevel": "high",
"riskByJurisdiction": {
"us": "medium",
"uk": "high"
},
"disclosureStatus": {
"us": "weak_label",
"uk": "unclear_label"
},
"labelsFound": [
{
"label": "gifted",
"quote": "#gifted",
"position": 0,
"inHashtagCluster": false,
"strength": {
"us": "weak",
"uk": "insufficient"
}
}
],
"issues": [
{
"ruleId": "unclear_label",
"severityByJurisdiction": {
"uk": "high"
},
"quote": "#gifted",
"explanation": "Label '#gifted' found, but: The ASA's 2026 guide now advises against 'Gift/Gifted' and 'PR' labels: research shows people don't understand them. Use 'Ad'.",
"suggestion": {
"uk": "Put 'Ad' / '#ad' (or 'Advert', 'Advertisement', 'Advertisement feature') at the very start, before anything else; don't rely on 'gifted', 'sponsored', 'affiliate', 'collab' or 'in partnership with'."
}
},
{
"ruleId": "weak_label",
"severityByJurisdiction": {
"us": "medium"
},
"quote": "#gifted",
"explanation": "Label '#gifted' found, but: FTC: 'Thanks to [brand] for the free product' is often enough if hard to miss; a bare 'gifted' tag is easy to miss or misread.",
"suggestion": {
"us": "Put a clear label such as 'Ad', '#ad', 'Advertisement' or 'Sponsored' (or 'Thanks to [Brand] for the free product') at the start of the caption, and also say it in the video."
}
}
]
},
{
"itemNo": 3,
"textPreview": "Ad | My honest review of the @runfast trainers after 100 miles. Not perfect, but comfy.",
"riskLevel": "none",
"riskByJurisdiction": {
"us": "none",
"uk": "none"
},
"disclosureStatus": {
"us": "clear_label_upfront",
"uk": "clear_label_upfront"
},
"labelsFound": [
{
"label": "ad",
"quote": "Ad",
"position": 0,
"inHashtagCluster": false,
"strength": {
"us": "clear",
"uk": "clear"
}
}
],
"issues": []
}
]

How much does it cost to check influencer posts?

Pay per result: $0.005 per post checked, plus a $0.00005 start fee per run and small Apify platform usage paid by you (the 3-post prefill run used about $0.0001 of platform usage). 100 posts cost about $0.50 and 1,000 posts about $5.00, plus platform usage. Turn on Only save posts with findings to pay only for flagged rows, and cap spend with the maximum cost per run setting.

Use it through the API, integrations or AI agents

  • Run and get results in one call: https://api.apify.com/v2/acts/ultimatemc~influencer-ad-disclosure-checker/run-sync-get-dataset-items
  • MCP for AI agents: https://mcp.apify.com?tools=ultimatemc/influencer-ad-disclosure-checker
  • Chain it after a scraper: pass that run's dataset ID, or call it from a webhook when the scraper finishes.

Rules and sources

Checked against these public texts on 2026-10-24:

How the checking works

The text is matched against a fixed rule set of labels, commercial signals and exclusions for false friends. Each label has a strength per country (clear, weak or not enough), and each finding has a severity per country. Placement is measured in characters from the start of the text and by detecting clusters of three or more hashtags. With language detection on, German and French rules only apply to German or French text. No AI and no external calls, so the same input always gives the same output.

FAQ

Does "none" mean the post is compliant?

No. It means the text has no commercial clues, or it has a clear upfront label. The tool can't see the relationship behind a post, the image, the video or what is said out loud. If you know a post is paid, set Brand relationship so missing labels are always flagged.

Why is "#sponsored" flagged for the UK but not the US?

The FTC lists "sponsored" as a clear label. The ASA's 2026 guide advises against "sponsored" and wants "Ad" or "Advert" instead. That's why results are split by country.

What about Instagram's "Paid partnership" tag?

If your scraper output has a field like isPaidPartnership or isSponsored, the tool uses it. The ASA says the platform tag alone may not be enough; the FTC says it may not be sufficient on its own either, so a text label is still suggested.

Can it check TikTok or YouTube videos?

It checks the caption, description or script text you give it. For videos it reminds you that the disclosure should also be said or shown in the video.

Is it AI?

No. Deterministic rules, so results are repeatable and auditable.

Limitations

  • Text only. Labels in images, stickers, video, audio or platform toggles are not seen unless passed as a flag.
  • It can't know the real relationship behind a post; clues like codes and affiliate links are strong hints, not proof.
  • English, German and French wording; other languages are not checked.
  • Not every country is covered. Rules and guides change; check the dates in the sources section.

Other tools by Ultimate Foresight

Missed disclosure or false alarm? Open an issue on the Issues tab with the text, and we'll review the rule.