Skip to main content

Filtering By Brand Safety

With special permissions, you can filter podcasts and episodes by brand safety evaluations in several categories, including content that may contain spam, politics, or adult material. Brand safety data is available for the top 5000+ podcasts.

  • Episode brand safety is evaluated within the context of the entire episode transcript.
  • Podcast brand safety is the per-category average of a podcast's available episode brand safety data. Episodes that do not contain brand safety data are not used when calculating the average.

If you haven't already, in order to run the example queries below, you will need to get your authorization token. You can get it by following our "Your First Podchaser Query" guide.

Understanding Brand Safety Codes and Risk Levels

Podchaser uses enums for BrandSafetyCode and BrandSafetyRiskLevel properties. You'll use these enum values when you filter by a safety category's code (e.g. SPAM or PROFANITY) and risk level (e.g. CLEAN or HIGH).

These enum values can also be returned from within a podcast's brandSafety field or an episode's brandSafety field, using the code and level properties. When the enum value is returned by the API, it will be a lowercase string (e.g. spam or clean). The brandSafety fields for both podcasts and episodes are of the object type BrandSafety.

You can also return the description property in the BrandSafety object, to understand what content is covered for a specific BrandSafetyCode enum value.

Returning Brand Safety Values

Podcasts

In order to retrieve podcast brand safety values, you can use our podcasts query. A podcasts query for this data could look like the example below.

IMPORTANT: This query implements the powerScore filter in order to find podcasts that are most likely to contain average episode brand safety values. The powerScore filter also requires special permissions. You could instead replace this filter with brandSafetyFilter, to only return podcasts that have brand safety data. You can learn more about this filter below.

POST https://api.podchaser.com/graphql
query {
podcasts(filters: {powerScore: {from: 90, to: 100}}) {
data {
title,
description,
brandSafety {
code,
description,
value,
level,
}
}
}
}

This query will have a response similar to below (though shortened here for brevity):

{
"data": {
"podcasts": {
"data": [
{
"title": "The Bill Simmons Podcast",
"description": "HBO and The Ringer's Bill Simmons hosts the most downloaded sports podcast of all time, with a rotating crew of celebrities, athletes, and media staples, as well as mainstays like Cousin Sal, Joe House, and a slew of other friends and family members who always happen to be suspiciously available.",
"brandSafety": [
{
"code": "spam",
"description": "Spam & Scams",
"value": 0.04,
"level": "low"
},
{
"code": "adult",
"description": "Sex & Sexuality",
"value": 0.90,
"level": "high"
},
{
"code": "drugs",
"description": "Illegal Substances & Misuse",
"value": 0.01,
"level": "low"
},
...other safety values...
]
},
...other podcasts...
]
}
}
}

Episodes

You can get episode brand safety values as well, using our episodes query.

IMPORTANT: This query implements the podcastPowerScore filter in order to find episodes that are most likely to contain episode brand safety values. The podcastPowerScore filter also requires special permissions. You could instead replace this filter with brandSafetyFilter, to only return episodes that have brand safety data. You can learn more about this filter below.

POST https://api.podchaser.com/graphql
query {
episodes(filters: {podcastPowerScore: {from: 90, to: 100}}) {
data {
title,
description,
brandSafety {
code,
description,
value,
level,
}
}
}
}

This query will have a response similar to below (though shortened here for brevity):

{
"data": {
"episodes": {
"data": [
{
"title": "Chris Martin",
"description": "Musician Chris Martin feels really great about being Conan O’Brien’s friend. Chris sits down with Conan to discuss the voices that encouraged him, the improbable story of finding drummer Will Champion, using SubPacs to make Coldplay concerts more accessible, and more. Plus, Conan responds to a curious listener’s voicemail about his “sock game.”\n",
"brandSafety": [
{
"code": "adult",
"description": "Sex & Sexuality",
"value": 0.99,
"level": "high"
},
{
"code": "criminal",
"description": "Discusses Illegal Actions",
"value": 0.22,
"level": "low"
},
{
"code": "graphic",
"description": "Violence & Conflict Description",
"value": 0.26,
"level": "low"
},
{
"code": "profanity",
"description": "Strong Language",
"value": 0.99,
"level": "high"
},
{
"code": "spam",
"description": "Spam & Scams",
"value": 0.25,
"level": "low"
},
...other safety values...
]
}
...other episodes...
]
},
}
}

Applying a Brand Safety Filter

You can filter the top 5,000+ podcasts and their episodes by using the brandSafety filter.

IMPORTANT: Brand safety filters are exclusionary. When you provide search values within the BrandSafetyFilter input, you are requesting that the API exclude a risk range or risk level from search results, for a particular brand safety category.

Filtering By Brand Safety Risk Levels

Here is an example podcasts query that excludes podcasts with average episode brand safety data that contain PROFANITY values, where the risk assessment is either CLEAN, MEDIUM or HIGH. Because the filter is exclusionary, only podcasts with a safety level of LOW will be returned. You can pass the same filter when performing an episodes query.

POST https://api.podchaser.com/graphql
query {
podcasts(
filters: {
brandSafety: {
riskExclusions: [
{
riskType: PROFANITY,
riskLevels: [CLEAN, MEDIUM, HIGH]
}
]
}
}
) {
paginatorInfo {
currentPage,
hasMorePages,
lastPage,
},
data {
title,
description,
brandSafety {
code,
description,
value,
level,
}
}
}
}

