# Skool Post Scraper (`futurizerush/skool-post-scraper`) Actor

Extract Skool posts with full content, author info & engagement metrics. Multi-page scraping with reliability. Perfect for content analysis & insights. CSV/JSON export.

- **URL**: https://apify.com/futurizerush/skool-post-scraper.md
- **Developed by:** [Rush](https://apify.com/futurizerush) (community)
- **Categories:** Automation, Social media, Integrations
- **Stats:** 72 total users, 4 monthly users, 28.3% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/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 Post Scraper - Extract Community Content

Extract posts from your Skool communities. Pull titles, full content, authors, engagement metrics, categories, and media — all in one structured dataset ready for analysis or export.

### What You Can Do

**Pull post data from any community you have access to**

- Titles and the full post body, including long-form content
- Author handle and profile link for each post
- Like and comment counts
- Category labels (Announcements, Wins, General Discussion, etc.)
- Pinned status and timestamps
- Embedded image, GIF, and video links
- Export to JSON, CSV, Excel, HTML, RSS, or XML

**Perfect for**

- Community managers reviewing member activity
- Content creators analyzing what resonates with members
- Researchers studying online community dynamics
- Anyone who already has access to a Skool community and wants the data offline

### How to Use

#### Step 1: Add your Skool sign-in

Enter the email and password you normally use to sign in to Skool.

#### Step 2: Paste community URLs

Copy and paste the URLs of communities you want to pull from.
Example: `https://www.skool.com/makerschool`

#### Step 3: Pick how many pages

Choose between 1 and 100 pages per community. A page returns around 30 posts.

#### Step 4: Run and download

Click **Start** and wait for the run to finish. Download the dataset in your preferred format from the run's storage tab.

### What You Get

Each post includes:

| Field | Description |
|-------|-------------|
| `post_id` | Unique identifier for the post |
| `title` | Post title, blank when the post has none |
| `author` | Author's Skool handle |
| `author_display_name` | Author's display name, when they have set one |
| `author_url` | Link to the author's profile |
| `author_bio` | Author's profile bio, when they have one |
| `author_location` | Author's stated location, when they share one |
| `author_mrr_tier` | Membership status Skool reports for the author, when it publishes one |
| `created_at` | When the post was published (ISO 8601) |
| `updated_at` | When the post last had activity (ISO 8601) |
| `content` | Full post body |
| `upvote_count` | Number of likes, blank when the community does not publish a count |
| `comment_count` | Number of comments, blank when the community does not publish a count |
| `is_pinned` | Whether the post is pinned in the community |
| `category` | The post's category label; "General" for an uncategorised post, blank when the label could not be resolved |
| `media_urls` | Image, GIF and video links found in the post |
| `attachment_count` | How many files are attached to the post |
| `post_url` | Direct link to the post |
| `group_url` | Community the post came from |
| `group_name` | Community name |
| `scraped_at` | When the data was collected (ISO 8601) |

#### Sample Output

```json
{
  "post_id": "04ba4e3592c74edab1433ddd16b4e9cf",
  "title": "Skool News #45 - TRAFFIC SOURCES are here!",
  "author": "sam",
  "author_display_name": "Sam Ovens",
  "author_url": "https://www.skool.com/@sam",
  "author_bio": "CEO @ Skool",
  "author_location": "Los Angeles, CA",
  "author_mrr_tier": "",
  "created_at": "2026-02-17T19:53:23.335486Z",
  "updated_at": "2026-02-20T16:30:00.425708Z",
  "content": "Today we share: ...",
  "upvote_count": 1709,
  "comment_count": 1030,
  "is_pinned": true,
  "category": "Updates",
  "media_urls": ["https://www.youtube.com/watch?v=..."],
  "attachment_count": 1,
  "post_url": "https://www.skool.com/skoolers/skool-news-45-traffic-sources-are-here?p=04ba4e35",
  "group_url": "https://www.skool.com/skoolers",
  "group_name": "skoolers",
  "scraped_at": "2026-02-21T00:37:43.165842Z"
}
```

Plus a summary report showing:

- How many communities were read in full, read partly, or could not be read — the three always add up to the number you asked for
- Total posts scraped and posts per community
- Unique authors and the date range covered

### Important Notes

**You must have access to the community**

- Pulls only posts you can already view when signed in
- Private communities require active membership
- Use your own Skool account credentials

**Built-in pacing**

- Page requests are paced automatically to stay polite
- Stops cleanly when the community has no more posts to return

**Data export**

- Available formats: JSON, CSV, Excel, HTML, RSS, XML
- Open the run's **Storage** tab → Dataset → Export

### Common Questions

**Q: How many posts will I get?**
A: A page returns around 30 posts (the first page also carries the community's pinned posts, and repeats are removed automatically). So the default 5 pages gives roughly 150 posts per community, and the maximum 100 pages gives roughly 3,000. If a community holds more than your page setting reaches, the run log tells you how many posts it has so you can decide whether to raise the setting.

**Q: How do I know whether a community was fully read?**
A: The run summary counts each community you asked for as read in full, read partly, or unreadable, and the three always add up. A community counts as *partly read* only when Skool stopped responding mid-way — reaching your own page limit is a clean finish, not a failure.

**Q: Can I scrape any Skool community?**
A: Only the ones you can already view when signed in. Private and paid communities still need an active membership on your account.

**Q: Is this against Skool's terms?**
A: The tool only accesses content your account already has permission to view, and paces requests to be polite. You are responsible for using the data in line with Skool's terms and any community rules.

**Q: What fields do I get for each post?**
A: Title, author handle, author profile link, full content, like count, comment count, pinned flag, category label, media links, post URL, community name, and timestamps for when the post was created and last active.

**Q: What if sign-in fails?**
A: Double-check the email and password. If your account uses two-factor authentication, or Skool shows a verification step on sign-in, the Actor cannot complete it on your behalf and the run will stop with a sign-in message.

### More Tools

Browse the rest of the collection — including scrapers for Skool comments, groups, members, profiles and events — on the [author's Apify profile](https://apify.com/futurizerush?fpr=rush).

### Disclaimer

This actor only works with content the signed-in user already has permission to view. You retain full responsibility for using the extracted data in line with Skool's terms of service and any community-specific rules. The tool is provided as-is without warranty.

### Keywords

Skool scraper, Skool data extraction, Skool community posts, Skool post export, community management, Skool analytics, online community data, Skool content analysis, OpenClaw, Claude Code, Gemini, Antigravity, Codex, ChatGPT

# Actor input Schema

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

Email you use to sign in to Skool

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

Password for your Skool account

## `groupUrls` (type: `array`):

Add the Skool communities you want to scrape

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

Pages to scrape per community. Each page has up to 30 posts.

## Actor input object example

```json
{
  "email": "user@example.com",
  "groupUrls": [
    "https://www.skool.com/makerschool"
  ],
  "maxPages": 5
}
```

# Actor output Schema

## `posts` (type: `string`):

No description

## `allFields` (type: `string`):

No description

## `summary` (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 = {
    "groupUrls": [
        "https://www.skool.com/makerschool"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("futurizerush/skool-post-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 = { "groupUrls": ["https://www.skool.com/makerschool"] }

# Run the Actor and wait for it to finish
run = client.actor("futurizerush/skool-post-scraper").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 '{
  "groupUrls": [
    "https://www.skool.com/makerschool"
  ]
}' |
apify call futurizerush/skool-post-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,futurizerush/skool-post-scraper"
        }
    }
}
```

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/TMOgRA0mlxj6v9lGo/builds/lDADMG32dwZUBW1E1/openapi.json
