{
  "openapi": "3.0.1",
  "info": {
    "title": "Skool Community Scraper — Members, MRR & Discovery (No Login)",
    "description": "Scrape Skool.com communities with no login — members, online counts, posts, courses, pricing and MRR estimates. Discover communities by keyword, track growth with snapshot deltas, export clean JSON/CSV/Excel. Structured error rows, never failed runs. Works with AI agents via MCP.",
    "version": "0.0",
    "x-build-id": "2OXkXOne4aQ6kj8a5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vnx0~skool-community-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vnx0-skool-community-scraper",
        "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/vnx0~skool-community-scraper/runs": {
      "post": {
        "operationId": "runs-sync-vnx0-skool-community-scraper",
        "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/vnx0~skool-community-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-vnx0-skool-community-scraper",
        "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",
        "properties": {
          "action": {
            "title": "Action",
            "enum": [
              "scrape",
              "system:health"
            ],
            "type": "string",
            "description": "What this run should do. \"system:health\" performs a cheap end-to-end self-check that returns one deterministic status row and makes no requests to skool.com.",
            "default": "scrape"
          },
          "communityUrls": {
            "title": "Community URLs or slugs",
            "type": "array",
            "description": "Public Skool community URLs or bare slugs to collect intelligence for, e.g. \"https://www.skool.com/ai-automation-society\" or \"ai-automation-society\". No login is required for public communities. When this and every discovery field are empty, the Actor falls back to the example community shown in the prefill.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Discovery keywords",
            "type": "array",
            "description": "Keywords used to discover communities through Skool discovery when you do not provide community URLs, e.g. \"ai automation\". Each keyword keeps its own monitoring watermark.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "categorySearch": {
            "title": "Category search",
            "type": "string",
            "description": "Optional Skool category restricting discovery, by name or slug: Hobbies, Music, Money, Spirituality, Tech, Health, Sports, Self-improvement or Relationships. Leave empty to search all categories.",
            "default": ""
          },
          "discoveryUrl": {
            "title": "Discovery URL",
            "type": "string",
            "description": "Optional Skool discovery/search page to walk, e.g. \"https://www.skool.com/discovery?q=ai\". Use this to start from an exact listing page instead of keywords.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort discovery by",
            "enum": [
              "trending",
              "top-v2"
            ],
            "type": "string",
            "description": "How Skool orders discovery results. \"Trending\" is Skool's default; \"Top rated\" uses the top-v2 ranking.",
            "default": "trending"
          },
          "priceFilter": {
            "title": "Price filter",
            "enum": [
              "any",
              "free",
              "paid",
              "free-trial"
            ],
            "type": "string",
            "description": "Restrict discovery to free communities, paid communities or communities with a free trial.",
            "default": "any"
          },
          "typeFilter": {
            "title": "Privacy filter",
            "enum": [
              "any",
              "public",
              "private"
            ],
            "type": "string",
            "description": "Restrict discovery to public or private communities.",
            "default": "any"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Optional discovery language slug, e.g. \"english\", \"spanish\", \"portuguese\" or \"french\". Leave empty for all languages.",
            "default": ""
          },
          "monitoringMode": {
            "title": "Monitoring mode (only new)",
            "type": "boolean",
            "description": "When enabled, per-source watermarks in the run's key-value store make this run return only communities that were not already delivered by previous runs (delta runs). Ideal for scheduled tasks.",
            "default": false
          },
          "includeGrowthSnapshots": {
            "title": "Include growth snapshots",
            "type": "boolean",
            "description": "Also emit a growthSnapshot row per community (member, online and post counts, plus deltas against previous runs) so you can chart growth from stored runs. Works for both direct targets and discovered communities.",
            "default": false
          },
          "maxCommunities": {
            "title": "Max communities",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Safety cap on the total number of communities processed in one run (targets plus discovered). Keeps runaway discovery cheap.",
            "default": 25
          },
          "maxCostPerRun": {
            "title": "Max cost per run (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Optional spending cap for this run in USD. Once reached, the Actor stops producing new billable results and finishes successfully. Failures are never charged.",
            "default": null
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings for the requests to skool.com. Public pages usually work without proxies — the default disables Apify Proxy; enable it only if requests get blocked.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}