This query will have this response (though shortened here for brevity):

{
"data": {
"podcasts": {
"paginatorInfo": {
"currentPage": 0,
"hasMorePages": true,
"lastPage": 628
},
"data": [
{
"title": "The Advanced Selling Podcast",
"description": "Bill Caskey and Bryan Neale: B2B sales trainers for the past twenty years share their strategies, frameworks, tips and tricks to help you leverage your talent, grow your skills and create your own sales success. You'll discover how you can shift your mindset, win with prospects and build long-term relationships with your clients so you can thrive and advance in your career. Bill and Bryan's approach to sales is funny, often quirky and always real. Their work has allowed them to help sales professionals, managers and leaders at hundreds of companies all over the world implement successful strategies and build profitable sales teams. Prospecting, sales communication, buyer resistance, proposals and RFPs, pricing, cold calling, sales forecasting, pain points, psychology, positioning, deal coaching, goal setting, leading and managing, achieving your goals and all the other things that work (and don't work) in the world of sales to help you be the best possible version of yourself.",
"brandSafety": [
{
"code": "spam",
"description": "Spam & Scams",
"value": 0.15,
"level": "low"
},
{
"code": "adult",
"description": "Sex & Sexuality",
"value": 0.27,
"level": "low"
},
{
"code": "graphic",
"description": "Violence & Conflict Description",
"value": 0.02,
"level": "low"
},
...other safety values...
]
},
...other podcasts...
]
}
}
}

Filtering By Brand Safety Risk Ranges

Here is an example episodes query that excludes episodes with brand safety data that contain PROFANITY values, where the risk assessment is between 0.0 and 0.5. Because the filter is exclusionary, only episodes with a safety value larger than 0.5 will be returned.

NOTE: If you omit a to value when filtering by riskRange, all brand safety values between the from value to 1 will be excluded from search results.

POST https://api.podchaser.com/graphql
query {
episodes(
filters: {
brandSafety: {
riskExclusions: [
{
riskType: ADULT,
riskRange: {from: 0.0, to: 0.5}
}
]
}
}
) {
paginatorInfo {
currentPage,
hasMorePages,
lastPage,
},
data {
title,
description,
brandSafety {
code,
description,
value,
level,
}
}
}
}

This query will have this response (though shortened here for brevity):

{
"data": {
"episodes": {
"paginatorInfo": {
"currentPage": 0,
"hasMorePages": true,
"lastPage": 14184
},
"data": [
{
"title": "You Can’t Skip This Step if you Want to be Truly Great",
"description": "Today I want to talk about an important step in your journey to being great at anything you do. Every successful person alive or in history knows this step because it can't be skipped. I am talking of course about the step of Failure.",
"brandSafety": [
{
"code": "adult",
"description": "Sex & Sexuality",
"value": 0.6,
"level": "medium"
},
{
"code": "profanity",
"description": "Strong Language",
"value": 0.8,
"level": "high"
},
{
"code": "spam",
"description": "Spam & Scams",
"value": 0.426,
"level": "low"
},
{
"code": "toxic",
"description": "Insulting & Offensive Language",
"value": 0.93,
"level": "high"
},
...other safety values...
]
},
...other podcasts...
]
}
}
}

Advanced Filtering

You can combine multiple brand safety exclusions when filtering, using any BrandSafetyCode for a riskType, along with a combination of riskRange and riskLevel values.

Here is an example podcasts query that excludes podcasts with ...

  • A PROFANITY average episode brand safety value, where the riskLevel is either MEDIUM or HIGH
  • An ADULT average episode brand safety value, where the riskRange is 0.5 and higher
POST https://api.podchaser.com/graphql
query {
podcasts(
filters: {
brandSafety: {
riskExclusions: [
{
riskType: PROFANITY,
riskLevels: [MEDIUM, HIGH]
},
{
riskType: ADULT,
riskRange: {from: 0.5}
}
]
}
}
) {
paginatorInfo {
currentPage,
hasMorePages,
lastPage,
},
data {
title,
description,
brandSafety {
code,
description,
value,
level,
}
}
}
}

This query will have this response (though shortened here for brevity):

{
"data": {
"podcasts": {
"paginatorInfo": {
"currentPage": 0,
"hasMorePages": true,
"lastPage": 135
},
"data": [
{
"title": "Spilled Milk",
"description": "Every week on Spilled Milk, writers/comedians Molly Wizenberg and Matthew Amster-Burton start with a food-related topic, from apples to winter squash, and run with it as far as they can go—and, regrettably, sometimes further.",
"brandSafety": [
{
"code": "spam",
"description": "Spam & Scams",
"value": 0.12,
"level": "low"
},
{
"code": "adult",
"description": "Sex & Sexuality",
"value": 0.65,
"level": "medium"
},
{
"code": "graphic",
"description": "Violence & Conflict Description",
"value": 0.05,
"level": "low"
},
{
"code": "profanity",
"description": "Strong Language",
"value": 0.3,
"level": "low"
},
...other safety values...
]
},
...other podcasts...
]
}
}
}