Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

48 Commits

Repository files navigation

Skool API — Read AND Write, on Apify

The most complete unofficial Skool API. Read posts, comments, members, and courses. Create posts, reply to comments, approve members, build entire courses programmatically. Drop-in for n8n, Make.com, Zapier, AI agents.

Apify ActorLatest versionn8n templateLicense: MIT

┌─────────────────┐
│ Your stack │ ──┐
│ - n8n │ │
│ - Make.com │ │
│ - AI agents │ │ ┌────────────────────────┐ ┌────────────────┐
│ - Custom code │ ├──→ │ Apify Actor │ ──→ │ Skool API │
└─────────────────┘ │ │ Skool All-in-One API │ │ (cookies + │
│ │ read · write · auth │ │ WAF + buildId │
│ └────────────────────────┘ │ handled for │
│ │ you) │
└→ POST action:operation └────────────────┘
→ structured response

Why this exists

Skool does not have an official API. The community has reverse-engineered bits and pieces, but nobody has shipped a complete, write-capable, auth-handled, production-ready integration that AI agents and no-code tools can use.

This actor is that integration. It powers a real production community (Cágala, Aprende, Repite — daily writes, automated onboarding, full classroom). If it breaks, it breaks for me first. Bugs get fixed fast.

Built by a solo community admin, for solo community admins

I run my community alone — no team, no virtual assistants, no community managers on staff. Everything in this doc-site exists because I needed it to keep up with the daily work of running a Skool community as a one-person operation: approving members, replying to posts, publishing courses, sending event reminders, exporting member data for follow-up.

If you're a solo founder or admin trying to grow a Skool community without burning out on repetitive admin clicks — this is built for you. Every recipe is something I run in my own production. If a flow doesn't work for me with my actual time budget, it doesn't ship.

What you can do

ResourceReadWrite
PostsList, filter, paginate, get single, get full comment treesCreate, update, delete, pin, unpin, like
CommentsNested trees with repliesCreate top-level + nested replies, edit, delete
MembersList active, list pending applicantsApprove, reject, ban, batch-approve
ClassroomList courses, full tree, single pageCreate course, folder, page, set body (markdown→TipTap), update cover/title/description, delete
FilesUpload images for course covers
GroupsGet group infoUpdate description, update Auto DM message

See full action reference → · Use it from AI agents (Claude / OpenAI / MCP) →

Quick start (60 seconds)

1. Get an Apify account

Sign up at apify.com (free tier covers most personal use). Grab your API token from the account dashboard.

2. Run your first call

curl -X POST "https://api.apify.com/v2/acts/cristiantala~skool-all-in-one-api/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "action": "auth:login", "email": "your-skool-email@example.com", "password": "your-skool-password", "groupSlug": "your-community" }'

The response includes a cookies string. Save it — for the next ~3.5 days you can pass it instead of email/password and skip the slow Playwright login (~2s vs ~10s per call).

3. Use the cookies for everything else

curl -X POST "https://api.apify.com/v2/acts/cristiantala~skool-all-in-one-api/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "action": "posts:list", "cookies": "auth_token=...; client_id=...; aws-waf-token=...", "groupSlug": "your-community", "params": { "page": 1 } }'

Full Getting Started guide →

Browse by topic

This repo is organized into 8 sections. Each section has its own README hub.

SectionWhat's there
📘 LearnGlossary — what is the Skool API, how does Skool work, features, classroom, courses, affiliate program, live events
🛠️ IntegrationsTool-specific guides — n8n, Make.com, Zapier, Claude, GPT, MCP, Python, LangChain, Webhooks
🤖 AutomationStrategic overview — bot vs agent, building a Skool bot, building a Skool AI agent, why not to build your own scraper
🍳 RecipesCookbook — copy-paste workflows for auto-approve, reply unanswered, publish course from markdown, more
🔍 CompareSkool vs X — Circle, Mighty Networks, Kajabi, Teachable, Thinkific, Discord, Slack, alternatives
📖 GuideFounder decisions — is Skool legit, is Skool worth it, pricing, free trial, reviews, how to start
🎯 For XAudience-specific — Skool for AI agents (more coming)
📚 DocsReference — authentication, actions, posts, members, classroom, files, groups, error handling, AI agents integration

Recipes

Real, copy-paste-ready integrations:

Documentation

TopicWhat you'll learn
Getting StartedFirst call, auth flow, cookies caching
AuthenticationHow auth works, WAF token rotation, the x402-payment-required "fake error"
Posts & CommentsSkool's post=comment data model, content formats, mentions
MembersApproval flow, batch operations, member roles
ClassroomCourses, folders, pages, the markdown→TipTap converter, the R-PUT-COURSE quirk
FilesImage upload flow (cover images for courses)
GroupsDescription, Auto DM, settings
Error handlingStructured {success:false} payloads, errorCode catalog, hint field, retry logic
AI Agents integrationFunction-calling specs (Claude / OpenAI / Gemini), MCP server, LangChain Tool, Claude Code Skill, agent loop patterns
ChangelogVersion history, what changed when

Pricing

The actor uses Apify Pay-Per-Event (PPE) — you pay only for what you use:

ActionApprox. cost
auth:login (once every ~3.5 days)~$0.02 (Playwright login)
Read action (posts:list, members:list, etc.)~$0.005
Write action (create post, approve member, etc.)~$0.01 + ~$0.005 platform
files:uploadImage~$0.005

A community handling ~50 writes + ~200 reads per day costs roughly $1.50/month. See full pricing →

Reliability

  • Never-throw policy: every error — including network failures and Skool 4xx responses — becomes a structured {success:false} payload pushed to the dataset, with an errorCode and hint field. Runs always end SUCCEEDED. The actor never trips Apify's UNDER_MAINTENANCE flag.
  • Daily Quality Check pass: the actor's input schema defaults to system:health so Apify's automated daily test always passes — production callers stay unaffected by Apify-side checks.
  • Auto retry: 5xx responses, network errors, expired WAF tokens, and stale buildIds are auto-handled with exponential backoff.
  • More on reliability →

What it's NOT

  • ❌ Not an official Skool product. Skool may change behavior at any time. This actor is reverse-engineered from the public Skool web app, kept stable as Skool deploys (~weekly buildId rotation, auto-handled).
  • ❌ Not for bypassing Skool's terms. You authenticate as a user that owns or admins the community. Don't scrape communities you have no access to.
  • ❌ Not for spam. Skool's rate limits (~20-30 writes/min) are enforced. The actor respects them.

Status

Latest version0.3.25 — May 2026
Last battle-tested in productionDaily, on cagala-aprende-repite
Skool buildId rotationAuto-handled (~weekly)
WAF token rotationAuto-handled (~3.5 days)

Changelog →

Issues & feature requests

The actor's source code is not open-source (commercial product), but this docs repo is. To report a bug or request a feature:

Articles & deep dives

Related

License

The contents of this repository (docs, recipes, examples) are licensed under MIT — copy, modify, embed in your projects freely.

The Apify actor itself (skool-all-in-one-api) is a commercial product, not covered by this license.

About

Docs, recipes & examples for the Skool All-in-One API — the most complete unofficial Skool API on Apify. Read AND write: posts, comments, members, classroom. Drop-in for n8n, Make.com, AI agents.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages