WebsiteCategorizationAPI
Home
Demo Tools - Categorization
Website Categorization Text Classification URL Database Taxonomy Mapper
Demo Tools - Website Intel
Technology Detector Quality Score Competitor Finder
Demo Tools - Brand Safety
Brand Safety Checker Brand Suitability Quality Checker
Demo Tools - Content
Sentiment Analyzer Context Aware Ads
Resources
API Documentation Pricing Login
Try Categorization

Contextual Audience Segmentation

Infer who would read a page from the content itself. One API call returns the demographics, purchase intent, life stage and B2B firmographics of a URL's likely audience — built entirely from what is on the page, with no cookies, no device IDs, no consent strings and no user tracking of any kind. The audience data your buyers lost with the third-party cookie, rebuilt from the one signal that never expires: the content.

1,667+
personas across 33 interest categories
102M
domain database for batch segmentation
5
segment families per URL: demographics, intent, life stage, B2B, context
0
cookies, IDs or user tracking involved
Request a Sample Report API Documentation

The problem: the audience data supply chain lost its raw material

For fifteen years, audience segments were manufactured from third-party cookies: observe a user across thousands of sites, roll the behavior up into "in-market SUV shoppers, 35–44, upper-middle income," and sell the segment to any buyer with a DSP seat. That manufacturing process has been dismantled — by the browsers, by the regulators, and finally by the data vendors themselves — and nothing with equivalent granularity replaced it. Media buyers still plan against audiences; the pipes that used to deliver them are gone.

Behavioral segments lost their signal source

Safari's ITP and Firefox's ETP have blocked third-party cookies since 2019–2020, Chrome ships user-level tracking restrictions of its own, and GDPR and CCPA make consent for cross-site profiling expensive and leaky. The observation layer behavioral segments were built on simply no longer covers the open web.

Cookie-era data vendors have no migration path

The segments agencies licensed from Oracle BlueKai, Lotame and their peers were cookie products end to end. Oracle did not port its taxonomy to a cookieless substrate — it exited the advertising data business entirely in 2024. The taxonomy buyers know how to plan against outlived the infrastructure that populated it.

First-generation contextual is too coarse

Plain IAB categorization tells a buyer the page is about "Automotive." A buyer who used to target "in-market luxury SUV shoppers, 35–44, household income $100k+" cannot plan a campaign against a category label. Contextual v1 replaced a person-level product with a topic-level one and called it parity. Buyers noticed.

First-party data stops at your own front door

Publisher first-party data is real but describes only the users of that publisher's own properties. It cannot extend a segment across the open web, cannot describe prospecting inventory you have never touched, and cannot give a DSP a consistent audience definition across a hundred thousand domains.

The solution: read the audience off the page

The insight behind contextual audience segmentation is old, obvious and newly practical: content predicts its own audience. A step-by-step mortgage-calculator guide is read, overwhelmingly, by people in-market for a mortgage — you do not need to follow anyone around the web to know that. A comparison of enterprise data platforms is read by IT decision makers at companies large enough to buy one. A sleep-training article is read by new parents. Magazine publishers priced their ad pages on exactly this logic for a century; large language models finally make it computable per URL, at web scale, with confidence values attached. Our API runs two complementary engines and returns both in a single response.

Engine 1: Static persona mapping

Every page we classify already carries IAB content categories. A curated, deterministic map translates those categories into 1,667+ personas across 33 interest groups — a page classified under Technology & Computing > Cloud Computing maps to Infrastructure Engineer, Data Scientist, DevOps Engineer, Cloud Computing Specialist and their neighbors.

  • Deterministic and auditable — the same category always yields the same personas, and every persona in the response cites the category it was mapped_from
  • No LLM cost per lookup — the mapping is a table join, which is why it is precomputable across the full 102M-domain corpus
  • Stable for planning — segment definitions do not drift between calls, so packaged deals built on them stay consistent

Browse the full structure on the audience segmentation taxonomy and personas pages.

Engine 2: LLM contextual inference per URL

An LLM reads the actual page content and infers the audience attributes a category label cannot carry, each with an explicit confidence value:

  • demographics — likely age ranges with per-range confidence, gender skew, income level, education level
  • purchase_intent — the in-market categories the content implies, with confidence per category
  • life_stage — new parent, first-time homebuyer, retirement planning, career-focused and other stage signals
  • b2b_signals — whether the content is B2B, which roles it targets, what company size and industries it addresses
  • content_context — content type, writing style, reading level, brand mentions, price signals and sentiment, so activation systems know what kind of page carries the audience

This is the engine that turns "Personal Finance" into "45–54, upper-middle income, actively researching retirement products" — page by page, from evidence in the text.

The two engines answer different failure modes. Static mapping gives you scale, determinism and zero marginal cost — but only interest-level resolution. LLM inference gives you demographic and intent resolution — but costs compute per page. Returned together, a buyer gets Oracle-grade segment descriptions with a fully documented, page-level derivation, and not a single user was observed to produce any of it.

One call, five segment families

POST a URL, get the complete audience profile. The example response below is taken directly from a real API run against a live enterprise page — trimmed for length, values unedited.

Request (curl)
curl -X POST "https://www.websitecategorizationapi.com/api/audience/segment.php" \
  -d "query=https://www.snowflake.com/en/blog/" \
  -d "api_key=YOUR_API_KEY"
Request (Python)
import requests

resp = requests.post(
    "https://www.websitecategorizationapi.com/api/audience/segment.php",
    data={"query": url, "api_key": API_KEY},
    timeout=180,
)
profile = resp.json()["audience_segmentation"]

if profile["b2b_signals"]["is_b2b_content"] and \
   "IT manager" in profile["b2b_signals"]["target_role"]:
    icp_inventory.add(url, profile)
Response — a real B2B page, trimmed
{
  "url": "https://www.snowflake.com/en/blog/",
  "audience_segmentation": {
    "personas": [
      {"persona": "Infrastructure Engineer",
       "mapped_from": "Technology & Computing > Computing >
                       Internet > Cloud Computing",
       "source": "static_mapping"},
      {"persona": "Data Scientist", "source": "static_mapping"},
      {"persona": "DevOps Engineer", "source": "static_mapping"}
    ],
    "demographics": {
      "likely_age_groups": [
        {"range": "35-44", "confidence": 0.7},
        {"range": "45-54", "confidence": 0.6}
      ],
      "likely_gender_skew": {"male": 0.7, "female": 0.3},
      "likely_income": {"level": "upper-middle", "confidence": 0.6},
      "likely_education": {"level": "master", "confidence": 0.7}
    },
    "purchase_intent": [
      {"category": "technology", "confidence": 0.8}
    ],
    "life_stage": [
      {"stage": "career-focused", "confidence": 0.7}
    ],
    "b2b_signals": {
      "is_b2b_content": true,
      "confidence": 0.9,
      "target_role": ["data scientist", "IT manager",
                      "business analyst"],
      "target_company_size": "enterprise",
      "industry_focus": ["technology", "finance", "healthcare"]
    },
    "content_context": {
      "content_type": "blog_article",
      "writing_style": "technical",
      "reading_level": "advanced",
      "brand_mentions": ["Snowflake"],
      "price_signals": "none",
      "sentiment": "neutral"
    }
  },
  "status": 200
}

The static engine mapped the page's Cloud Computing classification to concrete practitioner personas, while the LLM independently confirmed the same audience from the text itself: B2B content at 0.9 confidence, aimed at data scientists and IT managers at enterprise-scale companies, read by an advanced-level, 35–54, upper-middle-income audience. Two engines, one derivation trail, no tracking data anywhere in the pipeline.

The five segment families

Every URL is described along five independent dimensions, so a segment can be as simple as one persona or as specific as "in-market for real estate, first-time homebuyer life stage, 25–34, non-B2B, product-review content with price signals." The full browsable structure lives on the audience segmentation taxonomy page.

