# ViewStats Scraper – YouTube Channel Analytics & Growth Data (`abotapi/viewstats-channel-analytics`) Actor

Scrape YouTube channel analytics from ViewStats. Look up channels by handle, URL, or keyword search. Returns subscribers, views, rankings, growth from weekly to all-time, revenue estimates, historical time series, longs vs shorts, featured video, and similar channels.

- **URL**: https://apify.com/abotapi/viewstats-channel-analytics.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Social media, Videos, Developer tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 channel results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## ViewStats YouTube Analytics Scraper

Pull rich YouTube channel analytics from ViewStats in seconds. Give it a list of channel handles or URLs (or a keyword to search), and get back subscriber counts, lifetime views, video counts, global and country rankings, period growth with revenue estimates, daily and monthly averages, longs vs shorts splits, the featured video, similar channels, and a full historical time series. Accurate, low cost, and quick to run.

### Why this scraper

- Fast and accurate: clean, structured channel data with no setup.
- Low cost and free-plan friendly, so you can start without a paid subscription.
- More fields than the typical alternative: rankings, week/month/quarter/year/all-time growth, revenue ranges, upload frequency, longs vs shorts, featured video, similar channels, and a daily or monthly time series.
- Two ways in: a list of channels (handles or URLs), or a keyword search that resolves matching channels for you.
- Reliable: keeps working across site updates.
- Pay only for what you collect: profile detail, similar channels, and the time series are optional toggles.

### Data you get

> Sample shape, values are illustrative placeholders, not from a live channel.

| Field | Example |
|---|---|
| channelId | `UC00000000000000000000` |
| handle | `samplecreator` |
| displayName | `Sample Creator` |
| url | `https://www.viewstats.com/@samplecreator/channelytics` |
| youtubeUrl | `https://www.youtube.com/@samplecreator` |
| verified | `true` |
| country | `US` |
| subscriberCount | `1000000` |
| viewCount | `500000000` |
| videoCount | `250` |
| globalSubscribersRanking | `1500` |
| globalViewsRanking | `1800` |
| countrySubscriberRanking | `300` |
| categorySubscriberRanking | `120` |
| viewstatsRanking | `2000` |
| estimatedRevenueLowUsdMonthly | `10000` |
| estimatedRevenueHighUsdMonthly | `30000` |
| uploadFrequencyPerMonth | `8` |
| avatarUrl | `https://yt3.ggpht.com/0000000000000000=s800-c-k-c0x00ffffff-no-rj` |
| bannerUrl | `https://yt3.googleusercontent.com/00000000000000000000` |
| description | `Sample channel description text appears here.` |
| dateCreated | `2015-01-01T00:00:00.000Z` |
| growth | period stats object (week / month / quarter / year / all time) |
| averages | daily / weekly / monthly / yearly averages object |
| longsAndShorts | longs vs shorts split per period |
| featuredVideo | featured video object (title, views, likes, duration) |
| similarChannels | array of related channels with counts and similarity score |
| statsTimeSeries | array of dated data points (subscribers, views, revenue, upload events) |
| scrapedAt | `2026-01-01T00:00:00.000Z` |

### How to use

Search a single channel and get everything:

