# YouTube Channel Scraper: find channels, then read them

YouTube Channel Scraper finds public YouTube channels by keyword, URL or @handle and returns each one’s profile, name, verification, thumbnails, and where available its subscriber and video counts.

[Run this scraper free](https://apify.com/apidojo/youtube-channel-information-scraper)

[See the three jobs](#jobs)

apidojo/youtube-channel-information-scraper

**Keyword search**

**URL or handle**

**Searches**

**Channels returned**

Estimated run cost

$0.00

Free Apify plan: 5 runs a month, 10 items a run. No credit card.

**$0.001** per keyword search

**~20** channels included in that

**$0.005** per URL or handle, flat

**99.59%** run success, last 30 days

Read on 27 September 2026.

## Search for channels, or name them

Three input fields, and the choice between them is a choice between two prices. Searching is cheap and speculative; a direct lookup is five times the fee and returns exactly the one channel you asked for.

-   Five times cheaper than the same search on the videos sibling

    `keywords`

    $0.001per search

    ~20 channels free

    Search terms. The cheapest query in the whole YouTube family, and it brings about twenty channels with it.

    `["woodworking", "cabinet making"]`

-   `youtubeHandles`

    $0.005per handle

    Flat, 1 channel in

    Specific @handles. Use it when you already know who you are looking for and want their record, not a ranking.

    `["@MrBeast"]`

-   `startUrls`

    $0.005per URL

    Flat rate

    Channel URLs. Billed identically to a handle, the listing prices both as a URL / handle query.

    `https://www.youtube.com/@MrBeast`

-   `gl / hl / sort`

    us / en / rthe defaults

    Search only

    Country, language and search ordering. They shape a keyword search and cost nothing to set.

    `gl: "DE", hl: "de"`

Twenty channels for a tenth of a cent is the number to hold on to: at that rate, finding candidates is close to free and the expense only begins when you go past the first page of a search.

**Apify actor:** apidojo/youtube-channel-information-scraper

**Inputs:** startUrls · youtubeHandles · keywords · gl · hl · sort · maxItems · customMapFunction

**Three ways in:** Search a keyword, or look up a URL or an @handle directly

**Always returned:** id, name, url, isVerified, isFamilySafe, thumbnails

**Sometimes returned:** subscriberCount, videosCount, description, keywords, tags, availableCountries

**Counts:** Strings carrying their unit, "244M subscribers", "780 videos"

**Geo-targeting:** gl and hl set the country and language of the search

**Reliability:** 99.59% of 16,028 runs succeeded in the last 30 days

## Discover a niche, vet a name, or map a market

Three runs. The first two use different doors and different prices; the third is the one that justifies the gl and hl parameters nobody reads.

**01 Discover a niche $0.001 + $0.0005 past ~20**

**02 Vet a name $0.005 flat per lookup**

**03 Map a market One allowance per search**

### How do you find YouTube channels by keyword?

Put search terms in keywords. Each search is $0.001 and carries about twenty channels; past that they are $0.0005 each. A hundred channels from one search comes to $0.041.

Input

```
{
  "keywords": ["woodworking"],
  "gl": "us",
  "hl": "en",
  "maxItems": 100
}
```

$0.001 + 80 × $0.0005 \= **$0.041**

What comes back

The **channel record**, The six guaranteed fields, identity and status, no metrics.

```
{
  "type": "channel",
  "id": "UCX6OQ3DkcsbYNE6H8uQQuVA",
  "name": "MrBeast",
  "url": "https://www.youtube.com/@MrBeast",
  "isVerified": true,
  "isFamilySafe": true,
  "thumbnails": [
    { "url": "https://yt3.googleusercontent.com/…", "width": 176, "height": 176 }
  ]
}
```

The same search costs five times as much on the other channel actor

A keyword search is $0.001 here and $0.005 on the Channel Videos Scraper, and both include roughly twenty channels. If the job is finding channels rather than pulling their uploads, this is the actor to run, then take the IDs elsewhere.

### How do you look up a specific YouTube channel?

Give the @handle or the channel URL. Both are charged at $0.005 as a flat query with the channel included, so ten handles cost five cents whatever comes back.

Input

```
{
  "youtubeHandles": ["@MrBeast"],
  "maxItems": 10
}
```

10 × $0.005 \= **$0.05**

What comes back

The **conditional metrics**, The half of the record you actually came for, and the half that may be absent.

```
{
  "subscriberCount": "244M subscribers",
  "videosCount": "780 videos",
  "description": "SUBSCRIBE FOR A COOKIE! Accomplishments: …",
  "keywords": "mrbeast6000 beast mrbeast Mr.Beast mr"
}
```

subscriberCount is marked "sometimes", and the listing says why

Its note reads "Hidden on some channels", because YouTube lets creators hide the figure. A lookup that returns a channel with no subscriberCount has not failed and will still be billed. Code the null branch before you rely on the number.

### Can you search YouTube channels by country?

Yes, gl sets the country and hl the language for a keyword search, both free to change. Running the same term across several markets is the cheapest comparative study available here: three searches returning two hundred channels is $0.073.

Input

```
{
  "keywords": ["woodworking"],
  "gl": "DE",
  "hl": "de",
  "maxItems": 200
}
```

3 × $0.001 + 140 × $0.0005 \= **$0.073**

What comes back

The **regional fields**, Where a channel is actually available, and how it tags itself.

```
{
  "availableCountries": ["NG", "SV", "SK", "MY"],
  "tags": ["mrbeast6000", "beast", "mrbeast", "Mr.Beast", "mr"],
  "isVerifiedArtist": false,
  "isModerator": false
}
```

Three searches bring three allowances

Because roughly twenty channels come free with every search, splitting a term across three markets costs less per channel than taking two hundred from one. The free page is the part of this pricing worth designing around.

## Six fields guaranteed, six that may not come

The split matters more here than on most pages, because it does not fall where you would expect. Identity is certain. Every number is conditional.

-   6

    Always present

    Identity and status

    -   id, the UC-format channel ID
    -   name
    -   url, with the handle
    -   isVerified
    -   isFamilySafe
    -   thumbnails, array of sizes
-   2

    Sometimes present

    The metrics

    -   subscriberCount, "244M subscribers"
    -   videosCount, "780 videos"
    -   Hidden on some channels
-   3

    Sometimes present

    The text

    -   description, the about section
    -   keywords, one string
    -   tags, the same, parsed
-   1

    Sometimes present

    Regional

    -   availableCountries
    -   Two-letter codes

**type:** Always "channel" on these records

**id:** The UC-format channel ID, the stable key, and the one to carry into other actors

**name · url:** Display name and the full channel URL including the handle

**isVerified:** Verification badge. Always present, unlike the metrics

**isFamilySafe:** Family-safe indicator, also guaranteed

**thumbnails:** Array of avatar sizes, each with url, width and height

**subscriberCount:** A string carrying its own noun, "244M subscribers". Sometimes absent, because creators can hide it

**videosCount:** Also a string with its noun, "780 videos". Sometimes absent

**description:** The about section, truncated in the listing’s own sample

**keywords:** The channel’s keywords as one space-separated string

**tags:** The same keywords already split into an array, use this one

**availableCountries:** Two-letter codes for where the channel is available

**isVerifiedArtist · isModerator:** Shown in the listing’s output sample; not listed among its availability guarantees

keywords and tags are the same data twice, once as a string and once parsed. Take tags and ignore keywords, splitting on spaces yourself will break on any keyword that contains one, which "Mr.Beast" nearly does and plenty of real channels do.

## Assumptions worth not making

Four of these come straight from the listing’s availability table and pricing section. They are the difference between a pipeline that survives contact with real channels and one that throws on the third row.

-   01

    Every metric is optional

    subscriberCount, videosCount, description, keywords, tags and availableCountries are all marked "sometimes". Only id, name, url, isVerified, isFamilySafe and thumbnails are guaranteed.

-   02

    Counts include their own units

    The values are "244M subscribers" and "780 videos". The noun is part of the string. Strip it and the abbreviation before any comparison, and keep the original.

-   03

    A direct lookup costs five times a search

    URL and handle queries are $0.005 flat; a keyword search is $0.001 and brings roughly twenty channels. Knowing the name is the expensive way in, per channel returned.

-   04

    gl and hl only affect keyword searches

    The schema describes sort as working with search results, and the country and language parameters shape which channels a term surfaces. A direct handle lookup ignores them.

-   05

    An empty metric is not an error

    A channel with no subscriberCount is still a successful, billed result. Treat absence as "hidden", not as "failed", or a retry loop will spend money re-asking a question YouTube will not answer.

Free accounts run in demo mode: 5 runs a month, 10 items each.

## Searching versus naming

Five scenarios from the listing, all reproducing from the three charge events. Laid out together they make one point: per channel returned, searching is an order of magnitude cheaper than looking up.

| Run | Method | Calculation | Cost |
| --- | --- | --- | --- |
| 20 channels | 1 search, the free page | $0.001 | $0.001 |
| 5 channels | 5 URLs, direct | 5 × $0.005 | $0.025 |
| 10 channels | 10 handles, direct | 10 × $0.005 | $0.05 |
| 100 channels | 1 search | $0.001 + 80 × $0.0005 | $0.041 |
| 200 channels | 3 searches | 3 × $0.001 + 140 × $0.0005 | $0.073 |
| 1,000 channels | 1 search, deep | $0.001 + 980 × $0.0005 | $0.49 |

Compare the third row against the first: ten named channels cost fifty times what twenty searched ones do. Direct lookups earn their price only when you need a specific channel and cannot risk a ranking returning something else.

## Who needs the channel and not the videos?

The listing points at influencer discovery, competitor analysis, lead generation and market research. All four start by building a list of channels, which is the job this actor does cheaply, and the one its videos sibling does at five times the search price.

-   Influencer discovery

    Keyword search, wide

    Build candidate lists a niche at a time, where twenty channels per search cost a tenth of a cent

    $0.041 per 100 channels

-   Competitor mapping

    Direct lookups

    Track a known set of channels on a schedule, accepting the flat fee for certainty about which channel you got

    $0.05 per 10 channels

-   Market research

    Search across gl values

    Run one term through several countries and compare who ranks where, at one allowance per market

    $0.073 per 200 across 3

-   Lead generation

    Keyword search, then read description

    Mine about sections for contact details and external links, remembering description is a sometimes field

    $0.49 per 1,000 channels

-   Pipeline seeding

    Keyword search, free pages only

    Collect channel IDs cheaply here, then spend the real budget on uploads in the videos actor

    $0.001 per 20 IDs

## Handling the fields that may not arrive

The actor is apidojo/youtube-channel-information-scraper. Write the accessor for the conditional fields once, treat absence as unknown, and never let a missing subscriber count look like a zero.

**Python**

**JavaScript**

**cURL**

```
import re
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

def subs(channel):
    """'244M subscribers' -> 244000000. None stays None: hidden is not zero."""
    raw = channel.get("subscriberCount")
    if not raw:
        return None
    m = re.match(r"([\d.]+)([KMB]?)", raw.strip())
    if not m:
        return None
    mult = {"K": 1_000, "M": 1_000_000, "B": 1_000_000_000}.get(m.group(2), 1)
    return int(float(m.group(1)) * mult)

run = client.actor("apidojo/youtube-channel-information-scraper").call(run_input={
    "keywords": ["woodworking"],
    "gl": "us",
    "hl": "en",
    "maxItems": 100,
})

rows = list(client.dataset(run.default_dataset_id).iterate_items())

hidden = [c for c in rows if subs(c) is None]
print(f"{len(hidden)} of {len(rows)} channels do not publish a subscriber count")

for c in rows:
    n = subs(c)
    print(c["id"], c["name"], "hidden" if n is None else f"{n:,}")
```

```
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

// Searching is $0.001 and brings ~20 channels; a handle lookup is $0.005.
const run = await client.actor('apidojo/youtube-channel-information-scraper').call({
  keywords: ['woodworking'],
  gl: 'us',
  hl: 'en',
  maxItems: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();

// Only six fields are guaranteed. Everything else needs a guard.
const usable = items.filter((c) => c.subscriberCount && c.tags?.length);
console.log(usable.length, 'of', items.length, 'have both a count and tags');

// tags is the parsed form of keywords, do not split the string yourself.
const byTag = new Map();
for (const c of items) for (const t of c.tags ?? []) {
  byTag.set(t, (byTag.get(t) ?? 0) + 1);
}
console.log([...byTag].sort((a, b) => b[1] - a[1]).slice(0, 10));
```

```
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~youtube-channel-information-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords":["woodworking"],"gl":"us","hl":"en","maxItems":100}'
```

The listing states 166 channels a second. Export as JSON or CSV, JSON keeps the thumbnails and availableCountries arrays intact, which CSV will flatten.

## YouTube Channel Scraper FAQ

### How much does it cost to find YouTube channels by keyword?

$0.001 per search, which includes roughly the first twenty channels, then $0.0005 each. A hundred channels from one search is $0.041.

### Why would I pay $0.005 for a direct lookup?

Certainty. A URL or @handle query returns exactly the channel you named at a flat rate, where a keyword search returns a ranking that may not contain it.

### Is the subscriber count always returned?

No. The listing marks subscriberCount as sometimes available and notes it is hidden on some channels, because YouTube lets creators hide it. A record without one is still a successful, billed result.

### Is subscriberCount a number?

No, it is a string carrying its own unit, "244M subscribers". videosCount is the same, arriving as "780 videos". Strip the noun and the abbreviation before comparing.

### Which fields can I always rely on?

Six: id, name, url, isVerified, isFamilySafe and thumbnails. Everything else, including every metric, is marked conditional.

### What is the difference between keywords and tags?

They are the same data. keywords is one space-separated string; tags is the parsed array. Use tags, splitting the string yourself breaks on any keyword containing a space.

### Can I search in a specific country or language?

Yes. gl sets the country and hl the language for a keyword search, defaulting to us and en. They cost nothing and do not apply to direct handle lookups.

### How is this different from the Channel Videos Scraper?

This one returns the channels themselves; that one returns their uploads. The keyword search also costs five times more there, $0.005 against $0.001, for what the schema describes the same way.

## Where YouTube Channel Scraper fits

[Parent scraper YouTube Scraper Seven YouTube scrapers, and two of them say "channel" on the tin. This one returns the channels themselves; the Channel Videos Scraper returns what they have uploaded. The price of a keyword search differs fivefold between them.](/scrapers/youtube-scraper/)

Sibling scrapers

-   [YouTube Channel Videos Scraper](/scrapers/youtube-channel-scraper/)
-   [YouTube Comments Scraper](/scrapers/youtube-comments-scraper/)
-   [YouTube Playlist Scraper](/scrapers/youtube-playlist-scraper/)

Guides

-   Building a channel list without paying for lookups*Coming soon*
-   Why hidden subscriber counts are not zeros*Coming soon*
-   Comparing a niche across countries with gl and hl*Coming soon*

## Search one niche

A tenth of a cent, twenty channels back.

`keywords: ["woodworking"] · gl: "us" · maxItems: 20`

[Run this scraper free](https://apify.com/apidojo/youtube-channel-information-scraper)

Apidojo is not affiliated with YouTube or Google LLC.

## Guides for this scraper

-   [YouTube scraping guides Videos, channels, playlists, comments and transcripts: what YouTube's data actually contains, and which fields arrive as text rather than as numbers.](/blog/youtube/)
-   [Why hidden YouTube subscriber counts are not zeros On YouTube Channel Scraper every metric is optional and only identity is guaranteed. A channel with no subscriberCount has not failed, and you paid for it.](/blog/youtube/youtube-hidden-subscribers/)
