Cookieless Audiences
Home Database API Docs Pricing Live Demo Taxonomy
Use Cases
Media Planning by Persona Inventory Curation & Deal Packaging Seller-Defined Audiences CDP & Analytics Enrichment ABM Account Profiling
Industries
SSPs DSPs Publishers Agencies Curation Platforms
Company
Contact Login
Try Live Demo

Brand Safety & Suitability

Keyword blocklists fail both ways: they miss crises lacking the blocked word and suppress quality journalism containing it. This API reads each page in full — categories, quality, MFA, COPPA, and sentiment — so you can replace binary blocking with suitability tiers that protect the brand without killing reach.

703
IAB content categories, full-page classification
44
web filtering categories for safety floors
5
suitability tiers instead of one blocklist
2
extra risk layers: MFA and COPPA
Try the Brand Safety Demo Request a Sample API Documentation

The problem: blunt instruments, expensive misses

Every brand-safety incident follows the same script: an ad beside content no one would place it near, a screenshot circulates, spend freezes. The industry reflex — longer keyword blocklists — causes the opposite failure at far larger scale.

Adjacency incidents keep happening

Keyword filters miss dangerous pages because the blocked word is absent, and flag harmless ones because it appears. Only whole-page understanding separates the two.

Over-blocking defunds the news

Words like "shooting" or "attack" strip ads from award-winning journalism. Brands lose the high-attention news audience; publishers lose revenue — and spend flows to blander, worse inventory.

Suitability frameworks need page-level nuance

Industry frameworks distinguish an absolute floor from graduated risk levels per category. A keyword cannot tell glorification of violence from reporting on it — a page-level classifier can.

Safe-looking pages carry hidden risk

A page can pass every content check and still be a made-for-advertising farm wasting budget — or a child-directed site creating COPPA liability. Categories alone miss commercial and regulatory risk.

The solution: classify the page, grade the risk, keep the reach

Four products, one URL in. Together they replace "is this word present?" with "what is this page, how risky is it, and at what tier should we buy it?"

1. Full-page classification, two taxonomies

One call to POST /api/iab/iab_web_content_filtering.php classifies the page into the IAB Content Taxonomy (703 categories) and the Web Filtering taxonomy — 44 categories covering floor content every framework excludes. Because the model reads meaning, crisis reporting and glorification land in different categories.

2. Suitability and quality scoring — not binary blocking

Quality scores grade clickbait, trustworthiness, design, and deception so you can express policy as tiers, not walls. Explore live results in the suitability dashboard and the URL classification dashboard, or test single pages with the Brand Safety Checker and Quality Score tools.

3. Commercial and regulatory layers: MFA and COPPA

MFA detection (POST /api/mfa/score.php) protects the budget from arbitrage inventory that passes every content check. COPPA compliance scoring (POST /api/coppa/score.php) flags child-directed pages where behavioral advertising creates regulatory exposure — two risks no keyword list can see.

4. Sentiment for tone-sensitive placements

Some placements are category-safe but tone-wrong: a celebration campaign beside a somber obituary is technically "News" and completely unsuitable. The Sentiment Analyzer adds a tone dimension, also available in segmentation's content_context block. For planning-scale screening, the 102M-domain database carries pre-built classifications.

A suitability decision flow in code

Classification first, floors second, graduated risk last. The result is a tier your DSP or ad server can act on — and that a marketer can read.

Classify a page (curl)
curl -X POST "https://www.websitecategorizationapi.com/api/iab/iab_web_content_filtering.php" \
  -d "query=https://example.com/news/article" \
  -d "api_key=YOUR_API_KEY" \
  -d "data_type=url"
Response shape
{
  "classification": [
    {"category": "News and Politics > Crime", "confidence": 0.91},
    {"category": "News and Politics > Law", "confidence": 0.64}
  ],
  "language": "en",
  "status": 200
}

The classifier tells you this page is reporting about crime — a suitability decision — not promoting it, which would surface in the web-filtering floor categories instead.

Categorize → floor check → tier (Python)
import requests

BASE = "https://www.websitecategorizationapi.com"

def post(path, extra=None):
    data = {"query": url, "api_key": API_KEY}
    data.update(extra or {})
    return requests.post(BASE + path, data=data, timeout=180).json()

def suitability_tier(url):
    page = post("/api/iab/iab_web_content_filtering.php",
                {"data_type": "url"})
    cats = {c["category"] for c in page["classification"]
            if c["confidence"] >= 0.6}

    # 1. Floor: never monetize, for any brand
    if cats & FLOOR_CATEGORIES:        # adult, weapons, hate...
        return "FLOOR"

    # 2. Commercial + regulatory layers
    mfa = post("/api/mfa/score.php")
    if mfa["mfa_score"] >= 66:
        return "HIGH_RISK"             # budget safety
    coppa = post("/api/coppa/score.php")
    if coppa_flags_child_directed(coppa):
        return "REGULATED"             # contextual ads only

    # 3. Graduated suitability, per brand policy
    if cats & brand_policy.high_risk:  # e.g. graphic news
        return "HIGH_RISK"
    if cats & brand_policy.medium:     # e.g. hard news, debate
        return "MODERATE"
    return "SUITABLE"

tier = suitability_tier(url)
apply_bid_multiplier(url, TIER_MULTIPLIERS[tier])

Suitability tiers, not a wall

Different brands draw the line differently: a toy brand and an energy-drink brand should not share a blocklist. Keep the floor absolute and let each campaign pick its tier — that is how you stay safe and stay in the news.

TierWhat lands hereTypical treatment
FLOORWeb-filtering floor categories: adult, hate, weapons, illegal contentNever monetize, for any brand, ever
HIGH RISKGraphic or breaking crisis coverage; MFA score 66+Exclude by default; opt-in only for risk-tolerant brands
MODERATEHard news, politics, contested social topicsSuitable for most brands; sensitive campaigns exclude
LOW RISKGeneral news, sport, business, entertainmentInclude; monitor tone via sentiment
SUITABLEAligned verticals, high quality scores, positive or neutral toneInclude; candidate for contextual PMPs

A marathon-day tragedy article tiers HIGH RISK for a sportswear launch — and stays monetizable for a brand that supports news. Journalism keeps its funding, your brand keeps its distance, each by explicit policy rather than keyword accident.

Frequently asked

How does this map to GARM-style suitability frameworks?

The web filtering taxonomy covers floor categories such frameworks exclude outright. The 703-category IAB classification provides resolution for graduated risk levels per sensitive topic. You receive categories and confidences — not a verdict — so you can encode your own mapping and change it per client without re-classifying.

Will this stop us from advertising in news altogether?

The opposite — that is the point. Whole-page classification distinguishes reporting from glorification, and sentiment separates somber from routine coverage. Buy journalism at the MODERATE and LOW RISK tiers instead of keyword-blocking the entire category. Reach comes back; only genuinely unsuitable pages leave the plan.

Can we run this at campaign scale, pre-flight?

Yes. Screen placement lists in batch through the APIs, or license the 102M-domain offline database to tier every domain before a single bid — the same architecture our DSP & SSP customers use. For one-off checks, the Brand Safety Checker gives an instant interactive answer.

Related resources

Audit your current blocklist

Send us your keyword blocklist and a placement sample. We return the pages you wrongly block, the risks you miss, and a tiered suitability map to replace both.

Try Categorization Request a Sample Read the API Docs
Stay in the loop

You are on the list!

We will send you updates that matter — no spam.