# Skool Community Directory, Pricing & Member Finder (`dataspryva/skool-community-directory-pricing-and-member`) Actor

Browse Skool's public community directory by category, pull pricing and member-count details for communities you already know, and list top members visible on a public community page.

- **URL**: https://apify.com/dataspryva/skool-community-directory-pricing-and-member.md
- **Developed by:** [Dataspryva](https://apify.com/dataspryva) (community)
- **Categories:** AI, Automation, Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Skool Community Directory, Pricing & Member Finder

Skool hosts tens of thousands of free and paid communities built around courses, coaching and discussion. This actor reads the public Skool directory and community pages without an account, so you can compare niches, pricing, owners, ratings and visible members in one dataset.

### What this actor does

- **Three modes:** `discover` browses the directory, `getCommunity` opens communities you name, `getMembers` reads public member tabs
- **Real directory filters:** nine Skool categories, 48 languages, free / paid / free-trial, public / private, keyword search and trending / most-popular order
- **Pagination up to 1,000 rows per directory slice**, with automatic category partitions that can reach roughly 9,000 communities
- **Full community records:** member, online, admin and post counts; course and module counts; monthly, annual and one-time prices; owner profile and socials; rating and the latest five reviews; privacy and roster availability
- **Public member records:** username, name, role, level, points, join and last-active dates, bio, location, timezone, avatar and socials
- **Empty fields are omitted** from each record instead of being returned as null

### Output per community (mode = `discover` / `getCommunity`)

- `communityId`, `name`, `slug`, `displayName`, `url`
- `description`, `landingPageDescription`
- `thumbnailUrl`, `coverImageUrl`, `logoUrl`
- `memberCount`, `onlineMemberCount`, `adminCount`, `postCount`, `courseCount`, `moduleCount`
- `price`, `currency`, `billingInterval`, `isFree` (true when the community can be joined free, including freemium communities), `monthlyPrice`, `annualPrice`, `oneTimePrice`, `priceTiers`
- `reviewRating`, `reviewCount`, `recentReviews`
- `category`, `categorySlug`, `discoveryRank`
- `isPublic`, `memberRosterAvailable`
- `owner`, `ownerUrl`, `ownerUsername`, `ownerFirstName`, `ownerLastName`, `ownerBio`, `ownerLocation`, `ownerTimeZone`, `ownerAvatarUrl`, `ownerSocials`
- `createdAt`, `updatedAt`, `recordType`, `scrapedAt`

`recentReviews` items contain `reviewId`, `rating`, `text`, `reviewedAt`, `memberSince`, `isPayingMember` and reviewer identity, level and points.

### Output per member (mode = `getMembers`)

- `userId`, `memberId`, `username`, `displayName`, `firstName`, `lastName`, `profileUrl`
- `avatarUrl`, `bio`, `location`, `timeZone`
- `role` — `admin`, `moderator` or `member`
- `level`, `points`
- `joinedAt`, `lastActiveAt`, `isOnline`, `socials`
- `communityId`, `communityName`, `communityUrl`, `memberScope`
- `recordType`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `discover` | `discover`, `getCommunity` or `getMembers` |
| `searchQueries` | array | `[]` | Keywords for directory search (mode=discover) |
| `startUrls` | array | `[]` | Community URLs (mode=getCommunity / getMembers) |
| `slugs` | array | `[]` | Community slugs, e.g. `["ai-automation-society"]` (mode=getCommunity / getMembers) |
| `categorySlug` | string | `all` | One of nine Skool categories or all (mode=discover) |
| `priceType` | string | `all` | `all`, `free`, `paid` or `free-trial` (mode=discover) |
| `communityType` | string | `all` | `all`, `public` or `private` (mode=discover) |
| `language` | string | `all` | Directory language (mode=discover) |
| `sortBy` | string | `trending` | `trending` or `top-v2`; legacy `popular`/`new` are accepted (mode=discover) |
| `minMembers` | integer | – | Drop communities below this member count (mode=discover) |
| `maxMembers` | integer | – | Drop communities above this member count (mode=discover) |
| `enrichDetails` | boolean | `true` | Open each discovered community for full pricing, owner and rating fields (mode=discover) |
| `includeReviews` | boolean | `true` | Add up to five recent public reviews |
| `memberScope` | string | `all` | `all`, `members`, `online` or `admins` (mode=getMembers) |
| `maxItems` | integer | `20` | Maximum records to emit overall (1–5,000) |
| `maxMembersPerCommunity` | integer | `30` | Maximum members to emit per community (1–500) |

Legacy saved-task inputs keep working: `category` maps to `categorySlug`, `isFree: true` maps to `priceType: "free"`, and `sortBy: "popular"`/`"new"` map to `top-v2`/`trending`.

#### Example: discover the most popular AI communities

```json
{
  "mode": "discover",
  "searchQueries": ["ai automation"],
  "categorySlug": "tech",
  "priceType": "paid",
  "sortBy": "top-v2",
  "maxItems": 25,
  "enrichDetails": true
}
```

#### Example: browse free communities in one category

```json
{
  "mode": "discover",
  "categorySlug": "health",
  "priceType": "free",
  "language": "english",
  "maxItems": 50
}
```

#### Example: get full details for known communities

```json
{
  "mode": "getCommunity",
  "slugs": ["ai-automation-society", "claudecodeclub"],
  "includeReviews": true
}
```

#### Example: read the public member tabs of a community

```json
{
  "mode": "getMembers",
  "startUrls": ["https://www.skool.com/ai-automation-society"],
  "memberScope": "all",
  "maxMembersPerCommunity": 100
}
```

### Use cases

- **Niche research** — compare member counts, pricing and ratings across every community in a category
- **Competitive tracking** — follow a competitor's member growth, price changes and owner activity
- **Creator prospecting** — find paid communities and their owners in a specific topic
- **Community benchmarking** — measure course, module, post and admin counts to see how active a community is
- **Member research** — collect the publicly visible members, admins and online users of a community

### FAQ

**Is this affiliated with Skool?**
No. This is an independent, third-party actor that reads publicly visible Skool pages and is not operated by or affiliated with Skool.

**Do I need a Skool account, cookies or a proxy?**
No. Every mode runs without a login, cookies or proxy setup.

**How many communities can `discover` return?**
Skool serves 30 rows per page and caps each filter slice at 1,000 rows (34 pages). To go beyond 1,000, set `maxItems` above 1,000 and the actor partitions the request by Skool's nine categories, deduplicates the results and can reach roughly 9,000 communities. No actor can enumerate the entire catalogue in a single slice.

**Why are `category` and `categorySlug` sometimes missing?**
A global directory search does not label each row with a category. Those fields are filled when you browse a category or when a large request is partitioned by category.

**Why does `getMembers` return only about 30 members?**
Skool's public member page shows the first 30 rows. Separate admin and online tabs expose their first pages too, so `memberScope: "all"` merges and deduplicates all three tabs. Raise `maxMembersPerCommunity` to keep the full union. Full member rosters and member emails are not public.

**Why are members missing for some communities?**
Private communities do not publish a member list. The actor checks each community's privacy setting and skips private ones instead of guessing or bypassing the restriction.

**How many reviews are included?**
Each public community page embeds only its five latest reviews. The actor includes those when `includeReviews` is enabled; it cannot return the full review history.

**Why is a price or owner field missing on some records?**
Not every community publishes a price, rating, location or social link. Missing values are omitted rather than filled with a placeholder.

**What does `billingInterval` mean?**
It is `month`, `year` or `one-time` and describes the interval used for the top-level `price`. `monthlyPrice`, `annualPrice` and `oneTimePrice` show each plan when the community offers several.

# Actor input Schema

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

What to scrape: discover communities from the directory, get details for specific communities, or list visible members.

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

Keywords to search the Skool directory for, e.g. \["ai automation", "fitness"]. Leave empty to browse the selected category and sort order.

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

Skool community URLs, e.g. https://www.skool.com/the-skool-of-life.

## `slugs` (type: `array`):

Community slugs from the Skool URL, e.g. \["the-skool-of-life", "buildwithskool"]. Alternative to startUrls.

## `categorySlug` (type: `string`):

Browse one of Skool's nine directory categories, or all categories. Filtering by category also fills the category fields on each community.

## `priceType` (type: `string`):

Filter communities by membership price: free, paid, or free trial.

## `category` (type: `string`):

Deprecated alias for categorySlug kept so saved tasks keep working. categorySlug takes precedence when both are set.

## `isFree` (type: `boolean`):

Deprecated alias for priceType=free kept so saved tasks keep working. priceType takes precedence when set.

## `communityType` (type: `string`):

Filter the directory by public or private communities.

## `language` (type: `string`):

Filter the directory by the community's language.

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

Order the directory by trending or by all-time popularity. Legacy popular/new values are accepted.

## `minMembers` (type: `integer`):

Only keep communities with at least this many members.

## `maxMembers` (type: `integer`):

Only keep communities with at most this many members.

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

Open each discovered community to add pricing, owner, rating, review and roster fields.

## `includeReviews` (type: `boolean`):

Add the latest public reviews (up to five) to each community record.

## `memberScope` (type: `string`):

Which public member tab to read: the default members list, the online list, the admin list, or all three combined.

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

Maximum number of records to emit (communities or members combined).

## `maxMembersPerCommunity` (type: `integer`):

Maximum public members to emit per community. Skool exposes about 30 rows per tab plus the admin and online tabs.

## Actor input object example

```json
{
  "mode": "discover",
  "searchQueries": [
    "ai"
  ],
  "startUrls": [],
  "slugs": [],
  "categorySlug": "all",
  "priceType": "all",
  "category": "",
  "isFree": false,
  "communityType": "all",
  "language": "all",
  "sortBy": "trending",
  "enrichDetails": true,
  "includeReviews": false,
  "memberScope": "all",
  "maxItems": 3,
  "maxMembersPerCommunity": 30
}
```

# Actor output Schema

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

Dataset containing all scraped Skool communities and member records.

# 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",
    "searchQueries": [
        "ai"
    ],
    "startUrls": [],
    "slugs": [],
    "categorySlug": "all",
    "priceType": "all",
    "category": "",
    "isFree": false,
    "communityType": "all",
    "language": "all",
    "sortBy": "trending",
    "enrichDetails": true,
    "includeReviews": false,
    "memberScope": "all",
    "maxItems": 3,
    "maxMembersPerCommunity": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("dataspryva/skool-community-directory-pricing-and-member").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",
    "searchQueries": ["ai"],
    "startUrls": [],
    "slugs": [],
    "categorySlug": "all",
    "priceType": "all",
    "category": "",
    "isFree": False,
    "communityType": "all",
    "language": "all",
    "sortBy": "trending",
    "enrichDetails": True,
    "includeReviews": False,
    "memberScope": "all",
    "maxItems": 3,
    "maxMembersPerCommunity": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("dataspryva/skool-community-directory-pricing-and-member").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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",
  "searchQueries": [
    "ai"
  ],
  "startUrls": [],
  "slugs": [],
  "categorySlug": "all",
  "priceType": "all",
  "category": "",
  "isFree": false,
  "communityType": "all",
  "language": "all",
  "sortBy": "trending",
  "enrichDetails": true,
  "includeReviews": false,
  "memberScope": "all",
  "maxItems": 3,
  "maxMembersPerCommunity": 30
}' |
apify call dataspryva/skool-community-directory-pricing-and-member --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dataspryva/skool-community-directory-pricing-and-member"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/9EPFdk1OYOKL8zvqC/builds/tjgDxDV8AsB1A3KHA/openapi.json