FamilyScopeExample segments
Demographics Age ranges with per-range confidence, gender skew, income level, education level 35–44 / 45–54; upper-middle income; master's-level education; 70/30 male skew
Purchase intent ~50 in-market categories spanning automotive, real estate, software, travel, finance, education, healthcare and retail in-market: luxury vehicles; in-market: mortgages; in-market: enterprise software; in-market: travel booking
Life stage ~21 life-stage signals inferred from what the content is actually for new parent; first-time homebuyer; empty nester; retirement planning; career-focused; recently engaged
B2B firmographics ~25 segments by target role, company size and industry, plus an explicit is_b2b flag with confidence IT decision makers; enterprise; marketing leaders at mid-market SaaS; healthcare industry buyers
Content context Content type, writing style, reading level, brand mentions, price signals, sentiment product review with price signals; technical blog, advanced reading level; positive-sentiment brand coverage

Reading the response fields

personas[] & mapped_from

Each of the 1,667+ personas cites the IAB category that produced it and its source (static mapping vs LLM), so segment membership is fully explainable to a buyer or an auditor.

purchase_intent[].confidence

Intent is only asserted where the content supports it: a mortgage calculator earns a high-confidence real-estate intent signal; a general news page earns none rather than a guess.

life_stage[]

Life-stage inference captures the moments money actually moves — new baby, new house, retirement — the segments cookie vendors charged the highest CPMs for.

b2b_signals

is_b2b_content with confidence, plus target roles, company size and industry focus — the fields that let a B2B marketer treat the open web like an account-based media plan.

content_context

Content type, writing style, reading level, brand mentions, price signals and sentiment describe the page carrying the audience — the difference between a review with prices and a thought-leadership essay matters at activation time.

Confidence everywhere

Every inferred attribute carries a confidence value. Set your own thresholds per use case: strict for guaranteed audience deals, permissive for prospecting reach.

How teams use it

Publishers: seller-defined audiences

Segment your own URL inventory and package cookieless audience deals — "in-market home improvement, 35–54" as a PMP built from your pages' content, with a per-URL derivation you can show the buyer instead of a black-box segment name.

DSPs & curation platforms

Build contextual-audience segments that span the open web: one consistent audience definition applied across every domain in the bidstream, refreshed as content changes, with no dependency on IDs, consent rates or browser policy.

Agencies: plan by audience, not category

Slice the precomputed 102M-domain audience database by segment family — every domain whose audience skews affluent 45+, every domain with retirement-planning intent — and hand planners a list, not a taxonomy.

B2B marketers: find your ICP's reading list

Query for pages read by your ideal customer profile — role, company size, industry — via the ICP domain index, and run open-web programmatic that behaves like account-based marketing.

Frequently asked

How accurate is this compared to behavioral segments?

It answers a slightly different — and legally much safer — question. Behavioral data claimed to describe an individual and was often stale or probabilistically stitched; contextual segmentation describes the aggregate audience of a page, which is exactly the unit media is bought in. Because no individual is ever observed, profiled or stored, the output is privacy-safe by construction: no consent banners, no GDPR/CCPA data-subject exposure, no dependence on browser policy. For page-level media decisions, aggregate audience is the honest resolution — and it does not degrade as tracking coverage shrinks.

What is the coverage — do you compute this in real time?

Both. The static persona layer is precomputed across the 102M-domain database, and the most-trafficked domains additionally carry full LLM-inferred profiles, so bulk lookups against the head of the web return instantly as a database product. For the long tail — a URL list from a placement report, a new publisher's sitemap — the real-time endpoint fetches, classifies and segments on demand.

How are personas actually assigned? Is it all LLM guesswork?

No. Personas come from a deterministic IAB-category-to-persona map — the same input always yields the same personas, each citing its mapped_from category. The LLM layer is used only for attributes a category cannot express (demographics, intent, life stage, firmographics), it only asserts what the content gives clear signals for, and every inferred value carries a confidence score you can threshold. Nothing in the response is unexplained.

How does this relate to your IAB categorization and quality scores?

It sits on top of them. IAB content categorization supplies the category input that drives persona mapping, and quality scores tell you whether the page carrying a valuable audience is inventory worth buying. One fetch of the page powers all three layers, so a single API integration yields category, quality and audience together.

Related resources

See your own inventory segmented

Send us a URL list — a placement report, a sitemap, a supply-path sample — and get back the full five-family audience profile for every page, in the same format shown above.

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.