# 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
- **Stats:** 53 total users, 2 monthly users, 100.0% 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# 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.

Unlike a browser-based scraper, the Actor calls Viewstats' anonymous channel endpoints directly with plain HTTP. It validates and decrypts each response, fetches selected datasets concurrently, and combines everything into one result per channel.

#### 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. Each handle must start with `@`, for example `@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 `@`. URLs and 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 on Apify. A standard Apify proxy is used automatically on the platform unless you provide a different supported proxy configuration.

### 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. The Actor accesses Viewstats' anonymous public channel endpoints. You only need an Apify account to run the Actor.

#### 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?

No. This Actor accepts YouTube handles beginning with `@`. Extract the handle from the channel URL before adding it to the input.

#### 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. A valid YouTube channel may still be unavailable on Viewstats, 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`):

Creators to scrape

## `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.

## `proxy` (type: `object`):

Select proxy to be used by crawler.

## 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,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# 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"
    ],
    "proxy": {
        "useApifyProxy": false
    }
};

// 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"],
    "proxy": { "useApifyProxy": False },
}

# 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"
  ],
  "proxy": {
    "useApifyProxy": false
  }
}' |
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/FhmSWHsLeabVQABxS/openapi.json
