# Viewstats YouTube Channel Rankings, Analytics & Revenue Scraper (`getascraper/viewstats-scraper`) Actor

Pull exact YouTube channel rankings, estimated revenue, and Shorts versus long-form splits from Viewstats.com. Search by name or track a list on a schedule and see exactly which channels are new, changed, or gone since the last run. No login, 30+ fields, exports to Excel, CSV, or JSON.

- **URL**: https://apify.com/getascraper/viewstats-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Social media, Lead generation, For creators
- **Features:** Limited permissions
- **Stats:** 14 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.54 / 1,000 channel records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## 📈 Viewstats YouTube Channel Rankings, Analytics & Revenue Scraper

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;margin-bottom:0">
<tr>
<td colspan="4" style="padding:14px 18px;background:#FDECEC;border:none;border-top:3px solid #DC2626;border-left:1px solid #F7D0CE;border-right:1px solid #F7D0CE;color:#1C1917;border-radius:10px 10px 0 0">
<span style="font-size:16px;font-weight:700;color:#1C1917">One suite for creator and sponsorship intelligence.</span> <span style="font-size:15px;color:#57534E">Live audience data, growth analytics, and archival downloads across Kick, Twitch, and YouTube, cross-linked so a research or sponsorship workflow never needs a second data source.</span>
</td>
</tr>
<tr>
<td colspan="4" style="padding:10px 14px;background:#DC2626;border:none;border-left:1px solid #F7D0CE;border-right:1px solid #F7D0CE;color:#FFFFFF">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">LIVE-STREAMING &amp; CREATOR INTELLIGENCE SUITE</span>
<span style="color:#FFFFFF;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Channel data, growth analytics, and video downloads across Kick, Twitch, and YouTube</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border:none;border-left:1px solid #F7D0CE;border-bottom:1px solid #F7D0CE;vertical-align:top;width:25.0%;background:#FFFFFF;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-n0AgcQ7QDd1uHdM6Q-ckVSht3rh3-images_%2851%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/kick-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Kick Streamer Monitor</a></span><br>
<span style="color:#57534E;font-size:11px">Live audience and channel data</span>
</td>
<td style="padding:10px 12px;border:none;border-left:1px solid #F7D0CE;border-bottom:1px solid #F7D0CE;vertical-align:top;width:25.0%;background:#FFFFFF;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-0HOa61SNYHSU1aJeM-TdVFnkDikD-twitch-logo_578229-259_%281%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/twitch-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Twitch Scraper</a></span><br>
<span style="color:#57534E;font-size:11px">Channels, live streams, clips</span>
</td>
<td style="padding:10px 12px;border:none;border-left:1px solid #F7D0CE;border-bottom:1px solid #F7D0CE;vertical-align:top;width:25.0%;background:#FDECEC;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-yPcp52fDsr7deKgLb-UkUkNlVUhl-channels4_profile.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/viewstats-scraper" style="color:#DC2626;text-decoration:none;font-weight:700;font-size:13px">Viewstats YouTube Monitor</a></span><br>
<span style="color:#DC2626;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
<td style="padding:10px 12px;border:none;border-left:1px solid #F7D0CE;border-right:1px solid #F7D0CE;border-bottom:1px solid #F7D0CE;vertical-align:top;width:25.0%;background:#FFFFFF;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-6yE6UrUImbGHIqCYL-8Nt8QFvzHl-images_%2851%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/kick-video-downloader" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Kick Video Downloader</a></span><br>
<span style="color:#57534E;font-size:11px">Download clips and VODs</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0;margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#FDECEC;border:1px solid #F7D0CE;border-top:none;color:#1C1917">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Know a channel's real rank and revenue before you pitch it.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pull exact YouTube rankings, estimated revenue, and Shorts versus long-form splits straight from Viewstats.com in a fraction of a second per channel. Put it on a schedule and it tells you exactly which channels moved since last time.</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7D0CE;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 0 10px">
<span style="font-size:15px;font-weight:800;color:#DC2626">📊 Global rankings</span><br>
<span style="font-size:12px;color:#57534E">Subscriber and view rank, globally, by country, and by category.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7D0CE;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#DC2626">💰 Estimated revenue</span><br>
<span style="font-size:12px;color:#57534E">Low and high revenue estimates across five windows, from last week to all time.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7D0CE;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#DC2626">🔔 Change tracking</span><br>
<span style="font-size:12px;color:#57534E">Schedule it and see exactly which channels are new, updated, or gone since last run.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7D0CE;border-left:none;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 10px 0">
<span style="font-size:15px;font-weight:800;color:#DC2626">⚡ 250ms per channel</span><br>
<span style="font-size:12px;color:#57534E">Reads data directly from the server. No slow browser load.</span>
</td>
</tr>
</table>

