# Skool Community Scraper (`khadinakbar/skool-community-scraper`) Actor

No-login scraper for Skool.com communities — pricing, member counts, owner lead, and keyword discovery. MCP/API-ready.

- **URL**: https://apify.com/khadinakbar/skool-community-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Lead generation, MCP servers, Social media
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 community scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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 Community Scraper

Scrape **Skool.com communities without logging in** — pricing, member counts, courses, join questions, and the **owner as an enriched lead** (bio + website + Instagram/Twitter/LinkedIn/YouTube). Look communities up by URL or **search the whole Skool Discovery directory by keyword** to build a niche lead list. MCP-ready for AI agents.

> **What this does and does not return.** Skool shows a community's full *member roster* only to logged-in members of that community, so no public, no-login tool can export every member. This Actor returns everything Skool exposes publicly: the community's profile, its real-time member/admin/online **counts**, pricing, and the **community owner** as a contactable lead. If you need the full per-member roster, that requires a Skool session cookie and is out of scope here.

### What you get

| Field | Example | Notes |
|---|---|---|
| `name`, `slug`, `url` | `New Society`, `new-society` | Community identity |
| `description`, `landingPageDescription` | `Build & Launch Your AI Business…` | Tagline + full sales copy |
| `membersCount`, `adminsCount`, `onlineCount` | `419`, `3`, `9` | Live counts |
| `postsCount`, `coursesCount`, `modulesCount` | `4508`, `12`, `219` | Activity + content depth |
| `isPaid`, `priceMonthlyUsd`, `priceAnnualUsd` | `true`, `77`, `497` | Pricing in USD |
| `privacy`, `affiliatePercent` | `private`, `40` | Access model + affiliate cut |
| `joinQuestions` | `["Phone Number?", "Goal?"]` | Application survey |
| `ownerHandle`, `ownerName`, `ownerUrl` | `davidondrej` | Community owner |
| `ownerBio`, `ownerLocation` | `"…owning yourself."`, `Prague` | Owner profile |
| `ownerWebsite`, `ownerInstagram`, `ownerTwitter`, `ownerLinkedin`, `ownerYoutube` | links | **Owner contact lead** |
| `createdAt`, `updatedAt`, `scrapedAt` | ISO‑8601 | Timestamps |

One row per community. Discovery rows also carry `discoveryQuery` and `discoveryRank`.

### When to use it

- **Lead generation** — build a list of Skool community owners in a niche, with their social links, to pitch services or partnerships.
- **Competitor & market research** — compare pricing, size, post volume, and course depth across communities in your category.
- **Niche sizing** — sweep a keyword across Skool's directory to gauge how crowded a topic is and who the big players are.
- **AI agents (MCP)** — a single URL or keyword in, structured JSON out.

Do **not** use this to export a community's individual member list — that is login-gated by Skool and not available to any cookieless tool.

### Two modes (auto-detected)

#### 1. Look up communities by URL or slug
Set **Community URLs or slugs** to any mix of full links or bare slugs:

```json
{ "communityUrls": ["new-society", "https://www.skool.com/makerschool"] }
````

Returns the full public profile of each community plus its owner. This path is pure HTTP and very fast.

#### 2. Discover communities by keyword

Set **Discovery search keywords** to search Skool's public Discovery directory:

```json
{ "searchQueries": ["ai automation", "real estate"], "maxItems": 100 }
```

Each keyword is paginated (30 communities per page) and every result is enriched with its full profile + owner. Skool's Discovery page is protected by a bot challenge, so this mode drives a real browser internally — slightly slower than the lookup mode, but fully automated.

You can combine both in one run.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `communityUrls` | string\[] | `["new-society"]` | Skool URLs or slugs to look up directly. |
| `searchQueries` | string\[] | – | Keywords to search Skool Discovery. |
| `enrichDetails` | boolean | `true` | Enrich each Discovery result with full details + owner. Off = lean directory cards (faster). |
| `maxItems` | integer | `100` | Hard cap on total communities (cost control). |
| `maxPagesPerQuery` | integer | `34` | Max Discovery pages per keyword (30 each). |
| `proxyConfiguration` | object | Apify Proxy (datacenter, US) | Proxy. Datacenter is sufficient. |

At least one of `communityUrls` or `searchQueries` is required; an empty run exits gracefully with a clear message.

### Output sample

```json
{
  "type": "community",
  "slug": "new-society",
  "url": "https://www.skool.com/new-society",
  "name": "New Society",
  "membersCount": 419,
  "isPaid": true,
  "priceMonthlyUsd": 77,
  "priceAnnualUsd": 497,
  "postsCount": 4508,
  "coursesCount": 12,
  "ownerHandle": "davidondrej",
  "ownerUrl": "https://www.skool.com/@davidondrej",
  "ownerTwitter": "https://twitter.com/davidondrej1",
  "scrapedAt": "2026-06-30T12:36:55.000Z"
}
```

### Pricing

Pay‑per‑event:

- **Actor start** — $0.00005 per run.
- **Community scraped** — $0.005 per community returned (profile, pricing, counts, and owner lead).

100 communities ≈ $0.50. Pay‑per‑usage (compute + proxy) is also available; pick whichever is cheaper for your job at run time.

### Use with the Apify MCP server / AI agents

This Actor is MCP‑ready. Point an MCP client at `https://mcp.apify.com?tools=khadinakbar/skool-community-scraper`, or call it from Claude/GPT with a single keyword or URL. Input fields and output keys are written for an LLM reader.

### Related Actors

- **linkedin-profile-details-scraper**, **instagram-profile-scraper** — enrich the owner leads further.
- **email-address-validator** — verify any emails you derive from owner websites.

