Triangle pointing up
Reference

Channels

Search for channels directly from the YouTube Niche Finder with AI enhanced data and 30+ filters. Updated in real-time, 24/7.

GET/search/channels
Authorization<token>

Use the format: Api-Key <token> as the value.

In: header

Query Parameters

query?array<string>

Search queries

seed?string & number | null

Randomize search results by passing a random seed

filterBy?string

Filter by statistics of each content kind

Value in"video" | "short"
contentKind?string

Filter by type of content created by channel:

  • video - channel has videos;
  • short - channel has shorts;
  • long-form - channel has more long-form content;
  • short-form - channel has more short-form content
Value in"video" | "short" | "long-form" | "short-form"
publishedAtFrom?string

Filter by a channel's last parsed video upload date (from a sample of 100 videos) - Expects an ISO date time string.

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Formatdate-time
publishedAtTo?string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Formatdate-time
averageViewsFrom?integer
Range0 <= value <= 9007199254740991
averageViewsTo?integer
Range0 < value <= 9007199254740991
medianViewsFrom?integer
Range0 <= value <= 9007199254740991
medianViewsTo?integer
Range0 < value <= 9007199254740991
language?array<string>

ISO 639-1 language codes

avgViewsToSubscribersRatioFrom?number

Filter by the outlier score of a channel

Range0 <= value
avgViewsToSubscribersRatioTo?number
Range0 < value
subscribersFrom?integer
Range0 <= value <= 9007199254740991
subscribersTo?integer
Range0 < value <= 9007199254740991
videosCountFrom?integer
Range0 <= value <= 9007199254740991
videosCountTo?integer
Range0 < value <= 9007199254740991
viewVariationCoefficientFrom?number
Range0 <= value
viewVariationCoefficientTo?number
Range0 < value
revenueMonthlyEstimationFrom?number
Range0 <= value
revenueMonthlyEstimationTo?number
Range0 < value
rpmEstimationFrom?number
Range0 <= value
rpmEstimationTo?number
Range0 < value
avgDurationFrom?integer

Average duration of videos in seconds

Range0 <= value <= 9007199254740991
avgDurationTo?integer
Range0 < value <= 9007199254740991
monetizationAdsense?boolean

Filter by whether the channel has AdSense enabled or not

monetizationSponsored?boolean

Filter by whether the channel has sponsored content detected or not

monetizationChanged?boolean

Filter by whether the channel's AdSense monetization state has ever flipped (presence of monetizationChangedAt). Combine with monetizationAdsense set to false to find recently demonetized channels

excludeNiche?array<string>

Exclude niches from search results by keywords

classificationQuality?string

AI classification of a channel quality. This is an estimation where negative is slop, and positive high quality content

Value in"negative" | "neutral" | "positive"
classificationIsFaceless?boolean

AI classification whether channel content has faceless potential or not

classificationIsOnCamera?boolean

AI classification whether channel content features an on-camera presenter or not

audienceRegion?array<string>

Filter by the channel's dominant audience region, matching any of the given codes (OR). Codes are UN M49 subregion codes, e.g. 021 - Northern America, 154 - Northern Europe.

Audience data is an AI prediction, so it is estimation-grade and should be treated as a signal rather than a measurement.

audienceAgeFrom?integer

Filter by audience age, matching channels whose significant audience age buckets intersect the audienceAgeFrom - audienceAgeTo range.

Audience data is an AI prediction, so it is estimation-grade and should be treated as a signal rather than a measurement.

Range0 <= value <= 9007199254740991
audienceAgeTo?integer
Range0 < value <= 9007199254740991
audienceDominantGender?string

Filter by the channel's dominant audience gender skew.

Audience data is an AI prediction, so it is estimation-grade and should be treated as a signal rather than a measurement.

Value in"male" | "female" | "balanced"
audienceDominantIncome?array<string>

Filter by the channel's dominant audience household-income tier, matching any of the given tiers (OR).

Audience data is an AI prediction, so it is estimation-grade and should be treated as a signal rather than a measurement.

detectionsMonetization?array<string>

Filter channels that have any of the listed monetization methods detected (OR).

This filters the raw detection booleans from the channel's last parse, unlike monetizationAdsense and monetizationSponsored which filter the sticky derived monetization flags - the two can disagree after a monetization state flip.

detectionsMadeWithAI?boolean

Filter channels detected as made with AI. Tri-state: omit to ignore, true for detected, false for checked and not detected (e.g. human-made channels)

detectionsForKids?boolean

Filter channels detected as made for kids

joinedDateFrom?string

Filter channels that joined YouTube after this date - Expects an ISO date time string.

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Formatdate-time
viewCountAllTimeFrom?integer

All-time view count of the channel

Range0 <= value <= 9007199254740991
viewCountAllTimeTo?integer
Range0 < value <= 9007199254740991
viewsPerHourEstimateFrom?integer

Estimated views per hour of the channel

Range0 <= value <= 9007199254740991
viewsPerHourEstimateTo?integer
Range0 < value <= 9007199254740991
terminated?boolean

Filter by terminated (inactive) channels

from?integer

Page to fetch

