Extract structured data from skool.com β structured Skool community data: name, description, member and post counts, courses, monthly and annual price, privacy, affiliate share and owner profile with social links. Search by keyword or paste a community link.
Skool Community Scraper [π°$0.9] on Apify β
No credit card required. No commitment. Cancel anytime.
- Click sign up β pick GitHub, Google, or email; takes ~30 seconds
- Open this actor β input is pre-filled with a working example
- Click Start β export results as JSON, CSV, or Excel
Your $5 monthly platform credit is enough to run this actor right away β and again every month β scraping typically several hundred to several thousand results per run, depending on your input.
Search with filters β Search by keyword. Filter by description format, and more.
Detail enrichment β Fetch full descriptions, structured metadata for each record.
Incremental mode β Only get new or changed records since your last run. Content hash per record β no duplicates, no re-processing.
Change classification β Track unchanged, expired, cross-run duplicate detection across runs. Build audit trails of how records evolve over time.
Compact output β Emit core fields only (AI-agent / MCP-friendly). Keeps response size small for LLM workflows.
Description truncation β Cap description length per ${NOUN} to control output size and cost.
Result cap β Stop after N records (up to 1.000). Set to 0 for the full catalog.
Export anywhere β Download as JSON, CSV, or Excel. Stream via Apify API, webhooks, or integrations with Make, Zapier, Airbyte, Keboola.
Structured data β Every record returns the same schema with consistent field naming. All fields always present β null when unavailable, never omitted.
Data pipeline automation Integrate with your ETL pipeline to collect structured records from skool.com on a schedule. Export to CSV, JSON, or directly to your database. Use compact mode to control output size.
Market research Monitor records, track trends, and analyze market dynamics with structured, deduplicated data from skool.com.
Change monitoring Run daily or hourly in incremental mode to capture only new, updated, or expired ${NOUNS}. Perfect for price-tracking, churn analysis, and alerting pipelines.
AI / LLM training data Structured JSON per record is ready for RAG pipelines, embeddings, and agent workflows. Compact mode trims tokens for LLM context windows.
{
"query": "ai automation",
"maxResults": 100,
"includeDetails": true,
"descriptionMaxLength": 0,
"compact": false,
"descriptionFormat": "all",
"excludeEmptyFields": false,
"incrementalMode": false,
"skipReposts": false,
"emitUnchanged": false,
"emitExpired": false,
"notifyOnlyChanges": false,
"notificationLimit": 5
}| Parameter | Type | Default | Description |
|---|---|---|---|
query |
string | β | Community search keywords (e.g. "ai automation", "fitness", "copywriting"). Paste a JSON array like ["ai automation","trading"] to search several terms in one run. Required if no startUrls provided. |
maxResults |
integer | 100 |
Maximum total results (0 = unlimited). |
startUrls |
array | [] |
Paste raw skool.com discovery URLs (e.g. https://www.skool.com/discovery?q=ai+automation). Each URL becomes its own search task; results are merged and deduped by community ID across all URLs. When provided, startUrls REPLACE the query field (unsupported URLs are skipped, and if none is supported the run stops with an input error). |
includeDetails |
boolean | true |
Fetch the full community record (landing-page description, course/module counts, join questions, owner profile and socials). |
descriptionMaxLength |
integer | 0 |
Truncate description to N chars. 0 = no truncation. |
compact |
boolean | false |
Core fields only (for AI-agent/MCP workflows). |
descriptionFormat |
enum | "all" |
Pick a single description representation. all keeps every variant; text / html / markdown drop the others. |
excludeEmptyFields |
boolean | false |
Drop null, empty-string, and empty-array fields from each record before push. Smaller payloads for AI agents and dashboards. |
incrementalMode |
boolean | false |
Compare against previous run state. stateKey is optional β defaults to a value derived from your search inputs (queries, startUrls) so different searches never share state. |
stateKey |
string | β | Optional. Stable identifier for the tracked search universe. Leave empty to auto-generate from search inputs. |
skipReposts |
boolean | false |
When incremental, skip listings whose content matches an expired listing from a prior run (cross-run duplicate detection). |
emitUnchanged |
boolean | false |
When incremental mode is on, also emit listings whose content has not changed since the last run. |
emitExpired |
boolean | false |
When incremental mode is on, also emit listings that were seen before but are no longer found. |
notifyOnlyChanges |
boolean | false |
When Incremental Mode is on, only send notifications for NEW and UPDATED listings. Has no effect outside incremental mode. |
notificationLimit |
integer | 5 |
Maximum number of listings included in each notification message (1β20). |
telegramToken |
string | β | Telegram bot token (from @BotFather). Required for Telegram notifications. |
telegramChatId |
string | β | Telegram chat or channel ID (e.g. "-100123456789"). Required when telegramToken is set. |
discordWebhookUrl |
string | β | Discord incoming webhook URL. Server Settings β Integrations β Webhooks β New Webhook. |
slackWebhookUrl |
string | β | Slack incoming webhook URL. api.slack.com/messaging/webhooks. |
whatsappPhoneNumberId |
string | β | Your WhatsApp Business phone-number ID (numeric, from Meta dashboard). Required when whatsappAccessToken is set. |
whatsappAccessToken |
string | β | WhatsApp Cloud API permanent access token (System User token from Meta Business). Recipient must have messaged the business number within the last 24h (service-conversation window β free since Nov 2024). |
whatsappTo |
string | β | Recipient phone in E.164 format without + (e.g. "436641234567"). Recipient must have messaged your business number within last 24h. |
webhookUrl |
string | β | Receives a JSON POST with {metadata, items} after each run. Universal escape hatch for n8n / Make / Zapier / custom backends. |
webhookHeaders |
object | β | Optional JSON object of custom headers (e.g. {"Authorization":"Bearer ..."}). |
appConnector |
string | β | Optional. Pick a connected app under Settings β API & Integrations to receive your results. Best-effort across MCP connectors as Apify expands its catalog. |
mcpIssueTeam |
string | β | Only when the connected app is an issue tracker: the team (name or ID) the summary issue is created under, if that app requires one. |
Every record returns the same 58-field schema. Missing values are null β never omitted.
typeslugurlportalUrlidnamedescriptionlandingPageDescriptionmembersCountadminsCountonlineCountpostsCountcoursesCountmodulesCountrulesCountisPaidpriceMonthlyUsdpriceAnnualUsdcurrencypriceDisplaypriceAmountCentsmembershipModelmrrEstimateUsdprivacyprivacyRawaffiliatePercentcolorlogoUrllogoBigUrlcoverUrlfaviconUrljoinQuestionsreviewCountreviewAverageRatingplancreatedAtupdatedAtownerIdownerHandleownerNameownerUrlownerBioownerLocationownerInstagramownerTwitterownerYoutubeownerLinkedinownerFacebookownerWebsiteownerPictureUrlsourcescrapedAtlistingIdsearchQuerycontentQualitydetailFetchedcontentHashchangeType
One object per record. Here is a real example from a production run:
{
"type": "community",
"slug": "aiautomationsbyjack",
"url": "https://www.skool.com/aiautomationsbyjack",
"portalUrl": "https://www.skool.com/aiautomationsbyjack",
"id": "8d6813d75d2949349a9f60f767c04f84",
"name": "AI Automations by Jack",
"description": "If you're serious about AI Automation, this community will give you an unfair advantage. Join and build the world's most VALUABLE skill set π",
"landingPageDescription": "π¨ Only 8 spots left at $87\nβΌοΈ Once we hit 3,400 members, the price is $97/month\n\nπ Top 10 Skool Community\nπ₯ #1 place to learn & build with AI\n\nUnlock the exact AI systems behindβ¦",
"membersCount": 3332,
"adminsCount": 10,
"onlineCount": 128,
"postsCount": 26794
}Truncated β full records contain 58 fields. See Output fields for the complete schema.
Try Skool Community Scraper [π°$0.9] now β $5 free credit, no credit card β
Pay only for what you extract. No subscription required β Apify's free $5 credit covers thousands of results.
| Event | Price (USD) |
|---|---|
| Actor Start | $0.01 |
| Result | $0.0009 |
See the actor on Apify for current pricing.
How do I scrape skool.com? Use this actor on Apify to extract structured data from skool.com. Configure your search query and filters in the input, then click Start β no coding required.
How do I get skool.com data as JSON, CSV, or Excel? The actor writes each record to Apify's dataset. Download as JSON, CSV, or Excel from the Console, stream via the API, or push to Make, Zapier, Airbyte, or Keboola.
Is it legal to scrape skool.com? Web scraping of publicly available data is generally legal. This actor only accesses publicly visible information. Always check skool.com's terms of service for your specific use case.
How much does it cost? Pay-per-event pricing β you only pay for ${NOUNS} extracted. Apify's free $5 credit is enough to run thousands of results before you pay anything.
How does incremental mode work? Each record gets a content hash. On subsequent runs, only new or changed records are emitted β saving time, compute, and storage. Expired records can be tracked separately.
Do I need an API key or credentials? No. Just sign up for Apify, paste your input, and click Start. No credit card required.
Browse all Black Falcon Data actors β
New to Apify? Create a free account with $5 credit β no credit card required.
- Sign up β $5 platform credit included
- Open Skool Community Scraper [π°$0.9] and configure your input
- Click Start β export results as JSON, CSV, or Excel
Need more later? See Apify pricing.
Black Falcon Data builds production-grade web scrapers for job boards and marketplace data. Browse our full actor catalog at www.blackfalcondata.com.
Last updated: 2026 10