**Get exact YouTube channel statistics, global rankings, estimated revenue, and Shorts versus long-form splits from Viewstats.com.** Extract over 30 detailed fields in roughly 250 milliseconds per channel. Give it a URL, a handle, or just a channel name to search for. Download results as Excel, CSV, or JSON.

No complex setup, no account logins, and no API keys required. The first 50 results of every run are free, and you only pay for what you collect after that.

***

### 💡 Why use YouTube Analytics Scraper

- **Scout creators with real numbers**: Validate subscriber counts, view trends, and revenue estimates before you commit to a brand deal or sponsorship.
- **Track competitors on a schedule**: Run the same tracked list weekly and get back only the channels that changed, not a full re-scrape you have to diff yourself.
- **Source growing channels for outreach**: Search Viewstats by name or niche term, then pull full stats for every match to build a prospect list.
- **Study Shorts versus long-form trends**: Compare upload counts and view splits by format across five time windows to see what's actually driving growth.
- **Check official rankings before you pitch**: Pull global, country, and category rank by subscribers and views for any channel in seconds.

***

### 🚀 How to use YouTube Analytics Scraper

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#FDECEC;border:1px solid #F7D0CE;border-radius:10px 0 0 10px;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#DC2626;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Add channels or a search term</span><br>
<span style="font-size:12px;color:#57534E">Paste YouTube or Viewstats URLs, handles like @mrbeast, or a name to search for matching channels.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FDECEC;border:1px solid #F7D0CE;border-left:none;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#DC2626;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick snapshot or changes mode</span><br>
<span style="font-size:12px;color:#57534E">Snapshot pulls current stats. Changes mode compares against your last run on a schedule.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FDECEC;border:1px solid #F7D0CE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#DC2626;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export your results</span><br>
<span style="font-size:12px;color:#57534E">Download instantly as Excel, CSV, JSON, or connect to Google Sheets.</span>
</td>
</tr>
</table>

***

### 📥 Input

| Field | Type | Required | Description |
| --- | --- | :---: | --- |
| `channels` | array of objects | No | Channels to track. Each item takes a channel URL, a handle, or a stable channel ID, plus an optional label used in the output. |
| `searchQueries` | array of objects | No | Search Viewstats by channel name or handle to discover channels, then extract full stats for each match. |
| `startUrls` | array of URLs | No | Backward compatible list of full YouTube or Viewstats channel URLs. |
| `handles` | array of strings | No | Backward compatible list of handles, for example `@mrbeast`. |
| `monitorMode` | enum | No | `snapshot` returns current stats for every channel. `changes` returns only channels that are new, updated, reappeared, or expired since the last run with the same scope. |
| `monitorScope` | string | No | A label for this tracked list. Reuse the same value on scheduled runs so changes mode has something to compare against. |
| `includeUnchanged` | boolean | No | In changes mode, also include channels whose tracked numbers did not move. |
| `includeProfileDetails` | boolean | No | Add bio, creation date, country, and primary category when Viewstats provides them. |
| `includeSimilarChannels` | boolean | No | Add a list of similar channels with a similarity score for each result. |
| `timeSeries` | object | No | Add historical daily or weekly growth data per channel, with options to include revenue, events, and format breakdowns. |
| `sortBy` | enum | No | Field used to order results and assign the rank column, for example subscriber rank or view count. |
| `sortOrder` | enum | No | Ascending or descending order for the sort field. |
| `maxConcurrency` | integer | No | Maximum number of channels processed at the same time. |
| `maxRequestRetries` | integer | No | Automatic retries for a channel that fails to load. |
| `maxRequestsPerCrawl` | integer | No | Safety cap on the total number of channels processed in one run. |
| `forceBrowserFallback` | boolean | No | Use the slower visual loading mode instead of the fast direct read. Only needed if the fast mode gets blocked. |
| `proxyConfiguration` | object | No | Optional proxy settings for the run. |