Default0
Range0 <= value <= 9007199254740991
size?integer

Number of items per page

Default20
Range0 < value <= 40
sortBy?string

Sort results by a specific metric:

Beaware when using semantic search (applying a query with the by parameter set to semantic) the sorting option is only applied within the nearest videos found and not the entire dataset.

  • subscribers - sort by subscribers
  • averageViews - sort by average views
  • avgViewsToSubscribersRatio - sort by average views to subscribers ratio
  • viewVariationCoefficient - sort by view variation coefficient
  • revenueMonthly - sort by revenue monthly estimation
  • rpm - sort by RPM estimation
  • foundAt - sort by when the channel was found (for new results)
  • recency - sort by when the channel started uploading
  • monetizationChangedAt - sort by when the AdSense monetization state last flipped
Value in"subscribers" | "averageViews" | "avgViewsToSubscribersRatio" | "viewVariationCoefficient" | "revenueMonthly" | "rpm" | "foundAt" | "recency" | "monetizationChangedAt"
sortOrder?string

Sorting order of results, where asc is ascending and desc is descending

Response Body

{
  "pagination": {
    "total": 100,
    "from": 0,
    "size": 20
  },
  "hits": [
    {
      "id": "UChn5jutPQB_bRjnG80pzl5w",
      "snippet": {
        "handle": "@tubelabhq",
        "title": "TubeLab",
        "thumbnails": {
          "default": {
            "url": "string"
          },
          "medium": {
            "url": "string"
          },
          "high": {
            "url": "string"
          }
        },
        "contentKind": [
          "video",
          "short",
          "long-form"
        ]
      },
      "time": "2019-08-24T14:15:22Z",
      "semantic": {
        "niches": [
          "string"
        ],
        "description": "string"
      },
      "monetization": {
        "adsense": true,
        "revenueMonthlyEstimationFrom": 0,
        "rpmEstimationFrom": 0,
        "revenueMonthlyEstimationTo": 0,
        "rpmEstimationTo": 0,
        "monetizationChangedAt": "2019-08-24T14:15:22Z"
      },
      "language": "string",
      "classification": {
        "isFaceless": true,
        "isOnCamera": true,
        "quality": "positive"
      },
      "audience": {
        "dominant": {
          "region": "021",
          "age": "25-34",
          "gender": "male",
          "income": "middle"
        }
      },
      "detections": {
        "adsense": {
          "detected": true
        },
        "sponsored": {
          "detected": true
        },
        "affiliate": {
          "detected": true
        },
        "product": {
          "detected": true
        },
        "donations": {
          "detected": true
        },
        "course": {
          "detected": true
        },
        "newsletter": {
          "detected": true
        },
        "community": {
          "detected": true
        },
        "services": {
          "detected": true
        },
        "madeWithAI": {
          "detected": true
        },
        "forKids": {
          "detected": true
        }
      },
      "videos": [
        {
          "id": "SVeXR66hcIg",
          "title": "string",
          "thumbnails": {
            "default": {
              "url": "string",
              "width": 0,
              "height": 0
            },
            "medium": {
              "url": "string",
              "width": 0,
              "height": 0
            },
            "high": {
              "url": "string",
              "width": 0,
              "height": 0
            }
          },
          "publishedAtEstimate": "2019-08-24T14:15:22Z",
          "viewCount": 9007199254740991,
          "statistics": {
            "isPositiveOutlier": true
          }
        }
      ],
      "shorts": [
        {
          "id": "SVeXR66hcIg",
          "title": "string",
          "thumbnails": [
            {
              "url": "string",
              "width": 0,
              "height": 0
            }
          ],
          "viewCount": 9007199254740991
        }
      ],
      "statistics": {
        "subscriberCount": 9007199254740991,
        "subscriberCountRaw": "string",
        "viewCountEstimate": 0,
        "viewCountMonthlyEstimate": 0,
        "videosCount": 9007199254740991,
        "videosSampleCount": 9007199254740991,
        "videosCountRaw": "string",
        "averageViewsEstimate": 0,
        "medianViewsEstimate": 0,
        "averageVideoDurationEstimate": 0,
        "standardDeviationViewsEstimate": 0,
        "viewVariationCoefficient": 0,
        "avgViewsToSubscribersRatio": 0,
        "lastPublishedAtEstimate": "string",
        "oldestParsedPublishedAtEstimate": "string",
        "positiveOutliersCount": 9007199254740991,
        "negativeOutliersCount": 9007199254740991
      }
    }
  ]
}
{
  "error": {
    "errors": [
      {
        "code": "string",
        "validation": "string",
        "message": "string",
        "path": [
          "string"
        ]
      }
    ]
  },
  "status": "string"
}
{
  "error": {
    "message": "string"
  },
  "status": "string"
}
{
  "error": {
    "message": "string"
  },
  "status": "string"
}
{
  "error": {
    "message": "string",
    "rateLimit": {
      "limit": -9007199254740991,
      "current": -9007199254740991,
      "remaining": -9007199254740991,
      "resetTime": "2019-08-24T14:15:22Z"
    }
  },
  "status": "string"
}