# Skool Revenue Dashboard Scraper (`michael_bloom10x/skool-revenue-scraper`) Actor

Pulls a Skool community's revenue dashboard — MRR, retention, growth, signup sources, payouts/balance, and pricing — via Skool's internal API. Outputs one snapshot record per run (ideal for a scheduled time series).

- **URL**: https://apify.com/michael\_bloom10x/skool-revenue-scraper.md
- **Developed by:** [Michael](https://apify.com/michael_bloom10x) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 1 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $80.00 / 1,000 results

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/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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Skool Revenue Dashboard Scraper

### What does Skool Revenue Dashboard Scraper do?

Skool Revenue Dashboard Scraper lets you extract detailed financial and membership metrics from [Skool](https://www.skool.com) communities through Skool's internal API, returning one structured snapshot of your revenue data per run.

Skool Revenue Dashboard Scraper can extract:

- Monthly Recurring Revenue (MRR)
- New MRR (last 30 days)
- Retention rate
- Member counts (total, paid, free)
- Monthly and annual pricing (and subscriber counts per plan)
- Signup source breakdown and signups-by-day
- Visitors, signups, and conversion rate
- Account balance, available balance, and pending funds
- Recent bank payout history
- Affiliate earnings and group context (plan, courses, billing cycle)

### Why scrape Skool?

Skool is a rapidly growing community platform with tens of thousands of active communities. If you're running a Skool community, having programmatic access to your revenue data enables powerful analytics and business intelligence capabilities. Here are just some of the ways you could use that data:

- Build automated revenue tracking dashboards for executive reporting
- Create time-series analyses of MRR trends and growth patterns
- Monitor member acquisition sources and optimize marketing spend
- Track retention metrics and identify churn patterns
- Automate financial reporting and forecasting workflows
- Integrate Skool revenue data with BI tools like Tableau, Power BI, or Looker
- Set up alerts when key metrics deviate from expected ranges

### How to scrape Skool

It's easy to scrape [Skool](https://www.skool.com) with Skool Revenue Dashboard Scraper. Just follow these steps and you'll get your data in a few minutes.

1. Click on **Try for free** / **Start**.
2. Paste your Skool **admin session cookie** into the `cookie` input.
3. Set `groupSlug` to your community slug (e.g. `your-community` from `skool.com/your-community`).
4. Click on **Run**.
5. When the run finishes, preview or download your data from the **Dataset** tab (a single snapshot record).

### Input parameters

The actor accepts the following configuration:

- **cookie** (required): The full `Cookie` header from a logged-in Skool **admin** session. Must include `auth_token` and `aws-waf-token`. Export it via a cookie extension or copy the `Cookie:` request header from your browser's DevTools. Cookies expire after a few days — refresh on a `401/403`.
- **groupSlug** (required): The community slug from its URL, e.g. `your-community`.
- **groupId** (optional): The 32-character internal group id. Auto-resolved from the slug if omitted.
- **includePayoutTransfers** (optional, default `true`): Include recent bank payout line-items in the snapshot.
- **proxyConfiguration** (optional): Proxy settings. Defaults to Apify **Residential** proxy, which is required to clear Skool's WAF.

### Results

Each run returns a single JSON object with a complete snapshot of your revenue dashboard. Monetary values are in your account currency (dollars), retention and conversion are percentages:

```json
{
  "scrapedAt": "2026-01-15T05:00:00.000Z",
  "groupId": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
  "slug": "your-community",
  "displayName": "Your Community",
  "mrr": 4820.00,
  "members": 1240,
  "retentionPct": 94.30,
  "newMrr": 360.00,
  "signups30d": 42,
  "visitors30d": 5100,
  "conversionRatePct": 0.82,
  "paidMembers": 310,
  "freeMembers": 930,
  "currency": "usd",
  "monthlyPrice": 29,
  "monthlySubscribers": 250,
  "annualPrice": 290,
  "annualSubscribers": 60,
  "balanceTotal": 1875.40,
  "balanceAvailable": 620.00,
  "balancePending": 1255.40,
  "payoutAccount": "BANK OF EXAMPLE •• 0000",
  "payoutStatus": "rdy",
  "plan": "pro",
  "numCourses": 8,
  "billingCycleEnd": "2026-02-01T00:00:00Z",
  "signupsBySource": [
    { "attribution": "invite", "total": 24, "percent": 0.5714 },
    { "attribution": "direct", "total": 18, "percent": 0.4286 }
  ],
  "signupsByDay": [{ "date": "2026-01-03", "num_signups": 3 }],
  "payoutTransfers": [
    { "date": "2026-01-08T07:00:00Z", "amount": -540.00, "account": "BANK OF EXAMPLE •• 0000", "transactionId": "tr_example123" }
  ],
  "payoutTransfersHasMore": true
}
````

### Tips for scraping Skool

- **Schedule daily runs**: Set up a schedule to run this actor daily using Apify's built-in scheduling. This automatically builds a time-series dataset for trend analysis.
- **Store results in a database**: Export your dataset to a database or data warehouse for long-term historical analysis and BI integration.
- **Monitor session validity**: Session cookies expire. If you see failed runs with a `401/403`, refresh your cookie and update the actor input.
- **Use with Apify webhooks**: Connect this actor to Apify webhooks to trigger downstream processes when new revenue data is available.
- **Combine with the Members scraper**: Pair this actor with the Skool Members Roster Scraper to build a full pipeline covering financials and per-member subscription detail.

### Residential proxy requirement

This actor runs through a residential proxy to navigate Skool's Web Application Firewall (WAF) and retries with a fresh proxy session on transient errors, ensuring reliable extraction.

### Is it legal to scrape Skool?

You should only use this actor to scrape data from Skool communities that you **own or have explicit admin permission to access** — admin rights are required to obtain the session cookie. Note that personal data is protected by GDPR in the EU and by other regulations worldwide. Do not scrape or share personal data without a legitimate reason. If you're unsure whether your reason is legitimate, consult your lawyers. We also recommend reading Apify's post: [is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

# Actor input Schema

## `cookie` (type: `string`):

The full Cookie header from a logged-in Skool ADMIN session (must include auth\_token and aws-waf-token). Export via a cookie extension (e.g. EditThisCookie) → copy the skool.com cookie string. Expires every few days; refresh on 401/403.

## `groupSlug` (type: `string`):

The community slug from its URL, e.g. skool.com/your-community → "your-community".

## `groupId` (type: `string`):

32-hex internal group id. If provided, skips slug resolution. Otherwise resolved from the slug automatically.

## `includePayoutTransfers` (type: `boolean`):

Include the recent bank payout line-items (amount, date, account, transaction id) in the snapshot.

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

Skool is behind AWS WAF — residential proxy strongly recommended.

## Actor input object example

```json
{
  "groupSlug": "your-community",
  "includePayoutTransfers": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "groupSlug": "your-community"
};

// Run the Actor and wait for it to finish
const run = await client.actor("michael_bloom10x/skool-revenue-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 = { "groupSlug": "your-community" }

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=michael_bloom10x/skool-revenue-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Skool Revenue Dashboard Scraper",
        "description": "Pulls a Skool community's revenue dashboard — MRR, retention, growth, signup sources, payouts/balance, and pricing — via Skool's internal API. Outputs one snapshot record per run (ideal for a scheduled time series).",
        "version": "1.0",
        "x-build-id": "uXJoEmHUI0L6psv56"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/michael_bloom10x~skool-revenue-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-michael_bloom10x-skool-revenue-scraper",
                "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/michael_bloom10x~skool-revenue-scraper/runs": {
            "post": {
                "operationId": "runs-sync-michael_bloom10x-skool-revenue-scraper",
                "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/michael_bloom10x~skool-revenue-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-michael_bloom10x-skool-revenue-scraper",
                "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": [
                    "cookie",
                    "groupSlug"
                ],
                "properties": {
                    "cookie": {
                        "title": "Skool auth cookie",
                        "type": "string",
                        "description": "The full Cookie header from a logged-in Skool ADMIN session (must include auth_token and aws-waf-token). Export via a cookie extension (e.g. EditThisCookie) → copy the skool.com cookie string. Expires every few days; refresh on 401/403."
                    },
                    "groupSlug": {
                        "title": "Group slug",
                        "type": "string",
                        "description": "The community slug from its URL, e.g. skool.com/your-community → \"your-community\"."
                    },
                    "groupId": {
                        "title": "Group ID (optional)",
                        "type": "string",
                        "description": "32-hex internal group id. If provided, skips slug resolution. Otherwise resolved from the slug automatically."
                    },
                    "includePayoutTransfers": {
                        "title": "Include payout transfers",
                        "type": "boolean",
                        "description": "Include the recent bank payout line-items (amount, date, account, transaction id) in the snapshot.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Skool is behind AWS WAF — residential proxy strongly recommended.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