### Legal & responsible use

This Actor collects only data that Skool.com publishes publicly without authentication (community profiles and owner public profiles). It does not log in, bypass authentication, or access private member rosters. You are responsible for using the data in compliance with Skool's Terms of Service, applicable data‑protection laws (GDPR/CCPA), and anti‑spam regulations. Do not use owner contact data for unsolicited bulk messaging where prohibited. No affiliation with or endorsement by Skool.com.

### FAQ

**Can it export all members of a group?** No. Skool gates the full member roster behind login/membership. This Actor returns public counts and the owner, not every member.

**Do I need a Skool account or cookie?** No. It is fully cookieless.

**Why does discovery take longer than lookup?** Skool's Discovery directory is behind a bot challenge that requires a real browser to clear; direct URL lookups use the plain HTTP API and are near‑instant.

**A community returned no price.** Free communities (and annual‑only plans) legitimately have no monthly price; the field is omitted in that case.

# Actor input Schema

## `communityUrls` (type: `array`):

Skool community URLs or bare slugs to look up directly (group mode). Accepts full links like 'https://www.skool.com/new-society' or just 'new-society'. Returns the full public profile of each community plus its owner. NOT a member roster — Skool gates individual member lists behind login, so this returns counts and the owner, not every member.

## `searchQueries` (type: `array`):

Keywords to search Skool's public Discovery directory (discovery mode), e.g. 'real estate' or 'ai automation'. Each keyword is paginated and every matched community is returned. Use this to build lists of communities in a niche. Leave empty if you only want the specific communities in 'Community URLs or slugs'.

## `enrichDetails` (type: `boolean`):

When ON (default), each Discovery result is enriched via the Skool group API to add pricing, post/course counts, join questions, and the owner lead. When OFF, Discovery returns the lean directory card only (name, description, member count, logo) — faster and cheaper. Has no effect on direct 'Community URLs or slugs', which are always fully detailed.

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

Hard cap on the total number of communities returned across all inputs, for cost control. Each community is billed at $0.005. Defaults to 100. Set lower for a quick sample or higher to sweep a whole niche (Skool Discovery returns up to ~1000 per keyword).

## `maxPagesPerQuery` (type: `integer`):

Upper bound on how many Discovery pages (30 communities each) to fetch per keyword before moving on. Defaults to 34, the full depth Skool exposes (~1000 results). Lower it to sample only the top results of each keyword. Ignored for direct community lookups.

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

Proxy used for requests. Skool's public API is a clean JSON endpoint, so the default Apify Proxy (datacenter, US) is sufficient and cheapest. Override only if you hit regional issues. Residential is rarely needed.

## Actor input object example

```json
{
  "communityUrls": [
    "new-society",
    "https://www.skool.com/the-blueprint-training"
  ],
  "searchQueries": [
    "ai automation",
    "real estate"
  ],
  "enrichDetails": true,
  "maxItems": 100,
  "maxPagesPerQuery": 34,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `communities` (type: `string`):

One record per Skool community: profile, pricing, counts, and owner lead.

# 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 = {
    "communityUrls": [
        "new-society"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/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 = {
    "communityUrls": ["new-society"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/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 '{
  "communityUrls": [
    "new-society"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call khadinakbar/skool-community-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Skool Community Scraper",
        "description": "No-login scraper for Skool.com communities — pricing, member counts, owner lead, and keyword discovery. MCP/API-ready.",
        "version": "0.1",
        "x-build-id": "r6UKVMmz80kzueDo6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~skool-community-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-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/khadinakbar~skool-community-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-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/khadinakbar~skool-community-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-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",
                "properties": {
                    "communityUrls": {
                        "title": "Community URLs or slugs",
                        "type": "array",
                        "description": "Skool community URLs or bare slugs to look up directly (group mode). Accepts full links like 'https://www.skool.com/new-society' or just 'new-society'. Returns the full public profile of each community plus its owner. NOT a member roster — Skool gates individual member lists behind login, so this returns counts and the owner, not every member.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQueries": {
                        "title": "Discovery search keywords",
                        "type": "array",
                        "description": "Keywords to search Skool's public Discovery directory (discovery mode), e.g. 'real estate' or 'ai automation'. Each keyword is paginated and every matched community is returned. Use this to build lists of communities in a niche. Leave empty if you only want the specific communities in 'Community URLs or slugs'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "enrichDetails": {
                        "title": "Enrich discovery results with full details",
                        "type": "boolean",
                        "description": "When ON (default), each Discovery result is enriched via the Skool group API to add pricing, post/course counts, join questions, and the owner lead. When OFF, Discovery returns the lean directory card only (name, description, member count, logo) — faster and cheaper. Has no effect on direct 'Community URLs or slugs', which are always fully detailed.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max communities",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Hard cap on the total number of communities returned across all inputs, for cost control. Each community is billed at $0.005. Defaults to 100. Set lower for a quick sample or higher to sweep a whole niche (Skool Discovery returns up to ~1000 per keyword).",
                        "default": 100
                    },
                    "maxPagesPerQuery": {
                        "title": "Max Discovery pages per keyword",
                        "minimum": 1,
                        "maximum": 34,
                        "type": "integer",
                        "description": "Upper bound on how many Discovery pages (30 communities each) to fetch per keyword before moving on. Defaults to 34, the full depth Skool exposes (~1000 results). Lower it to sample only the top results of each keyword. Ignored for direct community lookups.",
                        "default": 34
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used for requests. Skool's public API is a clean JSON endpoint, so the default Apify Proxy (datacenter, US) is sufficient and cheapest. Override only if you hit regional issues. Residential is rarely needed.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
