Brand safety checks with an API: screen creators and content
A brand safety check reads a creator's recent captions, video transcripts and comment threads, tags anything in your risk categories, and weights each hit by severity and age before a human decides. A deep screen of 100 creators across X, TikTok and Instagram takes about 5,300 credits on ScrapeIO, about $9.96 on the $47 pack.
A brand safety check asks one question before a partnership: is there anything in this creator's public content that the brand would not want next to its name? You answer it by reading their posts, what they say in their videos, and how their audience talks, then scoring what you find. The data takes a few dozen API calls per creator. The judgment stays with a person.
Who does this and why
- Brand and legal teams sign off on creator partnerships and sponsorships.
- Agencies screen a roster before pitching it to a client.
- Creator marketplaces review sellers and applicants at scale.
This complements creator vetting, which checks whether reach and engagement are real. Brand safety checks the content itself.
The data you need
| Step | Platform | Endpoint | Credits |
|---|---|---|---|
| 1. Posts and captions | X | X user posts | 1 per page |
| 1. Posts and captions | TikTok, Instagram | TikTok profile videos, Instagram user posts | 1 per page |
| 1. Posts and captions | YouTube, Threads | YouTube channel videos, Threads user posts | 1 per page |
| 2. What they say on camera | TikTok, YouTube | TikTok transcript, YouTube transcript | 1 |
| 2. What they say on camera | Instagram, X | Instagram transcript (2), X post transcript (1) | 1 or 2 |
| 3. The audience around them | TikTok, YouTube | TikTok comments, YouTube comments | 1 per page |
| 4. Their other accounts | Cross-platform | find social profiles | 10 |
Worked example: 100 creators, deep screen
Per creator: 5 pages of X posts (5), 5 pages of TikTok videos (5), 3 pages of Instagram posts (3), transcripts of 30 TikTok videos (30), and comments on 10 posts (10). That is 53 credits per creator.
- 100 creators x 53 = 5,300 credits = $9.96 on the $47 pack.
- Monthly re-screen of the 20 you sign, new content only: 1 page per platform (3) + 8 transcripts (8) = 11 credits each, 220 credits a month, about $0.41.
Transcripts are most of the cost and most of the value. Much of the risk in video content is said, not written.
A risk taxonomy
Agree the categories and severities with the brand before you screen anyone. A starting set:
| Category | Examples | Default severity |
|---|---|---|
| Hate and harassment | Slurs, targeted abuse, pile-ons | 5 |
| Violence and dangerous acts | Threats, dangerous challenges | 5 |
| Adult content | Explicit material, links to it | 4 |
| Misinformation | Health or election claims your brand cannot stand behind | 4 |
| Drugs, alcohol, gambling | Promotion, especially to young audiences | 3 |
| Profanity | Heavy swearing | 1 or 2, depending on brand |
| Competitor ties | Recent paid work for a direct competitor | 2 |
| Politics | Partisan content, if the brand stays neutral | 1 to 3 |
The score
Recent behavior matters more than a post from five years ago. Weight each hit by severity and age:
risk = sum( severity_i x 0.5 ^ (age_days_i / 180) )
A severity-4 post from today adds 4. The same post from 180 days ago adds 2, and from a year ago, 1. Then sort creators into three bands: green (no hits above severity 2), amber (score under your threshold, with hits a person should read) and red (any severity-5 hit in the last year, or a score above threshold). Every amber and red result gets a human review with the links in front of them.
Comments are scored separately. A creator is not responsible for every commenter, but a comment section full of abuse tells you what the brand would be standing next to.
Code: find risky transcript lines
import requests, re
KEY = "YOUR_KEY"
H = {"x-api-key": KEY}
TERMS = re.compile(r"\b(casino|betting|vape|giveaway scam)\b", re.I)
vids = requests.get("https://scrapeio.com/v3/tiktok/profile/videos",
params={"handle": "creatorhandle"}, headers=H, timeout=60).json()
for v in vids["data"]["items"][:10]:
t = requests.get("https://scrapeio.com/v1/tiktok/video/transcript",
params={"url": v["url"]}, headers=H, timeout=60).json()
text = str(t.get("data", ""))
for m in TERMS.finditer(text):
start = max(0, m.start() - 80)
print(v["url"], "...", text[start:m.end() + 80].replace("\n", " "))
A keyword list finds candidates fast and cheaply. Pass each hit, with its surrounding text, to an LLM or a person to judge context.
Pitfalls
- Context. Sarcasm, quoting someone to criticize them, and reclaimed slang all trip keyword lists. Never auto-reject on a keyword alone.
- Language. Run lists in every language the creator posts in, or use a multilingual classifier.
- Absence is not proof. Deleted posts are not visible. A clean screen means nothing was found in what is public now.
- Fairness. Give the creator a chance to explain an old post before you drop them. People change.
- Untrusted text. When an LLM reads posts or comments, any of them can contain instructions aimed at it. Keep the model's job narrow: classify, do not act.
Run it from an AI agent
The creator-vetting skill includes brand-safety checks. With the MCP server connected:
Screen @creatorhandle on TikTok and X for a family snack brand.
Read the last 100 X posts and transcripts of the last 20 TikToks.
Tag anything in these categories: hate, violence, adult, gambling,
alcohol, misinformation. Give each hit a link, a quote and a date.
Do not decide; list the evidence.
Asking for evidence instead of a verdict keeps the decision with you and makes the agent's mistakes easy to spot.
Doing it with ScrapeIO
Posts, transcripts and comments from X, TikTok, Instagram, YouTube and Threads come from one key with the same field names. A deep screen is about 53 credits per creator, and private or missing accounts are not charged.
100 free credits, no card. Credits never expire.
Get API key