Skool Communities Scraper
Pricing
from $2.67 / 1,000 results
Skool Communities Scraper
Collect public Skool community listings and return names, descriptions, member counts, ratings, review counts, images and creation dates. Search by keyword or category, or provide discovery URLs; optionally fetch owner details from each community’s About page.
Pricing
from $2.67 / 1,000 results
Rating
0.0
(0)
Developer
Axiom Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Returns: one row per Skool community with id, slug, name, url, description, totalMembers, rating and reviewCount. Set includeAdmin for public owner details and community stats.
Input: {"searchQueries": ["ai"], "maxItems": 20, "includeAdmin": false}
Best for: Skool community lead lists, niche market research, competitor price and member tracking.
{"id": "4c29068bb10947359c46a4bd12473aaf","slug": "ai-money-hub","name": "AI Money Hub","sourceUrl": "https://www.skool.com/discovery?q=ai","totalMembers": 3128,"rating": "5.0","reviewCount": 2}
What does Skool Communities Scraper do?
This Skool scraper provides structured data for Skool API workflows and collects public community listings from Skool's discovery pages. You give it keywords, a category, or ready-made discovery URLs, and it returns one structured record per community: the slug, display name, description, member count, price, rating, review count, cover image, logo and creation date. If you turn on the admin option it also visits each community's About page and adds the owner, community stats and landingPageDescription. The latter copies the full public About-page text, preserving paragraphs and links as published. It helps compare a community's offer with its short discovery description without another scraping step.
It reads the same public discovery pages that any visitor sees without an account. There is no login, no cookies and no private data involved. The Actor pages through the discovery results, removes duplicates across pages and keywords, and stops as soon as it has saved the number of communities you asked for in maxItems.
Typical uses:
- Market research on a niche, for example how many communities exist around "meta ads" or "ai" and how big they are.
- Building a list of competitors with their prices and member counts.
- Tracking community growth by running the Actor on a schedule and comparing member counts over time.
- Finding community owners for outreach research when the admin option is on.
- Feeding a spreadsheet, database or AI agent with structured data instead of copying pages by hand.
This Actor is an independent tool. It is not affiliated with or endorsed by Skool.
What data can you get?
Every record has a stable id (the Skool group ID) and a sourceUrl that points to the discovery page it was read from. Free communities have no price, so price is null and isFree is true.
| Field | Type | Description |
|---|---|---|
landingPageDescription | string or null | Full public About-page text when includeAdmin is true; unavailable text is null |
id | string | Skool group ID, unique per community |
slug | string | URL slug, for example evelyn |
name | string | Display name of the community |
url | string | Public community page |
sourceUrl | string | Discovery page or public About page where the community was read |
description | string | Short public description |
totalMembers | number | Member count shown by Skool |
isFree | boolean | True when no price is shown |
price | object | Amount in cents, currency, billing interval and a display string |
rating | string | Average review rating as shown, such as 5.0 |
reviewCount | number | Number of reviews |
coverImage | string | Cover image URL |
logo | string | Logo image URL |
createdAt | string | Creation time in ISO 8601 |
updatedAt | string | Last community update time supplied by Skool |
ratingValue | number | Numeric form of rating, or null when unavailable |
admin | object | Owner with id, username, first name, last name, bio, location, website, instagram, facebook, linkedin, twitter and youtube; only when includeAdmin is on |
stats | object | Courses, modules, posts, online members and admins; only when includeAdmin is on |
The price object looks like {"amount": 2900, "currency": "usd", "interval": "month", "display": "29 USD/month"}. The amount is in cents. The owner's first and last names are often empty because many owners do not fill them in, while the username is reliable.
How to use Skool Communities Scraper
- Open the Actor in Apify Console and go to the Input tab.
- Enter one or more keywords in Community search keywords, or pick a Discovery category, or paste discovery URLs. If you leave everything empty the Actor browses all communities.
- Set Maximum communities to save to the number of records you want.
- Switch on Fetch public owner and stats only if you need the owner, because it adds one request per community.
- Click Start. When the run finishes, open the Output tab and download the dataset as JSON, CSV, Excel or HTML, or read it through the API.
You can combine keywords and a category. In that case each keyword is searched inside the chosen category. When you provide discovery URLs, the Actor follows their q, c and p parameters instead and ignores the keyword and category fields.
Limits to know about
Skool caps discovery at about 1,000 results for any single keyword or category, and around 30 communities appear per page. To cover a wide topic, run several related keywords in the same run: the Actor deduplicates by community ID, so a community that matches two keywords is saved once. A keyword with no matches finishes successfully with zero items, a log warning and a status message. Try broader searchQueries, another category, or a lower minMembers. A public community URL that no longer resolves also returns no item: check the URL or choose another community. Blocked requests suggest enabling proxyConfiguration. Errors affecting one target are logged and the Actor continues with the other targets.
Input
| Field | Type | Description |
|---|---|---|
searchQueries | array of strings | Keywords such as ai or meta ads. Empty means all communities. |
category | string | One of hobbies, music, money, spirituality, tech, health, sports, self-improvement, relationships. |
startUrls | array | Optional skool.com/discovery URLs with q, c and p parameters, or direct community URLs such as https://www.skool.com/evelyn. |
includeAdmin | boolean | Add the community owner (names, bio, location, website and social links where public) and community stats from the About page. Default false. |
minMembers | integer | Skip communities with fewer members than this. Default 0. |
maxMembers | integer | Skip communities with more members than this, to find small niche communities. Default 0 (no limit). |
minRating | number | Skip communities rated below this value or without reviews. Default 0 (no filter). |
pricing | string | all (default), free (only communities with isFree true) or paid. |
maxItems | integer | Shared limit of unique communities across every keyword or URL, 1-10000, default 50. Filters and duplicates do not count. |
proxyConfiguration | object | Apify Proxy settings, datacenter by default. |
Example input:
{"searchQueries": ["meta ads"],"maxItems": 30,"includeAdmin": false,"proxyConfiguration": { "useApifyProxy": true }}
Example input that lists tech communities with owners:
{"category": "tech","maxItems": 40,"includeAdmin": true}
Output
Each run writes its records to the default dataset. Here is a real record, shortened, from a search for "meta ads":
{"id": "af46f3593aee473cb6341d919de2fd66","slug": "benheath","name": "Ben Heath Meta Ads Academy","url": "https://www.skool.com/benheath","sourceUrl": "https://www.skool.com/discovery?q=meta+ads","description": "The #1 community to master Meta ads. Exclusive training, weekly live Q&As and direct access to Ben Heath.","totalMembers": 1003,"isFree": false,"price": { "amount": 4900, "currency": "usd", "interval": "month", "display": "49 USD/month" },"rating": "5.0","reviewCount": 20,"coverImage": "https://assets.skool.com/f/af46f3593aee473cb6341d919de2fd66/313540993c5f4d77ba168b2e5c481c7a7a6291e7d4034a92ac733514078d0045-md.jpg","logo": "https://assets.skool.com/f/af46f3593aee473cb6341d919de2fd66/ba38b320d13a4417882590aac8010a658374236841c547a5b4af275dfa596ddf.jpg","createdAt": "2026-03-09T14:39:41.0707Z"}
With includeAdmin on, each record also has an admin object:
"admin": {"id": "f831a7690f5e4628919d63945ee0f51e","username": "oracle","firstName": "Daniel","lastName": "Riley","bio": "AI Content Creator & Mentor","location": "United Kingdom","website": null,"instagram": null,"facebook": null,"linkedin": null,"twitter": null,"youtube": null},"stats": {"courses": 20,"modules": 139,"posts": 29976,"onlineMembers": 558,"admins": 8}
Social link fields are null when the owner has not made them public. Pass a direct community URL in startUrls to read a single community; with includeAdmin off, that run still reads the About page to build the record.
If the About page cannot be read, admin is null for that community and the community is still saved.
How much does it cost?
The Actor is charged per result: each community saved to the dataset counts as one result. See the Pricing tab of the Actor for the current rate. Because the charge follows the number of results, setting maxItems is the simplest way to control what a run costs, and the Actor never saves or charges for more than maxItems records.
Use with AI agents (MCP)
You can call this Actor from any MCP-capable assistant through the Apify MCP server. Add this to your client configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=axiomworks/skool-communities-scraper"}}}
Example prompts:
- "Find 30 Skool communities about meta ads and list the ones with more than 1,000 members."
- "List the tech communities on Skool with their prices and ratings, and include the owner usernames."
- "Search Skool for communities about woodworking and tell me which are free."
The input fields are short and described as arguments, so an agent can fill them without extra guidance. No target field is mandatory: an empty input browses all discovery communities. For a precise call, provide searchQueries, category, or startUrls. Nonempty startUrls takes precedence over both keywords and category. Both URL strings and objects such as {"url":"https://www.skool.com/discovery?q=ai"} work. The daily-test prefill uses {"searchQueries":["ai"],"maxItems":20,"includeAdmin":false}; API calls must send their own values rather than relying on editor prefills. A local run of that input returned 20 records in 3.27 seconds without a proxy; network conditions can change runtime.
Integrations and API
You can start the Actor from code, from a schedule, or from an automation tool, and read the dataset when the run ends.
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("axiomworks/skool-communities-scraper").call(run_input={"searchQueries": ["ai"], "maxItems": 20})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], item["totalMembers"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('axiomworks/skool-communities-scraper').call({searchQueries: ['ai'],maxItems: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();process.stdout.write(JSON.stringify(items));
cURL
curl -X POST "https://api.apify.com/v2/acts/axiomworks~skool-communities-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["ai"], "maxItems": 20}'
You can also connect the Actor to Make, Zapier, n8n or Google Sheets with the Apify integrations, and set up webhooks to be told when a run finishes. Scheduling the Actor daily or weekly gives you a time series of member counts and ratings per community.
The run also respects the maximum cost per run configured in Apify. If that limit prevents saving more results, the final status says that it stopped at your maximum cost per run and reports the number saved. Those records remain available in the dataset. Increase the limit in the run options to request more on a later run.
FAQ
How many communities can I get per keyword? Skool limits discovery to about 1,000 results per keyword or category, with roughly 30 per page. Use several keywords to go wider; duplicates are removed by community ID.
Why is price null for some communities?
Free communities do not show a price. For those, price is null and isFree is true.
Is the price in dollars?
The amount is in the smallest currency unit (cents) and currency tells you which one. The display string shows the converted amount.
Why are some admin names empty? Owners choose whether to fill in a first and last name. The username is shown for every owner, so use it as the reliable identifier.
What happens with a keyword that has no results? The run ends successfully with zero items, a warning in the log and a final status message suggesting broader keywords, another category or a lower minimum member count. No placeholder records are written.
What if Skool blocks a request? Requests are made one per second. If a request gets a block or rate-limit response, the Actor waits and retries on a fresh proxy session, up to four attempts, before giving up on that page.
Does it work with a category and a keyword together? Yes. Each keyword is searched inside the selected category.
Can I scrape a community's posts or members? No. This Actor covers the public community listing and, optionally, the owner. It does not log in and does not collect posts, members or private content.
Is it legal to scrape Skool?
The Actor only reads pages that are public and open to anyone without logging in, and it makes modest, rate-limited requests. It does not access accounts, private groups, classroom content or member lists. Even so, you are responsible for how you use the data. Community descriptions, names and owner details can be personal or copyrighted information, so follow the data-protection rules that apply to you, such as GDPR, and check Skool's terms of service for your use case. Do not use the data for spam or to impersonate anyone. If you are unsure, ask a lawyer.
Feedback
If a field is missing, a layout change breaks a run, or you want another field added, open an issue from the Actor's Issues tab in Apify Console. Include the input you used and the run ID so the problem can be reproduced quickly.