curl -H "X-API-Key: $PARTICLE_API_KEY" \
"https://api.particle.pro/v1/podcasts/suitability/publishers/leaderboard?limit=25&metric=safest&min_analyzed_podcasts=5"{
"data": [
{
"coverage": {
"analyzed_coverage": 123,
"analyzed_podcasts": 123,
"quality": "<string>",
"total_podcasts": 123
},
"metric_value": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"rank": 123,
"tier_breakdown": {
"limited": 123,
"limited_share": 123,
"placeable_share": 123,
"safe": 123,
"safe_share": 123,
"sensitive": 123,
"sensitive_share": 123,
"unsafe": 123,
"unsafe_share": 123
}
}
],
"has_more": true,
"cursor": "<string>"
}{
"detail": "Property foo is required but is missing.",
"error_code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"resolve": {
"message": "<string>",
"action": "<string>",
"endpoint": "<string>",
"method": "<string>",
"url": "<string>"
},
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example"
}Get a cross-publisher suitability leaderboard
Returns a paginated, ranked list of podcast publishers by IAB/GARM brand-suitability composition. Pick a metric (safest, riskiest, most_placeable, most_analyzed) to choose how the ranking is constructed. min_analyzed_podcasts guards against tiny catalogs dominating share-based metrics. The ranking reflects each publisher’s current catalog composition; paginate the audit history per show via GET /v1/podcasts//suitability?include=history when you need point-in-time analysis. Each row carries the full tier_breakdown (counts + shares) plus the metric_value the row was ranked by.
curl -H "X-API-Key: $PARTICLE_API_KEY" \
"https://api.particle.pro/v1/podcasts/suitability/publishers/leaderboard?limit=25&metric=safest&min_analyzed_podcasts=5"{
"data": [
{
"coverage": {
"analyzed_coverage": 123,
"analyzed_podcasts": 123,
"quality": "<string>",
"total_podcasts": 123
},
"metric_value": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"rank": 123,
"tier_breakdown": {
"limited": 123,
"limited_share": 123,
"placeable_share": 123,
"safe": 123,
"safe_share": 123,
"sensitive": 123,
"sensitive_share": 123,
"unsafe": 123,
"unsafe_share": 123
}
}
],
"has_more": true,
"cursor": "<string>"
}{
"detail": "Property foo is required but is missing.",
"error_code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"resolve": {
"message": "<string>",
"action": "<string>",
"endpoint": "<string>",
"method": "<string>",
"url": "<string>"
},
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example"
}Authorizations
Pass your API key in the X-API-Key header (recommended).
Query Parameters
Results per page
1 <= x <= 100Opaque pagination cursor from previous response
How to rank publishers. safest sorts by SAFE share of the analyzed catalog (desc); riskiest sorts by UNSAFE share (desc); most_placeable sorts by combined SAFE + LIMITED share (desc) — the 'broadly buyable' slice; most_analyzed sorts by absolute analyzed_podcasts count (desc).
safest, riskiest, most_placeable, most_analyzed Exclude publishers with fewer than this many analyzed podcasts. Guards against tiny catalogs dominating share-based metrics.
1 <= x <= 1000Was this page helpful?