***

### 📤 Output

Each row represents one channel's stats at the time it was retrieved, or one change event when running in changes mode. Ranking, revenue, and format fields are grouped by time window so you can pull exactly the period you need.

Here is a realistic example of an output row (the `monthly` and `allTime` windows are shown; `weekly`, `ninetyDays`, and `yearly` follow the same shape):

```json
{
  "channelHandle": "@mrbeast",
  "channelName": "MrBeast",
  "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA",
  "avatarUrl": "https://yt3.ggpht.com/nxYrc_1_2f77DoBadyxMTmv7ZpRZapHR5jbuYe7PlPd5cIRJxtNNEYyOC0ZsxaDyJJzXrnJiuDE=s800-c-k-c0x00ffffff-no-rj",
  "bannerUrl": "https://yt3.googleusercontent.com/mHMO_eEMp0dPvh0ADwXhPXNYb_GnjSVsLI8biqF1CpxT8OPl7izhNQsDPD3JHhd5y5Mg9GrP",
  "country": "US",
  "verified": true,
  "videoCount": 988,
  "subscriberCount": 502000000,
  "viewCount": 129749433863,
  "vpv90": 110584326,
  "subscribersRank": "#1",
  "viewsRank": "#12",
  "globalSubscribersRanking": 1,
  "globalViewsRanking": 12,
  "countrySubscriberRanking": 1,
  "categorySubscriberRanking": 1,
  "shortViews": "5.6B",
  "shortPercent": "90%",
  "longViews": "618M",
  "longPercent": "10%",
  "performance": {
    "monthly": {
      "views": 6180565059,
      "viewsDelta": 1468652896,
      "subscribers": 14000000,
      "subscribersDelta": 5000000,
      "estimatedRevenueLowUsd": 1648858,
      "estimatedRevenueHighUsd": 4641675,
      "estimatedRevenueDelta": 11896
    },
    "allTime": {
      "views": 129749433863,
      "viewsDelta": 0,
      "subscribers": 502000000,
      "subscribersDelta": 0,
      "estimatedRevenueLowUsd": 173151082,
      "estimatedRevenueHighUsd": 480812407,
      "estimatedRevenueDelta": 0
    }
  },
  "shortsVsLongs": {
    "monthly": {
      "videos": 10,
      "shorts": 7,
      "longs": 3,
      "views": 6180565059,
      "longViews": 618047915,
      "shortViews": 5562517143
    },
    "allTime": {
      "videos": 1008,
      "shorts": 196,
      "longs": 812,
      "views": 129749433863,
      "longViews": 53635106984,
      "shortViews": 76114326878
    }
  },
  "estimatedMetricNote": "Viewstats estimate, not verified earnings.",
  "sourceUrl": "https://www.viewstats.com/@mrbeast",
  "inputId": "channel-1-mrbeast",
  "retrievedAt": "2026-10-02T19:42:51.976Z",
  "status": "success",
  "resultRank": 1
}
```

When `includeProfileDetails`, `includeSimilarChannels`, or `timeSeries` are turned on, the row also carries a `profileDetails` object, a `similarChannels` array, and a `timeSeries` array. In changes mode, successful rows also carry `changeType` (`NEW`, `UPDATED`, `REAPPEARED`, `EXPIRED`, or `UNCHANGED`), `changedFields`, `firstSeenAt`, and `lastSeenAt`.

***

### 📊 Data table