```json
{
  "mode": "channels",
  "channels": ["@MrBeast"],
  "includeProfileDetails": true
}
````

Several channels by handle and URL, core fields only (cheapest):

```json
{
  "mode": "channels",
  "channels": ["@MrBeast", "https://www.youtube.com/@mkbhd", "tseries"],
  "includeProfileDetails": false,
  "maxItems": 3
}
```

Keyword search, resolve the top matches:

```json
{
  "mode": "search",
  "searchTerms": ["tech reviews", "mrbeast"],
  "maxChannelsPerSearch": 10
}
```

Add similar channels and a daily time series:

```json
{
  "mode": "channels",
  "channels": ["@MrBeast"],
  "includeProfileDetails": true,
  "includeSimilarChannels": true,
  "includeStatsTimeSeries": true,
  "statsRange": "365",
  "statsGroupBy": "daily"
}
```

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| mode | string | `channels` | `channels` for a list of handles or URLs, `search` for keywords. |
| channels | array | `["@MrBeast"]` | Channels mode. Handles (`@MrBeast`, `MrBeast`), ViewStats URLs, or YouTube URLs (`/@handle`, `/channel/UC...`). |
| searchTerms | array | `["mrbeast"]` | Search mode. Keywords to resolve into channels. |
| maxChannelsPerSearch | integer | `10` | Search mode. Max channels resolved per keyword. |
| includeProfileDetails | boolean | `true` | Adds description, creation date, rankings, period growth, revenue ranges, averages, upload frequency, longs vs shorts, and the featured video. |
| includeSimilarChannels | boolean | `false` | Adds related channels with counts and a similarity score. |
| includeStatsTimeSeries | boolean | `false` | Adds the historical data points series. |
| statsRange | string | `365` | Time series window: `28`, `90`, `365`, or `alltime`. |
| statsGroupBy | string | `monthly` | Time series granularity: `daily` or `monthly`. |
| maxItems | integer | `50` | Hard cap on channels written. `0` means unlimited. |
| proxy | object | Apify proxy | Connection settings. The default works on every plan. |
| residentialCountries | array | `US, GB, DE, CA, FR` | Countries rotated through when residential proxy is used as a fallback. |
| maxResidentialRequests | integer | `200` | Cap on residential requests per run, to control cost. `0` disables residential. |
| backupProxyUrl | string | (built in) | Optional last-resort proxy gateway. |

### Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step **after** the scrape — the Apify dataset is never changed.

**What gets written to the connector:** a condensed, human-readable **summary** of each record — not the full JSON. Each item becomes one entry with a **title** and its key fields flattened to plain text. The **complete record always stays in the Apify dataset**.

1. Authorize a connector once under **Apify → Settings → Integrations** (Notion, Linear, Airtable, or Apify).
2. Select it in the **"Pipe results into your apps"** input field. (If the picker is empty, you haven't authorized a connector yet.)
3. For **Notion**, also set `notionParentPageUrl` to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

### Output example

> Sample shape, values are illustrative placeholders, not from a live channel.

```json
{
  "channelId": "UC00000000000000000000",
  "handle": "samplecreator",
  "displayName": "Sample Creator",
  "url": "https://www.viewstats.com/@samplecreator/channelytics",
  "youtubeUrl": "https://www.youtube.com/@samplecreator",
  "verified": true,
  "country": "US",
  "subscriberCount": 1000000,
  "viewCount": 500000000,
  "videoCount": 250,
  "globalSubscribersRanking": 1500,
  "globalViewsRanking": 1800,
  "countrySubscriberRanking": 300,
  "categorySubscriberRanking": 120,
  "viewstatsRanking": 2000,
  "estimatedRevenueLowUsdMonthly": 10000,
  "estimatedRevenueHighUsdMonthly": 30000,
  "uploadFrequencyPerMonth": 8,
  "avatarUrl": "https://yt3.ggpht.com/0000000000000000=s800-c-k-c0x00ffffff-no-rj",
  "description": "Sample channel description text appears here.",
  "dateCreated": "2015-01-01T00:00:00.000Z",
  "growth": {
    "weekly": { "views": 20000000, "subscribers": 50000, "estimatedRevenueLowUsd": 2000, "estimatedRevenueHighUsd": 6000 },
    "monthly": { "views": 90000000, "subscribers": 200000, "estimatedRevenueLowUsd": 10000, "estimatedRevenueHighUsd": 30000 }
  },
  "averages": {
    "daily": { "viewsAverage": 3000000, "subsAverage": 7000, "estimatedRevenueLowUsd": 1000, "estimatedRevenueHighUsd": 3000 },
    "uploadFrequency": 8
  },
  "similarChannels": [
    { "channel": { "handle": "anothercreator", "displayName": "Another Creator" }, "subscriberCount": 900000, "viewCount": 400000000, "videoCount": 200, "similarity": 0.82 }
  ],
  "scrapedAt": "2026-01-01T00:00:00.000Z"
}
```

### Plan and proxy notes

Any Apify plan, including the free plan, can run this actor. Residential proxy is supported as an optional fallback and is bounded by the residential request budget, so you stay in control of cost. For the lowest cost, keep `includeProfileDetails` off when you only need the core counts, and enable the time series only when you need history.

# Actor input Schema

## `mode` (type: `string`):

Pick how to find channels. 'channels' takes a list of @handles or channel URLs. 'search' takes keywords and resolves matching channels.

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

Channels mode only. One per line: a @handle (e.g. @MrBeast), a bare handle (MrBeast), a ViewStats URL (https://www.viewstats.com/@MrBeast), or a YouTube URL (https://youtube.com/@MrBeast or https://youtube.com/channel/UC...).

## `searchTerms` (type: `array`):

Search mode only. Keywords to look up. Each term resolves up to 'Max channels per search term' matching channels.

## `maxChannelsPerSearch` (type: `integer`):

Search mode only. Cap on how many channels each keyword resolves.

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

Adds description, account creation date, channel-wide rankings, period growth (week/month/quarter/year/all-time) with revenue estimates, daily/weekly/monthly averages, upload frequency, longs-vs-shorts split, and the featured video. Costs a few extra requests per channel.

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

Adds the list of similar/related channels with their subscriber, view and video counts plus a similarity score. One extra request per channel.

## `includeStatsTimeSeries` (type: `boolean`):

Adds the historical stats series (subscribers, views, videos, revenue estimates per data point, plus upload events). One extra request per channel.

## `statsRange` (type: `string`):

Window for the time-series (only used when the time-series is enabled).

## `statsGroupBy` (type: `string`):

Bucket size for the time-series (only used when the time-series is enabled).

## `maxItems` (type: `integer`):

Hard cap on the number of channel records written. 0 means unlimited.

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

The default works on every Apify plan, including the free plan, and keeps cost low. Residential proxy is supported as an optional fallback for extra resilience.

## `residentialCountries` (type: `array`):

Country codes rotated through when residential proxy is used as a fallback. Leave default unless you have a reason to pin specific regions.

## `maxResidentialRequests` (type: `integer`):

Caps how many requests may use residential proxy in one run, to control cost. 0 disables residential entirely.

## `backupProxyUrl` (type: `string`):

Optional. A full proxy URL used as a last-resort failover when Apify proxy is unavailable (for example on a restricted plan). Leave blank to use the built-in default.

## `mcpConnectors` (type: `array`):

Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "channels",
  "channels": [
    "@MrBeast"
  ],
  "searchTerms": [
    "mrbeast"
  ],
  "maxChannelsPerSearch": 10,
  "includeProfileDetails": true,
  "includeSimilarChannels": false,
  "includeStatsTimeSeries": false,
  "statsRange": "365",
  "statsGroupBy": "monthly",
  "maxItems": 50,
  "proxy": {
    "useApifyProxy": true
  },
  "residentialCountries": [
    "US",
    "GB",
    "DE",
    "CA",
    "FR"
  ],
  "maxResidentialRequests": 200,
  "maxNotifyListings": 50
}
```

