# ViewStats.com YouTube Scraper for analytics and metrics data (`deltaspider/viewstats-scraper`) Actor

A high-performance web scraper for extracting comprehensive YouTube creator analytics from ViewStats.com

- **URL**: https://apify.com/deltaspider/viewstats-scraper.md
- **Developed by:** [delta spider](https://apify.com/deltaspider) (community)
- **Categories:** Automation, Social media, Videos
- **Features:** Limited permissions
- **Stats:** 67 total users, 2 monthly users, 99.7% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 basic 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

**Turn YouTube handles into current Viewstats channel analytics, rankings, growth history, revenue estimates, projections, and video data.** This YouTube channel analytics scraper works without a Viewstats login or Viewstats API key and returns one structured dataset row per channel.

Use it as a no-code scraper in Apify Console or as an **unofficial Viewstats API** from your own application. Basic channel results cost **$2 per 1,000 channels**. Rich results with any optional dataset cost **$6 per 1,000 channels**. Platform usage is included.

[Scrape your first YouTube channel](https://console.apify.com/actors/OG3sbTvXqyzHr01SD/input)

### What does Viewstats Scraper do?

Viewstats Scraper extracts public YouTube creator analytics from [Viewstats.com](https://www.viewstats.com/) by YouTube handle. Give it one or more handles such as `@mrbeast`, select the analytics you need, and receive a clean dataset for research, reporting, or automation.

Each channel result combines the analytics you select, ready to export or use in your own reporting workflow.

#### Why use this Viewstats scraper?

- **Start with one handle:** no cookies, Viewstats account, or target-site API key required.
- **Pay for the depth you need:** use inexpensive basic results or opt into historical and video analytics.
- **Keep related data together:** profile, growth, rankings, projections, and videos share one channel row.
- **Process channels in bulk:** submit multiple handles in one run.
- **Automate recurring research:** schedule runs, call the Actor through the Apify API, or connect the dataset to other tools.
- **Export without cleanup:** download JSON, CSV, Excel, XML, or HTML from the default dataset.

### What YouTube analytics can you scrape from Viewstats?

| Data group            | Example fields                                                                                   | Included by default |
| --------------------- | ------------------------------------------------------------------------------------------------ | ------------------- |
| Channel profile       | Channel ID, display name, handle, avatar, banner, country, verified status                       | Yes                 |
| Channel totals        | Subscribers, total views, video count, 90-day views per video                                    | Yes                 |
| Rankings              | Global views, global subscribers, country, and category subscriber rankings                      | Yes                 |
| About data            | Public channel description and profile metadata exposed by Viewstats                             | Optional            |
| Growth history        | Subscriber, view, upload, and estimated revenue changes over 7, 28, 90, and 365 days or all time | Optional            |
| Channel averages      | Daily, weekly, monthly, and yearly views, subscribers, revenue ranges, and upload frequency      | Optional            |
| Performance summaries | Weekly, monthly, quarterly, yearly, and all-time totals and deltas                               | Optional            |
| Longs vs Shorts       | Upload and view splits by content format and period                                              | Optional            |
| Projections           | Subscriber and view forecasts plus projected milestones                                          | Optional            |
| Similar channels      | Related channels, similarity scores, and current totals                                          | Optional            |
| Long-form videos      | Titles, descriptions, views, likes, comments, dates, duration, thumbnails, and outlier scores    | Optional            |
| Shorts                | Titles, descriptions, views, likes, comments, dates, duration, thumbnails, and outlier scores    | Optional            |

Fields depend on what Viewstats exposes for each channel. Optional datasets are included only when their input switches are enabled.

### What can you do with Viewstats data?

#### Vet YouTube creators for campaigns

Compare audience size, growth, rankings, recent uploads, and long-form versus Shorts performance before choosing creators for sponsorships or partnerships.

#### Monitor competing YouTube channels

Schedule the same handle list to run daily or weekly. Track subscriber and view changes, upload frequency, estimated revenue ranges, and projected milestones in a consistent dataset.

#### Find content and format opportunities

Use outlier scores, video-level engagement, channel averages, and long-form versus Shorts splits to see which topics and formats outperform a creator's baseline.

#### Build creator analytics workflows

Send structured channel data to a spreadsheet, dashboard, database, CRM, agent, or internal research tool through Apify datasets, webhooks, and API clients.

### How to scrape Viewstats YouTube channel analytics

1. Open [Viewstats Scraper in Apify Console](https://console.apify.com/actors/OG3sbTvXqyzHr01SD/input).
2. Add one or more YouTube handles such as `@mrbeast`, or channel URLs such as `https://www.youtube.com/@mrbeast`.
3. Leave every optional switch off for basic channel data, or enable the history, comparison, projection, similar-channel, or video datasets you need.
4. If you request videos, choose how many long-form videos and Shorts to return. The default is 40 of each and the maximum is 200 of each.
5. Click **Start** and wait for the run to finish.
6. Open the dataset to inspect the table, download it, or connect it to another workflow.

[Run Viewstats Scraper](https://console.apify.com/actors/OG3sbTvXqyzHr01SD/input)

### How much does Viewstats scraping cost?

Viewstats Scraper uses pay-per-event pricing. Platform compute and dataset usage are included in the event price, so the Actor does not add a separate platform-usage charge.

| Event            |              Price | When it is charged                                                                           |
| ---------------- | -----------------: | -------------------------------------------------------------------------------------------- |
| Basic channel    | $0.002 per channel | A channel row containing only the always-included profile, totals, rankings, and VPV metrics |
| Enriched channel | $0.006 per channel | A channel row produced when any optional dataset is selected                                 |

Basic and enriched channel events are mutually exclusive. The same channel is never charged as both.

| Example run             | Actor charge |
| ----------------------- | -----------: |
| 1 basic channel         |       $0.002 |
| 100 basic channels      |       $0.200 |
| 1,000 basic channels    |       $2.000 |
| 1 enriched channel      |       $0.006 |
| 100 enriched channels   |       $0.600 |
| 1,000 enriched channels |       $6.000 |

There is no start fee. Channel events are charged only for rows written to the dataset, so a run that produces no channel rows has no Actor charge.

The Actor respects the maximum total charge set for a run. If that budget cannot cover every requested channel, it processes only the affordable prefix and reports how many handles were skipped.

### Viewstats Scraper input

See the [Input tab](https://apify.com/deltaspider/viewstats-scraper/input-schema) for the complete form and defaults.

```json
{
  "youtube_handles": ["@mrbeast", "@mkbhd"],
  "scrape_28_days": true,
  "scrape_averages": true,
  "scrape_longs_vs_shorts": true,
  "scrape_longs": true,
  "max_longs": 40
}
```

#### Required input

| Field             | Type         | Description                                                                                                               |
| ----------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------- |
| `youtube_handles` | string array | One or more YouTube handles beginning with `@`, or `youtube.com/@handle` channel URLs. Keyword searches are not accepted. |

#### Optional analytics

| Field                    | Adds to each channel result                             |
| ------------------------ | ------------------------------------------------------- |
| `scrape_about`           | Public about/profile data                               |
| `scrape_averages`        | Channel averages and estimated revenue ranges           |
| `scrape_7_days`          | Seven days of daily statistics                          |
| `scrape_28_days`         | Twenty-eight days of daily statistics                   |
| `scrape_90_days`         | Ninety days of weekly statistics                        |
| `scrape_365_days`        | One year of weekly statistics                           |
| `scrape_all_time`        | All-time weekly statistics                              |
| `scrape_info_cards`      | Period totals, changes, and estimated revenue summaries |
| `scrape_longs_vs_shorts` | Long-form versus Shorts performance splits              |
| `scrape_projections`     | View, subscriber, and milestone projections             |
| `scrape_similar`         | Related channels and similarity scores                  |
| `scrape_longs`           | Newest long-form videos, limited by `max_longs`         |
| `scrape_shorts`          | Newest Shorts, limited by `max_shorts`                  |

`max_longs` and `max_shorts` default to 40 and accept values from 1 through 200. `max_request_retries` defaults to 10. Channels unavailable on Viewstats are skipped. No proxy setup is needed.

### Viewstats Scraper output

Every successfully scraped handle produces one merged row in the default dataset. You can download the dataset in formats such as JSON, HTML, CSV, Excel, or XML.

The following abbreviated example shows the shape of an enriched channel result. Values are illustrative.

```json
{
  "id": "UC00000000000000000000",
  "displayName": "Example Creator",
  "handle": "examplecreator",
  "subscriberCount": 1250000,
  "viewCount": 480000000,
  "videoCount": 320,
  "verified": true,
  "country": "US",
  "globalViewsRanking": 1800,
  "globalSubscribersRanking": 1500,
  "stats28": [
    {
      "date": "2026-08-30",
      "subscriberCount": 1250000,
      "subscriberCountDelta": 5000,
      "viewCount": 480000000,
      "viewCountDelta": 820000,
      "estimatedRevenueUsd": 640
    }
  ],
  "longsVsShorts": {
    "monthly": {
      "videos": 12,
      "longs": 4,
      "shorts": 8,
      "views": 9200000
    }
  },
  "longVideos": [
    {
      "id": "video-id",
      "title": "Example video",
      "viewCount": 2400000,
      "likeCount": 88000,
      "commentCount": 3100,
      "outlierScore": 1.42
    }
  ]
}
```

### Viewstats API, scheduling, and integrations

You can run this Actor programmatically from the [API tab](https://apify.com/deltaspider/viewstats-scraper/api), use the Apify JavaScript or Python client, and retrieve results from the default dataset.

For recurring creator monitoring, save the input as an Apify Task and schedule it to run daily, weekly, or at another interval. Use webhooks to notify your application when a run finishes.

Apify [integrations](https://apify.com/integrations) can send Viewstats data to Google Sheets, Zapier, Make, Slack, Airbyte, and other workflow tools. You can also connect Actor tools to compatible AI and agent workflows through Apify's API and MCP support.

### Tips for reliable and cost-effective runs

- Keep optional switches off when profile totals and rankings are enough. This uses the lower-priced basic channel event.
- Select only the historical periods you will analyze. Every optional switch changes the whole run to enriched pricing.
- Start with the default video limit of 40. Increase it only when you need a deeper back catalog.
- Split very large handle lists into repeatable Apify Tasks if you need separate schedules or budgets.
- Treat revenue figures and projections as Viewstats estimates, not audited financial results.

### Viewstats Scraper FAQ

#### Is this an official Viewstats API?

No. This is an independent scraper and unofficial API alternative for public data exposed by Viewstats. It is not affiliated with or endorsed by Viewstats or YouTube.

#### Do I need a Viewstats account or API key?

No. You only need an Apify account to run the Actor; no Viewstats account or API key is required.

#### Can I scrape multiple YouTube channels at once?

Yes. Add multiple values to `youtube_handles`. Each successful handle produces one dataset row.

#### Can I use channel URLs or search keywords?

Channel URLs of the form `https://www.youtube.com/@handle` are accepted and reduced to the handle. Other URL forms, such as `/channel/UC...` IDs, and search keywords are not accepted: the run stops before scraping and the log lists the entries that need attention.

#### What is the difference between basic and enriched channel results?

A basic result contains the channel profile, totals, rankings, and 90-day views-per-video metric. An enriched result is produced when any optional analytics or video switch is enabled. It includes the basic fields plus the selected datasets.

#### Why might a channel return no result?

Check that the handle begins with `@` and contains 3 to 30 supported characters after it, or that the URL is of the form `https://www.youtube.com/@handle`. A valid YouTube channel may still be unavailable on Viewstats, in which case the log says so and the handle is not retried, or Viewstats may be temporarily rejecting requests. Failed handles are logged and are not charged as channel results.

#### How is this different from the YouTube Data API?

The YouTube Data API is the official source for YouTube resources. This Actor focuses on analytics Viewstats derives or presents, including channel rankings, estimated revenue ranges, format comparisons, similar channels, and projections. Use the source that matches the data and reliability guarantees your workflow requires.

#### Can I schedule the scraper or call it from code?

Yes. Use Apify Tasks and schedules for recurring runs, webhooks for completion events, or the [API tab](https://apify.com/deltaspider/viewstats-scraper/api) for JavaScript, Python, command-line, and direct HTTP examples.

#### Is it legal to scrape Viewstats?

This Actor extracts publicly accessible data. You are responsible for using it in accordance with applicable laws, contracts, and the rights of data subjects.

### Support and responsible use

If a valid handle fails consistently or the output contract changes, open the Actor's [Issues tab](https://apify.com/deltaspider/viewstats-scraper/issues) with the handle, selected options, and a shared run link. Do not include private credentials.

This Actor does not extract private account data such as private email addresses, gender, or location. It extracts only publicly accessible data exposed by Viewstats. Public channel results can still contain personal data protected by the GDPR in the European Union and by other regulations around the world. Do not scrape or retain personal data unless you have a legitimate reason to do so. If you are unsure whether your reason is legitimate, consult qualified counsel.

[Run Viewstats Scraper](https://console.apify.com/actors/OG3sbTvXqyzHr01SD/input)

# Actor input Schema

## `youtube_handles` (type: `array`):

YouTube handles such as @mrbeast, or channel URLs such as https://www.youtube.com/@mrbeast. Whitespace is trimmed and URLs are reduced to their handle.

## `max_request_retries` (type: `integer`):

Number of times to retry a failed creator scrape on Apify

## `scrape_7_days` (type: `boolean`):

Scrape 7 days stats

## `scrape_28_days` (type: `boolean`):

Scrape 28 days stats

## `scrape_90_days` (type: `boolean`):

Scrape 3 months stats

## `scrape_365_days` (type: `boolean`):

Scrape 365 days stats

## `scrape_all_time` (type: `boolean`):

Scrape all-time stats

## `scrape_longs` (type: `boolean`):

Scrape long videos stats

## `scrape_shorts` (type: `boolean`):

Scrape short videos stats

## `scrape_about` (type: `boolean`):

Scrape about me stats

## `scrape_averages` (type: `boolean`):

Scrape averages stats

## `scrape_info_cards` (type: `boolean`):

Scrape info cards

## `scrape_longs_vs_shorts` (type: `boolean`):

Scrape longs vs shorts stats

## `scrape_projections` (type: `boolean`):

Scrape future projections stats

## `scrape_similar` (type: `boolean`):

Scrape similar channels

## `max_longs` (type: `integer`):

Maximum number of long videos to scrape. Limited to 200 to keep enriched-result costs predictable.

## `max_shorts` (type: `integer`):

Maximum number of short videos to scrape. Limited to 200 to keep enriched-result costs predictable.

## Actor input object example

```json
{
  "youtube_handles": [
    "@mrbeast"
  ],
  "max_request_retries": 10,
  "scrape_7_days": false,
  "scrape_28_days": false,
  "scrape_90_days": false,
  "scrape_365_days": false,
  "scrape_all_time": false,
  "scrape_longs": false,
  "scrape_shorts": false,
  "scrape_about": false,
  "scrape_averages": false,
  "scrape_info_cards": false,
  "scrape_longs_vs_shorts": false,
  "scrape_projections": false,
  "scrape_similar": false,
  "max_longs": 40,
  "max_shorts": 40
}
```

# 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 = {
    "youtube_handles": [
        "@mrbeast"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("deltaspider/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 = { "youtube_handles": ["@mrbeast"] }

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,deltaspider/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/OG3sbTvXqyzHr01SD/builds/S0rXBSFbdO372iqIu/openapi.json
