# Skool Scraper: Active Members & B2B Leads (30-Member Bypass) (`vesper_studio/skool-active-members-extractor`) Actor

Extract complete profiles of active members (creators, coaches, infopreneurs, B2B leads) from any Skool.com community. Bypasses the native 30-member directory limit via recursive Next.js post feed & nested comment tree analysis. 100% HTTP, 256 MB RAM.

- **URL**: https://apify.com/vesper_studio/skool-active-members-extractor.md
- **Developed by:** [Xavier Richard](https://apify.com/vesper_studio) (community)
- **Categories:** Lead generation, Marketing, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.50 / 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/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 Scraper: Active Members & B2B Lead Extractor (30-Member Bypass)

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange?logo=apify)](https://apify.com)
[![Runtime](https://img.shields.io/badge/Engine-100%25%20HTTP%20\(got--scraping\)-blue)](https://apify.com)
[![RAM](https://img.shields.io/badge/RAM-256%20MB-green)](https://apify.com)
[![Zero Browser](https://img.shields.io/badge/Puppeteer%2FPlaywright-No%20Headless%20Overhead-success)](https://apify.com)
[![B2B Ready](https://img.shields.io/badge/Enrichment-Twitter%20%7C%20LinkedIn%20%7C%20Instagram%20%7C%20Bio-purple)](https://apify.com)

High-performance, 100% HTTP Apify Actor designed to extract complete, deduplicated profiles of **active members** (creators, coaches, agency owners, infopreneurs, community leaders, and qualified B2B leads) from any **Skool.com** community.

***

### 🎯 1. Why You Need This Actor: The 30-Member Bypass

On Skool.com, the native `/members` directory restricts non-administrators to viewing only the first **~30 members** (subsequent pagination requests endlessly repeat the same 30 profiles).

Furthermore, standard directories are filled with inactive or abandoned accounts.

This Actor solves both challenges through a **multi-vector Next.js & Internal API extraction engine**:

1. **Recursive Discussion Feed & Nested Comments**: Scans community posts and traverses deeply nested comment trees (`api2.skool.com/posts/{id}/comments`), capturing real people actively engaging, commenting, and networking right now.
2. **Gamification Level Slicing**: Slices member directories across reputation levels `1` through `9` (`/-/members.json?levels=1..9`) and extracts all-time, 30-day, and 7-day leaderboards (`/-/leaderboards.json`).
3. **Private Community Fallback**: Extracts verified member reviews and creator info even on private/paid communities without an account.
4. **Instant 1.4 KB Profile Enrichment**: Pulls rich biographies, avatar assets, gamification level, location, and social links (LinkedIn, Twitter/X, Instagram, YouTube, personal websites) directly via Skool's lightweight user preview endpoints.
5. **Zero Duplicate Guarantee**: In-memory deduplication ensures you only pay for unique, valid profiles.

***

### ⚡ 2. Why Is This Actor 10x Cheaper & Faster?

| Feature | This Actor (`got-scraping`) | Traditional Scrapers (Puppeteer/Playwright) |
| :--- | :--- | :--- |
| **Engine** | 100% Light HTTP & Next.js API | Heavy Chromium / Headless Browser |
| **Speed** | **30 to 50+ posts analyzed per second** | 1 to 2 pages per second |
| **RAM Footprint** | **256 MB RAM** | 2048 MB to 4096 MB RAM |
| **Infrastructure Cost** | **<$0.002 per 1,000 members** | $0.05 to $0.15 per 1,000 members |
| **Detection Risk** | Emulates modern browser TLS & HTTP/2 signatures | Easily flagged by anti-bot scripts |

***

### 🛠️ 3. Input Parameters (`input_schema.json`)

| Field | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `communityUrls` | `array` | `["the-ai-advantage"]` | Target Skool communities (full URLs or simple slugs, e.g. `synthesizer`, `hormozi-games`). |
| `maxMembers` | `integer` | `500` | Maximum unique active members to extract per community (up to 10,000). |
| `maxPostsToScan` | `integer` | `200` | Depth of discussion feed posts to scan for active authors & commenters. |
| `sessionCookie` | `string` | `""` | Optional `auth_token` cookie for private/paid communities you are a member of. |
| `minLevel` | `integer` | `1` | Filter by minimum Skool gamification level (`1` to `9`). |
| `onlyWithSocials` | `boolean` | `false` | Retain only members who have at least one social link (LinkedIn, Twitter, IG, Website). |
| `extractPostsContent` | `boolean` | `false` | Export full post text & titles into member activity stats and Key-Value store. |

***

### 📊 4. Sample Output (Dataset JSON)

```json
{
  "userId": "942473cd55894936ae60dfc538e42446",
  "handle": "igor-pogany-3872",
  "fullName": "Igor Pogany",
  "bio": "Head of Education at AI Advantage | Exploring practical generative AI applications",
  "location": "Munich, Germany",
  "profileUrl": "https://www.skool.com/@igor-pogany-3872",
  "avatarUrl": "https://assets.skool.com/f/942473cd55894936ae60dfc538e42446/0c828f05f2c64c53b8f3621fdd01a1003aab5192dda1433aafd68deed2e5f6ab.jpg",
  "role": "admin",
  "gamificationLevel": 8,
  "communityName": "The AI Advantage",
  "communitySlug": "the-ai-advantage",
  "activityStats": {
    "postsCount": 14,
    "commentsCount": 42,
    "lastDetectedActivityAt": "2026-10-20T00:28:54.683Z"
  },
  "socialLinks": {
    "twitter": null,
    "linkedin": "https://linkedin.com/in/igorpogany",
    "instagram": "https://www.instagram.com/igorpogany/",
    "youtube": "https://www.youtube.com/@aiadvantage/",
    "website": "https://aiadvantage.com/"
  },
  "scrapedAt": "2026-10-20T01:20:05.230Z"
}
```

You can export datasets directly as **JSON, CSV, Excel (XLSX), or XML**, or connect them to **Google Sheets**.

***

### 🚀 5. Integrations & Workflow Automation

#### Connect to Make.com / Zapier / n8n / Clay

1. Add an **Apify - Run Actor** module to your scenario.
2. Select `vesper_studio/skool-active-members-extractor`.
3. Map output fields (`fullName`, `bio`, `socialLinks.linkedin`, `socialLinks.twitter`, `profileUrl`) directly into:
   - **Clay.com**: For automated email waterfall enrichment.
   - **Instantly.ai / Smartlead**: For personalized cold outreach.
   - **HubSpot / Pipedrive**: For CRM lead logging.

#### Use via Python API (`apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")

run_input = {
    "communityUrls": ["the-ai-advantage"],
    "maxMembers": 100,
    "onlyWithSocials": True,
}

run = client.actor("vesper_studio/skool-active-members-extractor").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["fullName"], item["socialLinks"])
```

#### Use with AI Agents & LLMs (LangChain, Claude, OpenAI)

This Actor is fully compatible with OpenAI Function Calling, LangChain Apify tools, and Model Context Protocol (MCP). Simply provide the `communityUrls` parameter to let your AI agent autonomously retrieve niche communities and key opinion leaders.

***

### ❓ Frequently Asked Questions (FAQ)

#### Can I scrape private or paid communities?

Yes! If you are a member of a private or paid Skool group, simply open your browser developer tools (`F12`), copy your `auth_token` cookie from `skool.com`, and paste it into the `sessionCookie` field. The Actor will securely authenticate your session to scan private discussions.

#### Do I need proxies?

For normal runs (up to thousands of members), our automated TLS browser emulation handles Skool smoothly. For high-volume continuous enterprise pipelines, you can route the Actor through Apify Residential or Datacenter proxies.

#### How does this bypass the 30-member limit?

Skool's web interface restricts non-admin member directory queries to 30 items. This Actor bypasses this by mining the community's live discussion feed, post upvoter arrays, nested comment threads, category streams, and gamification level slices.

***

### ⚖️ Legal & Compliance

This Actor is designed to extract publicly available data published by members of Skool.com communities or accessible within groups you belong to. Please respect platform Terms of Service, rate limits, and applicable data protection regulations (GDPR/CCPA).

# Actor input Schema

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

List of target Skool communities. Accepts full URLs (e.g. "https://www.skool.com/the-ai-advantage", "https://www.skool.com/synthesizer") or simple community slugs (e.g. "the-ai-advantage", "synthesizer").

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

Maximum number of unique active members to extract per community (default: 500, max: 10000).

## `maxPostsToScan` (type: `integer`):

Depth of post history to scan to discover active members, commenters, and engagement metrics (default: 200).

## `sessionCookie` (type: `string`):

Optional value of your Skool authentication cookie (auth_token) or full Cookie header string to access private/paid communities you are a member of.

## `minLevel` (type: `integer`):

Filter extracted members by minimum Skool gamification reputation level in the group (1 to 9, default: 1).

## `onlyWithSocials` (type: `boolean`):

When enabled, only retains members who have filled in at least one social, website, or B2B link (Twitter/X, LinkedIn, Instagram, YouTube, Website, or email/funnel in bio).

## `extractPostsContent` (type: `boolean`):

Secondary option to also export the full text content of scanned posts (attached to member profiles and saved in the EXTRACTED_POSTS Key-Value Store record).

## `includeCategoriesAndBestSort` (type: `boolean`):

When enabled (default), combines recent activity feed with top-engaged posts (?s=best) and category label slices (?c=labelId) to maximize unique active member discovery.

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

Optional Apify Proxy or custom proxy configuration for high-volume extraction with automatic IP rotation and sticky session support.

## Actor input object example

```json
{
  "communityUrls": [
    "https://www.skool.com/the-ai-advantage",
    "synthesizer"
  ],
  "maxMembers": 500,
  "maxPostsToScan": 200,
  "minLevel": 1,
  "onlyWithSocials": false,
  "extractPostsContent": false,
  "includeCategoriesAndBestSort": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `members` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

## `extractedPosts` (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 = {
    "communityUrls": [
        "https://www.skool.com/the-ai-advantage",
        "synthesizer"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("vesper_studio/skool-active-members-extractor").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": [
        "https://www.skool.com/the-ai-advantage",
        "synthesizer",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("vesper_studio/skool-active-members-extractor").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 '{
  "communityUrls": [
    "https://www.skool.com/the-ai-advantage",
    "synthesizer"
  ]
}' |
apify call vesper_studio/skool-active-members-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vesper_studio/skool-active-members-extractor"
        }
    }
}
```

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/Sc6StE2NoBcmCH3Ua/builds/nRoYhkrxrLpOz0uM2/openapi.json
