# Skool Scraper (`sourabhbgp/skool-scraper`) Actor

Scrape Skool.com communities, posts, and comments with full author profiles. 100 free lifetime results. Discover communities, get metadata with top contributors and social links, extract posts, and scrape comments with nested replies. The only Skool scraper with HTTP-based comment extraction.

- **URL**: https://apify.com/sourabhbgp/skool-scraper.md
- **Developed by:** [Sourabh Kumar](https://apify.com/sourabhbgp) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$3.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.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

## Skool Scraper — 100 Free | Communities, Posts & Comments

Extract communities, posts, and comments from Skool.com with full author profiles. 4 modes: discover, community details, posts, and posts with comments. HTTP-only, no login required.

### 🚀 Why this Skool scraper?

- 💰 **Pay only for results** — $3 per 1,000 items. 100 free results for every user, forever.
- ⚡ **Fast and reliable** — HTTP-only, no browser overhead. No anti-bot blocks, no flaky runs.
- 👤 **Full author profiles** — Comments mode includes bio, location, LinkedIn, Twitter, YouTube, and more for every commenter.
- 🔍 **4 scraping modes** — Discover communities, fetch community details, scrape posts, or get posts with full comment threads.
- 🏆 **Top contributors** — Community mode returns the top 30-day leaderboard with full social profiles.

### 📦 4 Scraping Modes

#### 🔍 Discover Mode

Search for Skool communities by keyword. Returns up to 30 results per query including member counts, pricing, and community metadata.

```json
{
    "mode": "discover",
    "query": "marketing",
    "maxResults": 30
}
````

#### 🏠 Community Mode

Fetch detailed information for a single community: full description, pricing, cover images, and the top 30-day contributor leaderboard with full social profiles.

```json
{
    "mode": "community",
    "communityUrl": "https://www.skool.com/ai-automation-society"
}
```

#### 📝 Posts Mode

Scrape posts from a community feed. Returns post content, author, upvote count, comment count, and timestamps. Supports sorting by newest posts or newest comment activity.

```json
{
    "mode": "posts",
    "communityUrl": "ai-automation-society",
    "maxPosts": 100,
    "sortBy": "newest"
}
```

#### 💬 Comments Mode

Like posts mode, but also fetches the full comment thread for each post. Each record includes the post plus a nested `comments` array with complete author profiles (bio, social links, location).

```json
{
    "mode": "comments",
    "communityUrl": "ai-automation-society",
    "maxPosts": 50,
    "maxCommentsPerPost": 100,
    "sortBy": "newest"
}
```

### 📥 Input Options

| Field | Type | Description | Default |
|-------|------|-------------|---------|
| `mode` | string | `discover`, `community`, `posts`, or `comments` | `discover` |
| `query` | string | Search term for discover mode | — |
| `communityUrl` | string | Community URL or slug (e.g., `ai-automation-society`). Required for community/posts/comments modes | — |
| `maxResults` | integer | Max communities in discover mode (max 30) | `30` |
| `maxPosts` | integer | Max posts in posts or comments mode (max 1,000) | `100` |
| `maxCommentsPerPost` | integer | Max comments per post in comments mode (max 500) | `100` |
| `sortBy` | string | Sort posts by `newest` (creation date) or `newest-cm` (latest comment activity) | `newest` |

### 📤 Output Examples

#### Discover / Community Output

```json
{
    "name": "AI Automation Society",
    "slug": "ai-automation-society",
    "url": "https://www.skool.com/ai-automation-society",
    "description": "Learn to automate your business with AI tools and workflows.",
    "memberCount": 18432,
    "price": 49.00,
    "currency": "usd",
    "priceInterval": "month",
    "rank": 3,
    "logoUrl": "https://...",
    "coverUrl": "https://...",
    "createdAt": "2023-06-15T00:00:00.000Z"
}
```

#### Posts Output

```json
{
    "postId": "abc123",
    "title": "How I automated my entire sales funnel in 3 hours",
    "slug": "how-i-automated-my-entire-sales-funnel-in-3-hours",
    "url": "https://www.skool.com/ai-automation-society/classroom/abc123",
    "content": "Here's the exact workflow I used...",
    "authorName": "Jane Smith",
    "authorId": "user_xyz",
    "commentCount": 24,
    "upvotes": 87,
    "hasVideo": false,
    "createdAt": "2026-03-15T14:22:00.000Z",
    "communityName": "ai-automation-society",
    "communitySlug": "ai-automation-society"
}
```

#### Comments Output (extends Posts)

```json
{
    "postId": "abc123",
    "title": "How I automated my entire sales funnel in 3 hours",
    "content": "Here's the exact workflow I used...",
    "authorName": "Jane Smith",
    "commentCount": 24,
    "upvotes": 87,
    "comments": [
        {
            "commentId": "cmt456",
            "content": "This is exactly what I needed. Which tool did you use for the email step?",
            "upvotes": 12,
            "authorName": "Bob Lee",
            "authorBio": "Founder @ SaaS startup. Building in public.",
            "authorLinkedIn": "https://linkedin.com/in/boblee",
            "authorTwitter": "https://twitter.com/boblee",
            "authorLocation": "Austin, TX",
            "createdAt": "2026-03-15T16:45:00.000Z",
            "replies": []
        }
    ]
}
```

You can download results as JSON, CSV, Excel, or connect via the Apify API.

### 🎯 Use Cases

- 📊 **Market research** — Discover the top-ranked communities in any niche. Compare member counts, pricing, and growth signals.
- 🔍 **Competitive analysis** — Monitor competitor communities: what topics generate the most engagement, who the top contributors are.
- 🧲 **Lead generation** — Comments mode exposes active community members with their bio, social profiles, and location. Find your ideal customers where they hang out.
- 📈 **Content analysis** — What posts get the most upvotes and comments? Identify high-performing content patterns in your niche.
- 👥 **Influencer research** — Community mode returns top contributors with full social links. Find niche micro-influencers who are genuinely active.
- 🛠️ **Community benchmarking** — Track member growth and engagement trends across multiple Skool communities over time.

### 💲 Pricing

This actor uses **pay-per-event pricing** — you only pay for what you scrape.

- **$3.00 per 1,000 results**
- **100 free results lifetime** — no credit card required for the first 100 records

| What you scrape | Results | Cost |
|-----------------|---------|------|
| 30 communities (discover) | 30 | Free |
| 1 community detail | 1 | Free |
| 100 posts | 100 | Free |
| 500 posts | 500 | $1.20 |
| 500 posts with comments | 500 | $1.20 |

### ⚠️ Limitations

- **Discover returns max 30 results per query.** This is a hard limit from Skool's discovery page — there is no pagination. Run multiple queries with different keywords to get broader coverage.
- **No members list.** Skool does not expose the full member list on public pages. You can only access the top 30-day contributors via community mode.
- **No emails.** Skool does not expose member email addresses on any public page.
- **Private communities return metadata only.** You can discover private communities (name, member count, price) but cannot scrape their posts or comments without membership.
- **Post sorting is limited.** Skool only supports `newest` (by creation date) and `newest-cm` (by most recent comment). There is no "most upvoted" sort available via the web UI.
- **Data is public only.** This scraper only accesses content visible to non-logged-in users on public Skool community pages.

# Actor input Schema

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

What to scrape: discover communities, community details, posts, or posts with comments.

## `query` (type: `string`):

Search term for discover mode. Leave empty for top-ranked communities.

## `communityUrl` (type: `string`):

Skool community URL or slug. Required for community, posts, and comments modes. Example: https://www.skool.com/ai-automation-society or just ai-automation-society

## `maxResults` (type: `integer`):

Maximum communities to return in discover mode. Skool returns max 30 per query.

## `maxPosts` (type: `integer`):

Maximum posts to scrape in posts or comments mode.

## `maxCommentsPerPost` (type: `integer`):

Maximum comments to fetch per post in comments mode.

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

How to sort posts. 'newest' = by creation date, 'newest-cm' = by most recent comment activity.

## Actor input object example

```json
{
  "mode": "discover",
  "query": "marketing",
  "communityUrl": "ai-automation-society",
  "maxResults": 30,
  "maxPosts": 50,
  "maxCommentsPerPost": 50,
  "sortBy": "newest"
}
```

# Actor output Schema

## `results` (type: `string`):

Communities, posts, or comments depending on selected mode

# 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 = {
    "mode": "discover",
    "query": "marketing",
    "communityUrl": "ai-automation-society",
    "maxResults": 30,
    "maxPosts": 50,
    "maxCommentsPerPost": 50,
    "sortBy": "newest"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sourabhbgp/skool-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 = {
    "mode": "discover",
    "query": "marketing",
    "communityUrl": "ai-automation-society",
    "maxResults": 30,
    "maxPosts": 50,
    "maxCommentsPerPost": 50,
    "sortBy": "newest",
}

# Run the Actor and wait for it to finish
run = client.actor("sourabhbgp/skool-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 '{
  "mode": "discover",
  "query": "marketing",
  "communityUrl": "ai-automation-society",
  "maxResults": 30,
  "maxPosts": 50,
  "maxCommentsPerPost": 50,
  "sortBy": "newest"
}' |
apify call sourabhbgp/skool-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Skool Scraper",
        "description": "Scrape Skool.com communities, posts, and comments with full author profiles. 100 free lifetime results. Discover communities, get metadata with top contributors and social links, extract posts, and scrape comments with nested replies. The only Skool scraper with HTTP-based comment extraction.",
        "version": "0.0",
        "x-build-id": "tRMkdcMPqpGZYsUeL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sourabhbgp~skool-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sourabhbgp-skool-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/sourabhbgp~skool-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sourabhbgp-skool-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/sourabhbgp~skool-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sourabhbgp-skool-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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "discover",
                            "community",
                            "posts",
                            "comments"
                        ],
                        "type": "string",
                        "description": "What to scrape: discover communities, community details, posts, or posts with comments.",
                        "default": "discover"
                    },
                    "query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Search term for discover mode. Leave empty for top-ranked communities."
                    },
                    "communityUrl": {
                        "title": "Community URL or Slug",
                        "type": "string",
                        "description": "Skool community URL or slug. Required for community, posts, and comments modes. Example: https://www.skool.com/ai-automation-society or just ai-automation-society"
                    },
                    "maxResults": {
                        "title": "Max Results (Discover)",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Maximum communities to return in discover mode. Skool returns max 30 per query.",
                        "default": 30
                    },
                    "maxPosts": {
                        "title": "Max Posts",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum posts to scrape in posts or comments mode.",
                        "default": 100
                    },
                    "maxCommentsPerPost": {
                        "title": "Max Comments Per Post",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum comments to fetch per post in comments mode.",
                        "default": 100
                    },
                    "sortBy": {
                        "title": "Sort Posts By",
                        "enum": [
                            "newest",
                            "newest-cm"
                        ],
                        "type": "string",
                        "description": "How to sort posts. 'newest' = by creation date, 'newest-cm' = by most recent comment activity.",
                        "default": "newest"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
