Skip to the content.

Quick reference (TL;DR for agents)

Can you export Skool members?

Skool gives you a members table in the admin UI, but no one-click export and no official API. So if you want a backup, a migration, or to push members into a CRM/email tool, you have to read the data through Skool’s internal API — which is protected by cookies + AWS WAF + a rotating buildId.

The Skool All-in-One API actor handles all of that. One action — members:list — returns your full member roster as structured JSON, ready to write anywhere.

What you get per member

members:list returns, per member:

Field Notes
name / first / last display name
email present for most communities (some privacy-restricted ones omit it)
level / points gamification level (1–9) and points
joinedAt join date — useful for cohort analysis
bio / socialLinks profile bio + linked socials
lastActiveAt for churn / re-engagement segmentation

How to export — members:list → CSV

import csv, json, os, urllib.request

ACTOR = "cristiantala~skool-all-in-one-api"
def call(action, params):
    body = {"action": action, "cookies": os.environ["SKOOL_COOKIES"],
            "groupSlug": os.environ["SKOOL_GROUP_SLUG"], "params": params}
    req = urllib.request.Request(
        f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items?token={os.environ['APIFY_TOKEN']}&build=latest&timeout=120",
        data=json.dumps(body).encode(), headers={"Content-Type": "application/json"}, method="POST")
    return json.loads(urllib.request.urlopen(req, timeout=130).read())

# members:list paginates — keep fetching until the page comes back empty
members, page = [], 1
while True:
    res = call("members:list", {"page": page, "limit": 100})
    batch = res if isinstance(res, list) else res.get("items", [])
    if not batch:
        break
    members.extend(batch)
    page += 1

with open("skool-members.csv", "w", newline="") as f:
    w = csv.writer(f)
    w.writerow(["name", "email", "level", "points", "joinedAt"])
    for m in members:
        w.writerow([m.get("name"), m.get("email"), m.get("level"), m.get("points"), m.get("joinedAt")])

print(f"Exported {len(members)} members → skool-members.csv")

Run it once for a backup, or on a schedule to keep an external copy in sync.

Export destinations

Keep it legitimate

This is for exporting your own community (you’re the admin/owner). That’s a normal backup/migration/ops use case.

It is not a tool for scraping communities you don’t own — that has legal, ethical, and reliability problems, and the actor isn’t built for it. If you were searching “skool scraper” hoping to pull a competitor’s member list, read Skool Scraper — why you shouldn’t build one first.

Production gotchas

See also


Export your Skool members today

→ Use the Skool All-in-One API actor on Apify

No Skool community yet? Launch one in 10 minutes — 14-day free trial. Need an n8n instance? Get started free — the workflow tool we use throughout these recipes.