| Field | Type | Description |
| --- | :---: | --- |
| `channelHandle` | string | The YouTube handle beginning with @. |
| `channelName` | string | The display name as shown on YouTube. |
| `channelId` | string | Unique YouTube channel ID starting with UC. |
| `country` | string | Two-letter ISO country code. |
| `verified` | boolean | True if verified by YouTube. |
| `videoCount` | integer | Total uploaded video count. |
| `subscriberCount` | integer | Current subscriber count. |
| `viewCount` | integer | Total accumulated channel view count. |
| `vpv90` | integer | Average views per video over the last 90 days. |
| `globalSubscribersRanking` | integer | Global rank by subscribers. |
| `globalViewsRanking` | integer | Global rank by views. |
| `countrySubscriberRanking` | integer | Subscriber rank within the channel's country. |
| `categorySubscriberRanking` | integer | Subscriber rank within the channel's category. |
| `performance` | object | Views, view change, subscriber change, and estimated revenue, grouped by weekly, monthly, 90-day, yearly, and all-time windows. |
| `shortsVsLongs` | object | Upload counts and view splits for Shorts versus long-form video, grouped by the same five windows. |
| `profileDetails` | object | Bio, creation date, country, and primary category, when requested. |
| `similarChannels` | array | Similar channels with a similarity score, when requested. |
| `timeSeries` | array | Historical daily or weekly growth points, when requested. |
| `changeType` | string | New, updated, reappeared, expired, or unchanged, in changes mode. |
| `changedFields` | array | Which tracked fields changed since the last run, in changes mode. |
| `resultRank` | integer | Position after applying `sortBy` and `sortOrder`. |
| `sourceUrl` | string | The Viewstats profile URL. |
| `retrievedAt` | string | ISO timestamp of the extraction. |
| `status` | string | `success`, `failed`, or `expired`. |

***

### 💰 Pricing

This Actor is pay per result. The first results of every run are free, so you can test it before committing to anything. There is no subscription and no minimum commitment, and an empty run costs nothing.

Reading data directly from the server instead of loading a full browser page keeps platform compute costs low, so more of what you pay goes toward results rather than overhead.

***

### ⭐ Enjoying Viewstats YouTube Channel Rankings, Analytics & Revenue Scraper?

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#FDECEC;border:1px solid #FDECEC;border-left:5px solid #DC2626;border-radius:10px 10px 0 0;color:#1C1917">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Pulling exact subscriber ranks, estimated revenue, and change tracking for a channel in 250 milliseconds instead of a slow browser load?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other creator agencies and brand partnership teams find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#DC2626;border:1px solid #DC2626;border-left:5px solid #DC2626;border-top:none;border-radius:0 0 10px 10px;text-align:center;color:#FFFFFF">
<a href="https://apify.com/getascraper/viewstats-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

***

### 🛠️ Tips and optimization

- **Scrape in bulk**: Paste hundreds of handles or URLs in a single run, or let `searchQueries` discover them for you. The scraper processes them in parallel for maximum speed.
- **Track changes, not full re-scrapes**: Set `monitorMode` to `changes` and reuse the same `monitorScope` on every scheduled run. You get back only what moved.
- **Integrate with Google Sheets**: Set up an Apify integration to automatically sync results into a Google Sheet, Zapier, or Make scenario.
- **Schedule recurring runs**: Track competitor channels weekly or monthly and watch their estimated revenue and format mix shift over time.

***

### ❓ FAQ

**Is scraping Viewstats legal?**
This scraper retrieves publicly visible data that anyone can see without logging in. You are responsible for ensuring your use case complies with applicable laws and standard crawling guidelines.

**How is the revenue estimated?**
Estimated revenue reflects standard YouTube advertiser payouts calculated from regional CPM benchmarks. The low and high bounds are Viewstats' own best-effort estimates, not verified creator earnings.

**What is the difference between snapshot and changes mode?**
Snapshot returns the current stats for every channel you list, every time. Changes mode compares the current run against the previous one for the same `monitorScope` and returns only channels that are new, updated, reappeared, or expired, which is faster to review on a recurring schedule.

**Why is this scraper so much cheaper than others?**
Most scrapers load the full visual page in a real browser. This one reads data directly from the server, which runs faster, uses far less memory, and keeps execution costs down.

***

### 🛟 Disclaimers and support

