IAB Categories
Valossa AI classifies video content using the IAB (Interactive Advertising Bureau) Content Taxonomy, enabling contextual advertising and content profiling at both the video level and within time-based sections.
Supported Standards
Valossa supports 510 different IAB Content Taxonomy categories based on:
- IAB Content Taxonomy version 2.2 (primary)
- Some categories from versions 1 and 2 of the standard
For the full list of IAB categories, see the IAB Tech Lab Content Taxonomy v2.2.
Detection Types
IAB category data is available through two detection types:
| Detection Type | Scope | Has Occurrences | Description |
|---|---|---|---|
topic.iab | Entire video | No | IAB categories that describe the overall video content |
topic.iab.section | Time-based sections | Yes | IAB categories for specific sub-sections of the video, with time codes |
There is also topic.general which provides non-IAB topic classifications for the entire video.
Language Support
IAB categories are inferred from visual information and spoken language. The source modalities depend on the video's language setting:
- English (en-US): Scene-level IAB 2.2 from speech + OCR + visual combined
- Other languages: Scene-level IAB 2.2 from visual content only
- All languages: Video overview IAB 2.1 categories from audio-visual topics
See Supported Languages for the complete language-feature matrix.
Reading IAB Categories
Video-Level Categories (topic.iab)
{
"t": "topic.iab",
"label": "Personal Finance",
"ext_refs": {
"iab": {
"labels_hierarchy": ["Personal Finance"],
"id": "IAB13"
}
}
}
Section-Level Categories (topic.iab.section)
{
"t": "topic.iab.section",
"label": "Business and Finance",
"occs": [
{
"id": "2266",
"ss": 32,
"se": 46,
"shs": 2,
"she": 4,
"c": 0.214,
"a": {
"sources": ["speech"],
"ad_score": {
"max": 0.214,
"s_max": 32.0
}
}
}
],
"a": {
"sources": ["speech"],
"ad_score": {
"max": 0.214,
"s_max": 32.0
}
},
"ext_refs": {
"iab": {
"labels_hierarchy": ["Business and Finance"],
"id": "52",
"iab_taxonomy_version": "2.2",
"is_scd_category": false
}
}
}
Key Fields in ext_refs.iab
| Field | Description |
|---|---|
id | IAB category identifier |
labels_hierarchy | Array of category labels from broad to specific |
iab_taxonomy_version | Version of the IAB taxonomy (e.g., "2.2") |
is_scd_category | Boolean indicating if this is a Special Category Data (SCD) category |
Special Category Data (SCD)
For IAB taxonomy version 2.2, each category includes an is_scd_category boolean field. SCD categories relate to sensitive matters relevant to consumer privacy in advertising contexts.
"ext_refs": {
"iab": {
"labels_hierarchy": ["Sensitive Topics", "..."],
"id": "...",
"iab_taxonomy_version": "2.2",
"is_scd_category": true
}
}
Use this field to filter out sensitive categories when building ad targeting pipelines.
Ad Score
The Ad Score feature (available with Valossa AdScout subscriptions) provides a numeric suggestion for matching specific advertisements to specific video sections.
Ad Score data appears in the ad_score field within both topic.iab.section occurrences and detection-level attributes:
| Field | Description |
|---|---|
ad_score.max | Maximum Ad Score value for this category |
ad_score.s_max | Time position (seconds) where the maximum Ad Score occurs |
The Ad Score helps answer: "How suitable is this video section for placing an ad in this IAB category?"
Code Example
Python: Extract IAB Categories
import json
with open("core_metadata.json", "r") as f:
metadata = json.load(f)
# Video-level IAB categories
for det_type, det_ids in metadata["detection_groupings"]["by_detection_type"].items():
if det_type.startswith("topic.iab"):
for det_id in det_ids:
detection = metadata["detections"][det_id]
iab_info = detection["ext_refs"]["iab"]
print(f"Type: {detection['t']}")
print(f" Label: {detection['label']}")
print(f" IAB ID: {iab_info['id']}")
print(f" Hierarchy: {' > '.join(iab_info['labels_hierarchy'])}")
# Check for SCD
if iab_info.get("is_scd_category"):
print(" WARNING: Special Category Data")
# Check for Ad Score
if "a" in detection and "ad_score" in detection.get("a", {}):
ad = detection["a"]["ad_score"]
print(f" Ad Score: {ad['max']} at {ad['s_max']}s")
Related Resources
- IAB & Ad Suitability Guide -- Step-by-step guide for advertising use cases
- Detection Categories -- Tag categories for individual detections