# Skool Community Scraper – Posts & Members (`scrapyspider/skool-community-scraper`) Actor

Scrape posts and member profiles from any Skool.com community. Extracts post titles, content, likes, comments, member handles, bios, location, social links and more. Supports email/password and session cookie login.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

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

### What does Skool Community Scraper do?

**Skool Community Scraper** extracts structured data from any public or private [Skool.com](https://www.skool.com) community — including posts with engagement metrics and full member profiles — and delivers it in clean JSON format ready for analysis, CRM import, or audience research.

Simply provide your community URL, authenticate with your email/password or session cookies, and the scraper handles the rest: pagination, anti-bot evasion, deduplication, and data normalization. It runs entirely on the Apify platform with automatic proxy rotation, scheduling, and one-click integrations with Google Sheets, Zapier, Make, and more.

> 🆓 Try it free — Apify's Free tier includes enough compute to scrape hundreds of posts or members per month.

---

### Why use Skool Community Scraper?

| Use Case | How This Actor Helps |
|---|---|
| **Lead Generation** | Extract member profiles (bio, location, social links) to build targeted outreach lists |
| **Community Analytics** | Track post engagement (likes, comments) to identify top content and active contributors |
| **Competitor Research** | Monitor competitor Skool communities for content strategy and member growth |
| **CRM Enrichment** | Pull member handles and social profiles to enrich your existing contact database |
| **Content Repurposing** | Collect high-performing posts for newsletter or social media inspiration |
| **Market Research** | Analyze community discussions to understand audience pain points and interests |

---

### How to use Skool Community Scraper

#### Step 1 — Open the Actor

Go to the **Input** tab on the Actor's page in [Apify Console](https://console.apify.com).

#### Step 2 — Add your Start URLs

Paste one or more Skool URLs into **Start URLs**:

| URL Format | What gets scraped |
|---|---|
| `https://www.skool.com/your-community` | All **posts** in the community feed |
| `https://www.skool.com/your-community/-/members` | All **member profiles** in the community |
| Both URLs together | Posts **and** members in one run |

#### Step 3 — Authenticate

Choose one method:

- **Email + Password** — enter your Skool login credentials in the `email` and `password` fields.
- **Session Cookies** — copy your cookies from browser DevTools (`F12 → Application → Cookies → www.skool.com`), paste the JSON array into the `cookies` field. The login step is skipped entirely.

#### Step 4 — Configure (optional)

- **Max Pages** — limit how many listing pages are scraped per URL (default: `0` = unlimited).

#### Step 5 — Run & Export

Click **Save & Run**. When the run finishes, go to the **Dataset** tab and export your results as **JSON, CSV, Excel, or HTML**.

---

### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `startUrls` | Array | ✅ | One or more Skool community or members URLs |
| `email` | String | ⬜ | Login email (required if not using cookies) |
| `password` | String | ⬜ | Login password (required if not using cookies) |
| `cookies` | String | ⬜ | Session cookies as JSON array (skips login form) |
| `maxPages` | Integer | ⬜ | Max listing pages per URL — `0` means unlimited (default: `0`) |

**Example input (JSON):**

```json
{
    "startUrls": [
        { "url": "https://www.skool.com/your-community" },
        { "url": "https://www.skool.com/your-community/-/members" }
    ],
    "email": "you@example.com",
    "password": "yourpassword",
    "maxPages": 0
}
````

***

### Output

All data is saved to a single **default dataset**. Each item has a `type` field (`"post"` or `"member"`) so you can filter records downstream.

In Apify Console, use the **Posts** or **Members** view tabs to see data formatted for each type.

#### Post record

```json
{
    "type": "post",
    "postUrl": "https://www.skool.com/landconquest/my-first-post-abc123",
    "title": "My First Post",
    "username": "John Doe",
    "label": "General",
    "labelUrl": "https://www.skool.com/landconquest?l=general",
    "content": "Hey everyone! Excited to be here...",
    "likes": 42,
    "comments": 17,
    "scrapedAt": "2024-06-01T08:23:11.000Z"
}
```

#### Member record

```json
{
    "type": "member",
    "profileUrl": "https://www.skool.com/@johndoe",
    "username": "John Doe",
    "handle": "@johndoe",
    "bio": "Entrepreneur | Land investor | Building in public",
    "onlineStatus": "Active 2h ago",
    "joined": "January 15, 2024",
    "personality": "INTJ",
    "location": "Austin, TX",
    "contributions": 38,
    "followers": 124,
    "following": 57,
    "socialLinks": ["https://twitter.com/johndoe", "https://linkedin.com/in/johndoe"],
    "scrapedAt": "2024-06-01T08:25:44.000Z"
}
```

***

### Data fields reference

#### Posts

| Field | Type | Description |
|---|---|---|
| `type` | String | Always `"post"` |
| `postUrl` | String | Direct URL to the post |
| `title` | String | Post headline |
| `username` | String | Author display name |
| `label` | String | Community category/label |
| `labelUrl` | String | URL filtered to that label |
| `content` | String | Full post body text |
| `likes` | Number | Total likes count |
| `comments` | Number | Total comments count |
| `scrapedAt` | String | ISO 8601 timestamp of when data was collected |

#### Members

| Field | Type | Description |
|---|---|---|
| `type` | String | Always `"member"` |
| `profileUrl` | String | Direct URL to the member profile |
| `username` | String | Display name |
| `handle` | String | Unique @handle |
| `bio` | String | Profile biography |
| `onlineStatus` | String | `"Online now"`, `"Active X ago"`, or `"Offline"` |
| `joined` | String | Join date (e.g. `"January 2024"`) |
| `personality` | String | MBTI type if set (e.g. `"INTJ"`) |
| `location` | String | Self-reported location |
| `contributions` | Number | Total posts + comments count |
| `followers` | Number | Number of followers |
| `following` | Number | Number of accounts followed |
| `socialLinks` | Array | External social media profile URLs |
| `scrapedAt` | String | ISO 8601 timestamp of when data was collected |

***

### Cost & performance

Skool.com is a JavaScript-heavy SPA that requires a full browser (Puppeteer/Chrome). The Actor uses `maxConcurrency: 1` and human-like delays to avoid detection and respect the platform.

| Scenario | Estimated Compute Units |
|---|---|
| Scraping 100 posts | ~0.5–1 CU |
| Scraping 500 posts | ~2–4 CU |
| Scraping 500 member profiles | ~3–5 CU |
| Full community (posts + members) | ~5–15 CU depending on size |

> Apify Free tier includes **$5/month** in compute credit — enough for several hundred records per month. Paid plans start at $49/month.

***

### Tips & best practices

- **Use cookies for reliability** — Session cookies avoid the login step and are more stable. Export them from Chrome DevTools once and reuse across runs.
- **Start with `maxPages: 3`** — Test a small run first to verify data quality before scraping the full community.
- **Schedule regular runs** — Use Apify's built-in scheduler to capture new posts and members daily or weekly.
- **Filter by `type`** — Use the dataset API `?fields=type,username,handle` to pull only the fields you need for your pipeline.
- **Integrate with Google Sheets** — Connect the Actor output directly to a Google Sheet via Apify's native Google Sheets integration — no code needed.

***

### Frequently asked questions

**Is scraping Skool.com legal?**
This Actor collects data from communities you have legitimate access to (you must be a member or admin). Always comply with Skool's Terms of Service and applicable data protection laws (GDPR, CCPA). Do not use this tool to collect personal data without a lawful basis.

**Do I need a Skool account?**
Yes. You must be a member of the community you want to scrape. The Actor uses your credentials (or cookies) to authenticate.

**Will this get my account banned?**
The Actor uses conservative rate limits (`maxRequestsPerMinute: 6`), human-like typing delays, and realistic browser fingerprinting to minimize detection risk. However, use responsibly and avoid scraping at very high volumes.

**Can I scrape multiple communities at once?**
Yes — add multiple URLs to `startUrls`. The Actor processes them sequentially in a single run.

**What if my cookies expire?**
The Actor will log a warning and stop gracefully. Simply refresh your cookies from the browser and update the input.

***

### 🆘 Support

| Channel | Details |
|---|---|
| **Email** | ScrapySpider@protonmail.com |
| **Website** | [ScrapySpider.com](https://ScrapySpider.com) |
| **Apify** | Open an issue on this Actor's page |

# Actor input Schema

## `startUrls` (type: `array`):

One or more Skool URLs to scrape. Use a community URL (e.g. https://www.skool.com/landconquest) to scrape posts, or a members URL (e.g. https://www.skool.com/landconquest/-/members) to scrape members. Mix both to scrape everything.

## `email` (type: `string`):

Email address to log in to Skool.com. Required if not using cookies.

## `password` (type: `string`):

Password to log in to Skool.com. Required if not using cookies.

## `cookies` (type: `string`):

Paste your Skool.com session cookies as a JSON array (e.g. from browser DevTools → Application → Cookies). If provided, login with email/password is skipped.

## `maxPages` (type: `integer`):

Maximum number of listing pages to scrape per URL (0 = unlimited)

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.skool.com/landconquest"
    }
  ],
  "email": "xxxxxx12@xxxx.com",
  "cookies": "[]",
  "maxPages": 1
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        {
            "url": "https://www.skool.com/landconquest"
        }
    ],
    "email": "xxxxxx12@xxxx.com",
    "cookies": "[]",
    "maxPages": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapyspider/skool-community-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 = {
    "startUrls": [{ "url": "https://www.skool.com/landconquest" }],
    "email": "xxxxxx12@xxxx.com",
    "cookies": "[]",
    "maxPages": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapyspider/skool-community-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 '{
  "startUrls": [
    {
      "url": "https://www.skool.com/landconquest"
    }
  ],
  "email": "xxxxxx12@xxxx.com",
  "cookies": "[]",
  "maxPages": 1
}' |
apify call scrapyspider/skool-community-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Skool Community Scraper – Posts & Members",
        "description": "Scrape posts and member profiles from any Skool.com community. Extracts post titles, content, likes, comments, member handles, bios, location, social links and more. Supports email/password and session cookie login.",
        "version": "0.0",
        "x-build-id": "OjDOdcov0XmEipcMb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapyspider~skool-community-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapyspider-skool-community-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/scrapyspider~skool-community-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapyspider-skool-community-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/scrapyspider~skool-community-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapyspider-skool-community-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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "One or more Skool URLs to scrape. Use a community URL (e.g. https://www.skool.com/landconquest) to scrape posts, or a members URL (e.g. https://www.skool.com/landconquest/-/members) to scrape members. Mix both to scrape everything.",
                        "default": [
                            {
                                "url": "https://www.skool.com/landconquest"
                            },
                            {
                                "url": "https://www.skool.com/landconquest/-/members"
                            }
                        ],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "email": {
                        "title": "Login Email",
                        "type": "string",
                        "description": "Email address to log in to Skool.com. Required if not using cookies."
                    },
                    "password": {
                        "title": "Login Password",
                        "type": "string",
                        "description": "Password to log in to Skool.com. Required if not using cookies."
                    },
                    "cookies": {
                        "title": "Session Cookies (JSON)",
                        "type": "string",
                        "description": "Paste your Skool.com session cookies as a JSON array (e.g. from browser DevTools → Application → Cookies). If provided, login with email/password is skipped."
                    },
                    "maxPages": {
                        "title": "Max Pages",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of listing pages to scrape per URL (0 = unlimited)",
                        "default": 0
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
