{
  "openapi": "3.0.1",
  "info": {
    "title": "Skool All-in-One Scraper Goat",
    "description": "Scrape Skool.com from one actor. Discover communities with pricing and estimated MRR with no login, or add your session cookies to extract full member lists with email and contact enrichment plus posts with nested comments. Pick a mode from one input. No code required.",
    "version": "1.0",
    "x-build-id": "I1tSC7BGbt8OtWsBN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/goat255~skool-all-in-one-scraper-goat/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-goat255-skool-all-in-one-scraper-goat",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/goat255~skool-all-in-one-scraper-goat/runs": {
      "post": {
        "operationId": "runs-sync-goat255-skool-all-in-one-scraper-goat",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/goat255~skool-all-in-one-scraper-goat/run-sync": {
      "post": {
        "operationId": "run-sync-goat255-skool-all-in-one-scraper-goat",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Scrape Mode",
            "enum": [
              "COMMUNITIES",
              "MEMBERS",
              "POSTS"
            ],
            "type": "string",
            "description": "Pick what to extract. COMMUNITIES needs no login. MEMBERS and POSTS require Skool cookies for communities you have joined.",
            "default": "COMMUNITIES"
          },
          "keywords": {
            "title": "Search Keywords (COMMUNITIES mode)",
            "uniqueItems": true,
            "type": "array",
            "description": "Keywords to discover Skool communities. Used in COMMUNITIES mode only.",
            "items": {
              "type": "string"
            }
          },
          "groupUrls": {
            "title": "Community URLs",
            "uniqueItems": true,
            "type": "array",
            "description": "Community URLs (or bare names). In COMMUNITIES mode these are scraped directly; in MEMBERS/POSTS mode these are the communities whose members/posts you extract. Leave empty in POSTS mode to scrape every community you have joined.",
            "items": {
              "type": "string"
            }
          },
          "maxGroupsPerKeyword": {
            "title": "Max Communities Per Keyword",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "COMMUNITIES mode. Skool caps discovery at ~990 communities (33 pages) per keyword.",
            "default": 100
          },
          "paidOnly": {
            "title": "Paid Communities Only",
            "type": "boolean",
            "description": "COMMUNITIES mode filter: only communities that charge a fee.",
            "default": false
          },
          "minMembers": {
            "title": "Min Members",
            "minimum": 0,
            "type": "integer",
            "description": "COMMUNITIES mode filter: minimum total members."
          },
          "minMRR": {
            "title": "Min Estimated MRR ($)",
            "minimum": 0,
            "type": "number",
            "description": "COMMUNITIES mode filter: minimum estimated MRR (monthly price x members)."
          },
          "membersPerGroup": {
            "title": "Members Per Community",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "MEMBERS mode: maximum members to extract per community.",
            "default": 1000
          },
          "includeContactsFromWebsite": {
            "title": "Enrich Contacts From Member Websites",
            "type": "boolean",
            "description": "MEMBERS mode: fetch each member's linked website and extract real emails + phone numbers (in addition to the Skool profile email).",
            "default": true
          },
          "maxPostsPerGroup": {
            "title": "Max Posts Per Community",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "POSTS mode: maximum posts to collect per community.",
            "default": 100
          },
          "scrapeComments": {
            "title": "Get Comments",
            "type": "boolean",
            "description": "POSTS mode: also scrape comments on each post.",
            "default": false
          },
          "commentsPerPost": {
            "title": "Comments Per Post",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "POSTS mode: max comments per post (when Get Comments is on).",
            "default": 50
          },
          "includeReplies": {
            "title": "Include Replies",
            "type": "boolean",
            "description": "POSTS mode: nest replies under their parent comment.",
            "default": true
          },
          "postsDateFrom": {
            "title": "Posts Created From",
            "type": "string",
            "description": "POSTS mode: only posts on/after this date (YYYY-MM-DD)."
          },
          "postsDateTo": {
            "title": "Posts Created To",
            "type": "string",
            "description": "POSTS mode: only posts on/before this date (YYYY-MM-DD)."
          },
          "listCommunitiesOnly": {
            "title": "List My Communities Only",
            "type": "boolean",
            "description": "POSTS mode: just list the communities your account has joined, then stop. Use to pick targets.",
            "default": false
          },
          "cookies": {
            "title": "Skool Cookies",
            "type": "array",
            "description": "Required for MEMBERS and POSTS modes. Export from a logged-in Skool session with the Cookie-Editor extension (JSON). Not needed for COMMUNITIES mode.",
            "default": []
          },
          "maxConcurrency": {
            "title": "Max Concurrent Requests",
            "minimum": 3,
            "maximum": 30,
            "type": "integer",
            "description": "Parallel requests. Default 10 is reliable; above 15 may trigger Skool rate limits.",
            "default": 10
          },
          "batchSize": {
            "title": "Batch Size",
            "minimum": 10,
            "maximum": 100,
            "type": "integer",
            "description": "Results processed per batch before saving to the dataset.",
            "default": 50
          },
          "maxRetries": {
            "title": "Max Retries",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Retry attempts per failed request. Each retry rotates to a fresh residential proxy session.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings. Residential proxies are required — Skool blocks datacenter IPs.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}