Datasets API endpoint
Searches public YouTube channel profiles stored in a search index — subscriber, video and view counts, region, bio and links, discovered via Common Crawl and Wikidata and hydrated from each channel's public About page. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `views_desc`, `videos_desc`, `hydrated_at_desc`, `hydrated_at_asc`. Some channels hide their subscriber, video, or view count; the `_available` flags on each item distinguish a hidden count (stored as `0`, `*_available: false`) from a genuine `0`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).
/datasets/youtube-creators/searchDataset id enum:
youtube-creatorsQuery parameters:
q: optional full-text query over channel_name and bio, max 256 characters.channel_id: optional exact channel id filter (e.g. UCxxxxxxxxxxxxxxxxxxxxxxxx), max 128 characters.region: optional exact channel region/country filter (case-insensitive), max 128 characters.discovery_source: optional exact filter for how the channel was discovered (e.g. commoncrawl, wikidata), max 128 characters.has_bio: optional filter for channels with a non-empty About bio.has_links: optional filter for channels with at least one linked external URL.followers_count_available: optional filter for channels that expose a public subscriber count.videos_count_available: optional filter for channels with a known uploaded-video count.views_count_available: optional filter for channels with a known total view count.min_followers / max_followers: optional subscriber-count bounds.min_videos / max_videos: optional uploaded-video-count bounds.min_views / max_views: optional total-view-count bounds.joined_after / joined_before: optional filters on channel creation date (RFC3339 or YYYY-MM-DD).hydrated_after / hydrated_before: optional filters on last refresh date (RFC3339 or YYYY-MM-DD).sort: optional sort enum: relevance, followers_desc, followers_asc, views_desc, videos_desc, hydrated_at_desc, hydrated_at_asc.page: optional page number, defaults to 1.page_size: optional page size, defaults to 20 and maxes at 100.Response behavior:
relevance sort when q is supplied, otherwise followers_desc.0 and its matching *_available flag is false — use the _available flags to tell a hidden count apart from a genuine 0, and be aware that a min_followers filter above 0 will exclude channels with a hidden subscriber count.min_* must not exceed the matching max_*.YYYY-MM-DD calendar date.10000; page * page_size must not exceed 10000.1 credit per record returned, minimum 2. A search that returns 20 records costs 20 credits, a full page of 100 costs 100, and an empty or one-record result costs 2. You are charged for what comes back, not for the page_size you ask for, but your balance must cover the requested page_size for the call to be accepted. The response header x-credit-cost shows what a call was charged.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| channel_id | 20 | |
| channel_name | 20 | |
| channel_url | 20 | youtube.com |
| profile_pic | 20 | yt3.googleusercontent.com |
| links | 18 | median 4 entries |
| followers_count | 20 | 94,600,000 to 518,000,000, median 120,000,000 |
| videos_count | 20 | 464 to 243,342, median 1,765 |
| views_count | 20 | 29,523,707,981 to 350,770,633,483, median 106,721,753,789 |
| followers_count_available | 20 | true in 20 of 20 |
| videos_count_available | 20 | true in 20 of 20 |
| views_count_available | 20 | true in 20 of 20 |
| region | 19 | |
| bio | 20 | median 266 characters |
| joined_date | 20 | 2005-12-11 to 2020-02-04 |
| discovery_source | 20 | |
| status | 20 | |
| discovered_at | 20 | 2026-07-28 to 2026-09-24 |
| hydrated_at | 20 | 2026-08-03 to 2026-09-24 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | No | Full-text query over channel_name and bio, max 256 characters | ||
| channel_id | string | No | Exact channel id filter (e.g. UCxxxxxxxxxxxxxxxxxxxxxxxx), max 128 characters | ||
| region | string | No | Exact channel region/country filter (case-insensitive), max 128 characters | ||
| discovery_source | string | No | Exact filter for how the channel was discovered (e.g. commoncrawl, wikidata), max 128 characters | ||
| has_bio | boolean | No | Filter by a non-empty About bio | ||
| has_links | boolean | No | Filter by at least one linked external URL | ||
| followers_count_available | boolean | No | Filter by whether the channel exposes a public subscriber count | ||
| videos_count_available | boolean | No | Filter by whether the channel has a known uploaded-video count | ||
| views_count_available | boolean | No | Filter by whether the channel has a known total view count | ||
| min_followers | integer | No | Minimum subscriber count | ||
| max_followers | integer | No | Maximum subscriber count | ||
| min_videos | integer | No | Minimum uploaded-video count | ||
| max_videos | integer | No | Maximum uploaded-video count | ||
| min_views | integer | No | Minimum total view count | ||
| max_views | integer | No | Maximum total view count | ||
| joined_after | string | No | Channels created on or after this date (RFC3339 or YYYY-MM-DD) | ||
| joined_before | string | No | Channels created on or before this date (RFC3339 or YYYY-MM-DD) | ||
| hydrated_after | string | No | Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD) | ||
| hydrated_before | string | No | Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD) | ||
| sort | string | No | Sort enum: relevance, followers_desc, followers_asc, views_desc, videos_desc, hydrated_at_desc, hydrated_at_asc Allowed values: relevance, followers_desc, followers_asc, views_desc, videos_desc, hydrated_at_desc, hydrated_at_asc. | ||
| page | integer | No | 1 | Page number, defaults to 1 | |
| page_size | integer | No | 20 and maxes at 100 | Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/youtube-creators/search?q=coffee&has_bio=true&has_links=true&followers_count_available=true&videos_count_available=true&views_count_available=true&sort=relevance&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "youtube-creators",
"items": [
{
"channel_id": "UCX6OQ3DkcsbYNE6H8uQQuVA",
"channel_name": "MrBeast",
"channel_url": "https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA",
"profile_pic": "https://yt3.googleusercontent.com/avatar.jpg",
"links": [
"https://www.beastphilanthropy.org"
],
"followers_count": 300000000,
"followers_count_available": true,
"videos_count": 830,
"videos_count_available": true,
"views_count": 55000000000,
"views_count_available": true,
"region": "US",
"bio": "SUBSCRIBE FOR A COOKIE!",
"joined_date": "2012-02-20T00:00:00Z",
"discovery_source": "commoncrawl",
"status": "ok",
"discovered_at": "2026-07-03T00:00:00Z",
"hydrated_at": "2026-08-19T00:00:00Z"
}
],
"page": 1,
"page_size": 20,
"total": 2490319,
"sort": "followers_desc"
}
}Request schema
No body schema
Response schema
#/definitions/datasets.youtubeCreatorsSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.YoutubeCreatorSearchResponse | No | ||||
| data.dataset | string | No | ||||
| data.items | array | No | ||||
| data.items[].bio | string | No | ||||
| data.items[].channel_id | string | No | ||||
| data.items[].channel_name | string | No | ||||
| data.items[].channel_url | string | No | ||||
| data.items[].discovered_at | string | No | ||||
| data.items[].discovery_source | string | No | ||||
| data.items[].followers_count | integer | No | ||||
| data.items[].followers_count_available | boolean | No | ||||
| data.items[].hydrated_at | string | No | ||||
| data.items[].joined_date | string | No | ||||
| data.items[].links | array | No | ||||
| data.items[].profile_pic | string | No | ||||
| data.items[].region | string | No | ||||
| data.items[].status | string | No | ||||
| data.items[].videos_count | integer | No | ||||
| data.items[].videos_count_available | boolean | No | ||||
| data.items[].views_count | integer | No | ||||
| data.items[].views_count_available | boolean | No | ||||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.sort | string | No | ||||
| data.total | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/youtube-creators/search?q=coffee&has_bio=true&has_links=true&followers_count_available=true&videos_count_available=true&views_count_available=true&sort=relevance&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"