- **Disclaimer**: This is an independent scraper that retrieves publicly available information. It is not affiliated with, endorsed by, or sponsored by Viewstats, YouTube, or Google.
- **Support**: For any bug reports, feature requests, or custom field additions, please open a ticket under the **Issues** tab!

### 🔗 Other actors

- [Kick Scraper: Channel, Stream, VOD & Clip Data with Monitoring](https://apify.com/getascraper/kick-scraper) ↗ - extracts stream, clip, and channel data from Kick.com.
- [Twitch Scraper: channels, live streams, clips and games](https://apify.com/getascraper/twitch-scraper) ↗ - pulls channel stats, live streams, and clips from Twitch.
- [Kick Video Downloader: Archive Clips & VODs as MP4 + Watchlist](https://apify.com/getascraper/kick-video-downloader) ↗ - downloads Kick clips and VODs as MP4 before they're gone.
- [ShopMy Creator Scraper](https://apify.com/getascraper/shopmy-creator-scraper) ↗ - collects creator profiles and storefront data from ShopMy.
- [Loom Transcript Extractor: Captions, Metadata, and Monitoring](https://apify.com/getascraper/loom-transcript-scraper) ↗ - extracts transcripts, captions, and metadata from Loom videos.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/viewstats-scraper/changelog.md

# Actor input Schema

## `channels` (type: `array`):

Channel handles, Viewstats URLs, YouTube URLs, or stable UC channel IDs.

## `searchQueries` (type: `array`):

Search Viewstats channels by name or handle, then monitor the returned channels.

## `startUrls` (type: `array`):

Backward-compatible list of Viewstats or YouTube channel URLs.

## `handles` (type: `array`):

Backward-compatible list of handles such as @mrbeast.

## `monitorMode` (type: `string`):

Snapshot emits current rows. Changes emits changed, new, reappeared, and expired rows unless unchanged rows are enabled.

## `monitorScope` (type: `string`):

Explicit scope for this monitor state. Reuse it on scheduled runs to compare snapshots.

## `includeUnchanged` (type: `boolean`):

In changes mode, also emit rows whose tracked fields did not change.

## `includeProfileDetails` (type: `boolean`):

Fetch Viewstats aboutMe fields such as description, creation date, country, and primary category when available.

## `includeSimilarChannels` (type: `boolean`):

Fetch Viewstats similarity results for each channel when a stable channel ID is returned.

## `timeSeries` (type: `object`):

Optionally fetch Viewstats channel history. The endpoint controls are passed through and unavailable points are omitted.

## `sortBy` (type: `string`):

Primary deterministic result ordering and rank field assignment.

## `sortOrder` (type: `string`):

Ascending or descending deterministic result order.

## `maxConcurrency` (type: `integer`):

Maximum number of channel pages processed in parallel.

## `maxRequestRetries` (type: `integer`):

Crawler retries for requests that fail outside the explicit failure path.

## `maxRequestsPerCrawl` (type: `integer`):

Safety limit for channel requests in one run.

## `forceBrowserFallback` (type: `boolean`):

Use the rendered-page fallback instead of the direct HTTP API.

## `proxyConfiguration` (type: `object`):

Optional Apify proxy settings for Viewstats requests.

## Actor input object example

```json
{
  "channels": [],
  "searchQueries": [],
  "startUrls": [],
  "handles": [],
  "monitorMode": "snapshot",
  "monitorScope": "default",
  "includeUnchanged": false,
  "includeProfileDetails": false,
  "includeSimilarChannels": false,
  "timeSeries": {
    "enabled": false
  },
  "sortBy": "globalSubscribersRanking",
  "sortOrder": "asc",
  "maxConcurrency": 10,
  "maxRequestRetries": 3,
  "maxRequestsPerCrawl": 100000,
  "forceBrowserFallback": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/viewstats-scraper").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/viewstats-scraper").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 '{}' |
apify call getascraper/viewstats-scraper --silent --output-dataset

```

## MCP server setup

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

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/yPcp52fDsr7deKgLb/builds/hWBSd5ByzGPUESd24/openapi.json
