# Playboard YouTube Channel Ranking Scraper (`maximedupre/playboard`) Actor

Scrape public Playboard rankings for YouTube channels by country, category, and metric. Save each ranked channel with its rank, identity, YouTube and Playboard links, source page, and displayed counts.

- **URL**: https://apify.com/maximedupre/playboard.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Marketing, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.90 / 1,000 ranked channels

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 📊 Compare YouTube Channels with Playboard

Playboard is for creator researchers, marketers, and analysts who need rankings of YouTube influencers and channels. It reads public Playboard ranking pages and saves each ranked channel with its rank, country, category, metric, identity, YouTube and Playboard links, source page, displayed counts, and parsed counts when available. Use the dataset to compare channels by a chosen scope.

- Build a creator list with **[YouTube Influencers](https://apify.com/maximedupre/playboard/examples/youtube-influencers)** for a chosen country, category, and metric.
- Compare gaming channels with **[YouTube Gaming Rankings](https://apify.com/maximedupre/playboard/examples/youtube-gaming-rankings)**.
- Review subscriber leaders with **[YouTube Subscriber Rankings](https://apify.com/maximedupre/playboard/examples/youtube-subscriber-rankings)**.
- Check a regional list with **[YouTube Rankings by Country](https://apify.com/maximedupre/playboard/examples/youtube-rankings-by-country)**.
- Browse a selected scope with **[YouTube Channel Rankings](https://apify.com/maximedupre/playboard/examples/youtube-channel-rankings)**.

#### 📋 Ranked channel data with source context

Each dataset row is one ranked channel from a selected Playboard page. Shared fields keep the ranking context and channel links together. Displayed count fields keep the text shown by Playboard, while parsed count fields are included when that text can be parsed.

#### ▶️ Run a focused Playboard ranking

Choose one or more countries, one or more content categories, and one ranking metric. The Actor checks every country and category combination with that metric, reads the matching public ranking pages, and saves the ranked channels it finds. The hosted default example checks the worldwide, all-category popularity ranking. Open the dataset when the run finishes.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `countries` | array of strings | Add one or more country scopes, such as `worldwide`, `united-states`, or `japan`. The Actor checks every selected country with every selected category and the chosen metric. |
| `categories` | array of strings | Add one or more Playboard content categories, such as `all`, `gaming`, `music`, or `education`. The Actor checks every selected category with every selected country and the chosen metric. |
| `rankingMetric` | string | Choose one metric: `popularity`, `subscribers`, `views`, `superchat`, `growth`, `decline`, or `live-watched`. The output includes the measures shown on the selected ranking. |

**Example input**

This is the public input from the successful hosted default-input run:

```json
{
  "countries": [
    "worldwide"
  ],
  "categories": [
    "all"
  ],
  "rankingMetric": "popularity"
}
```

#### 🧾 Output

The run output includes one field, `dataset` (URL), which opens the default dataset view. The dataset uses one ranked-channel row shape. The `superChatEarningsDisplayed`, `growthDisplayed`, `declineDisplayed`, and `liveWatchedDisplayed` fields are included when the selected ranking provides them. Parsed count fields are included when the displayed value can be parsed.

**Ranked channel row**

| Field | Type | What it does |
| --- | --- | --- |
| `rank` | integer | Channel position on the selected Playboard ranking page. |
| `country` | string | Country scope used for the ranking. |
| `category` | string | Playboard content category used for the ranking. |
| `rankingMetric` | string | Playboard metric used to order the ranking. |
| `channelName` | string | Channel name shown by Playboard. |
| `youtubeChannelId` | string | YouTube channel identifier for the result. |
| `youtubeUrl` | URL | Direct link to the YouTube channel. |
| `playboardUrl` | URL | Direct link to the channel on Playboard. |
| `sourceRankingPageUrl` | URL | Playboard ranking page that produced the row. |
| `subscriberCountDisplayed` | string | Subscriber count as shown by Playboard. |
| `subscriberCount` | integer, optional | Parsed subscriber count when the displayed value can be parsed. |
| `viewCountDisplayed` | string | View count as shown by Playboard. |
| `viewCount` | integer, optional | Parsed view count when the displayed value can be parsed. |
| `videoCountDisplayed` | string | Video count as shown by Playboard. |
| `videoCount` | integer, optional | Parsed video count when the displayed value can be parsed. |
| `superChatEarningsDisplayed` | string, optional | SuperChat earning estimate as shown when the selected ranking provides it. |
| `growthDisplayed` | string, optional | Growth measure as shown when the selected ranking provides it. |
| `declineDisplayed` | string, optional | Decline measure as shown when the selected ranking provides it. |
| `liveWatchedDisplayed` | string, optional | Live-watched measure as shown when the selected ranking provides it. |

**Example ranked channel row**

This complete row is from a successful current-beta run for the input above:

```json
{
  "rank": 1,
  "country": "worldwide",
  "category": "all",
  "rankingMetric": "popularity",
  "channelName": "Ariel Philippines",
  "youtubeChannelId": "UCG5fA_CSbVZlaGleTNMBdjQ",
  "youtubeUrl": "https://www.youtube.com/channel/UCG5fA_CSbVZlaGleTNMBdjQ",
  "playboardUrl": "https://playboard.co/en/channel/UCG5fA_CSbVZlaGleTNMBdjQ",
  "sourceRankingPageUrl": "https://playboard.co/en/youtube-ranking/most-popular-all-channels-in-worldwide-daily",
  "subscriberCountDisplayed": "70,100",
  "subscriberCount": 70100,
  "viewCountDisplayed": "1.13B",
  "viewCount": 1135085407,
  "videoCountDisplayed": "244 videos",
  "videoCount": 244
}
```

#### 💳 Pricing

**Pricing event**

The Actor uses pay-per-event pricing. One `ranked-channel-result` event is counted when one ranked channel is saved to the dataset. The price shown in the Store applies to this event.

#### 🔌 Integrations

**Using the data**

Open the dataset in Apify or retrieve its rows through the Apify API. Export the rows for analysis in your own tools.

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Which fields change with the ranking metric?

Every row keeps its rank, country, category, channel identity, links, and displayed subscriber, view, and video counts. A selected ranking can also provide SuperChat, growth, decline, or live-watched fields.

##### Can I combine several countries and categories in one run?

Yes. The Actor checks each selected country with each selected category for the one ranking metric you choose.

##### Are count values kept as shown by Playboard?

Yes. The displayed fields keep Playboard's text, including abbreviations or other formatting. Parsed integer fields are included when the displayed value can be parsed.

##### Does each channel include its source ranking page?

Yes. `sourceRankingPageUrl` points to the Playboard ranking page that produced the row. The row also includes direct YouTube and Playboard channel links.

##### Can I use this for historical rank changes?

No. Each run reads the selected ranking pages at that time. The Actor does not provide historical ranking archives, rank-change tracking, or alerts.

##### Does it read private YouTube or Playboard data?

No. It reads public Playboard ranking pages and does not cover private or login-gated data.

##### What if a selected page has fewer ranked channels?

The Actor returns the ranked entries available on that page, subject to the source page's current contents.

### 📝 Changelog

**v0.0** (17-09-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~playboard/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [YouTube Channel Search Scraper](https://apify.com/maximedupre/youtube-channel-search-scraper): Find public channels from keywords before choosing a Playboard scope.
- [YouTube Channel Statistics Scraper](https://apify.com/maximedupre/youtube-channel-statistics-scraper): Enrich a known channel with public subscriber, view, and video counts.
- [YouTube Similar Channels Finder](https://apify.com/maximedupre/youtube-similar-channels): Discover public channels related to a topic or channel you are studying.
- [YouTube Trending Videos Scraper](https://apify.com/maximedupre/youtube-trending-videos-scraper): Compare ranked YouTube videos by source and region.
- [Influencer Scraper](https://apify.com/maximedupre/influencer-scraper): Build public influencer profile lists across YouTube and other social platforms.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `countries` (type: `array`):

Add one or more country scopes. The Actor checks every selected country with every selected category and the ranking metric you choose.

## `categories` (type: `array`):

Add one or more Playboard content categories. The Actor checks every selected category with every selected country and the ranking metric you choose.

## `rankingMetric` (type: `string`):

Choose one metric: popularity, subscribers, views, SuperChat, growth, decline, or live watched. The output includes the measures shown on the selected ranking.

## Actor input object example

```json
{
  "countries": [
    "holy-see"
  ],
  "categories": [
    "all"
  ],
  "rankingMetric": "popularity"
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "countries": [
        "holy-see"
    ],
    "categories": [
        "all"
    ],
    "rankingMetric": "popularity"
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/playboard").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "countries": ["holy-see"],
    "categories": ["all"],
    "rankingMetric": "popularity",
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/playboard").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "countries": [
    "holy-see"
  ],
  "categories": [
    "all"
  ],
  "rankingMetric": "popularity"
}' |
apify call maximedupre/playboard --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/playboard"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mqbD4wPf50pTyUKXu/builds/6ZrzqKhjKe0YEEw8b/openapi.json