# Actor output Schema

## `overview` (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 = {
    "channels": [
        "@MrBeast"
    ],
    "searchTerms": [
        "mrbeast"
    ],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/viewstats-channel-analytics").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 = {
    "channels": ["@MrBeast"],
    "searchTerms": ["mrbeast"],
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/viewstats-channel-analytics").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "channels": [
    "@MrBeast"
  ],
  "searchTerms": [
    "mrbeast"
  ],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call abotapi/viewstats-channel-analytics --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=abotapi/viewstats-channel-analytics",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "ViewStats Scraper – YouTube Channel Analytics & Growth Data",
        "description": "Scrape YouTube channel analytics from ViewStats. Look up channels by handle, URL, or keyword search. Returns subscribers, views, rankings, growth from weekly to all-time, revenue estimates, historical time series, longs vs shorts, featured video, and similar channels.",
        "version": "1.0",
        "x-build-id": "UYBQCBVPJE8vLVZoh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~viewstats-channel-analytics/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-viewstats-channel-analytics",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/abotapi~viewstats-channel-analytics/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-viewstats-channel-analytics",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/abotapi~viewstats-channel-analytics/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-viewstats-channel-analytics",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "channels",
                            "search"
                        ],
                        "type": "string",
                        "description": "Pick how to find channels. 'channels' takes a list of @handles or channel URLs. 'search' takes keywords and resolves matching channels.",
                        "default": "channels"
                    },
                    "channels": {
                        "title": "Channels",
                        "type": "array",
                        "description": "Channels mode only. One per line: a @handle (e.g. @MrBeast), a bare handle (MrBeast), a ViewStats URL (https://www.viewstats.com/@MrBeast), or a YouTube URL (https://youtube.com/@MrBeast or https://youtube.com/channel/UC...).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Search mode only. Keywords to look up. Each term resolves up to 'Max channels per search term' matching channels.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxChannelsPerSearch": {
                        "title": "Max channels per search term",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Search mode only. Cap on how many channels each keyword resolves.",
                        "default": 10
                    },
                    "includeProfileDetails": {
                        "title": "Include profile details",
                        "type": "boolean",
                        "description": "Adds description, account creation date, channel-wide rankings, period growth (week/month/quarter/year/all-time) with revenue estimates, daily/weekly/monthly averages, upload frequency, longs-vs-shorts split, and the featured video. Costs a few extra requests per channel.",
                        "default": true
                    },
                    "includeSimilarChannels": {
                        "title": "Include similar channels",
                        "type": "boolean",
                        "description": "Adds the list of similar/related channels with their subscriber, view and video counts plus a similarity score. One extra request per channel.",
                        "default": false
                    },
                    "includeStatsTimeSeries": {
                        "title": "Include daily/monthly time-series",
                        "type": "boolean",
                        "description": "Adds the historical stats series (subscribers, views, videos, revenue estimates per data point, plus upload events). One extra request per channel.",
                        "default": false
                    },
                    "statsRange": {
                        "title": "Time-series range",
                        "enum": [
                            "28",
                            "90",
                            "365",
                            "alltime"
                        ],
                        "type": "string",
                        "description": "Window for the time-series (only used when the time-series is enabled).",
                        "default": "365"
                    },
                    "statsGroupBy": {
                        "title": "Time-series granularity",
                        "enum": [
                            "daily",
                            "monthly"
                        ],
                        "type": "string",
                        "description": "Bucket size for the time-series (only used when the time-series is enabled).",
                        "default": "monthly"
                    },
                    "maxItems": {
                        "title": "Max channels to output",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Hard cap on the number of channel records written. 0 means unlimited.",
                        "default": 50
                    },
                    "proxy": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "The default works on every Apify plan, including the free plan, and keeps cost low. Residential proxy is supported as an optional fallback for extra resilience.",
                        "default": {
                            "useApifyProxy": true
                        }
                    },
                    "residentialCountries": {
                        "title": "Residential fallback countries",
                        "type": "array",
                        "description": "Country codes rotated through when residential proxy is used as a fallback. Leave default unless you have a reason to pin specific regions.",
                        "default": [
                            "US",
                            "GB",
                            "DE",
                            "CA",
                            "FR"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResidentialRequests": {
                        "title": "Residential request budget",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Caps how many requests may use residential proxy in one run, to control cost. 0 disables residential entirely.",
                        "default": 200
                    },
                    "backupProxyUrl": {
                        "title": "Backup proxy URL",
                        "type": "string",
                        "description": "Optional. A full proxy URL used as a last-resort failover when Apify proxy is unavailable (for example on a restricted plan). Leave blank to use the built-in default."
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
