{
  "openapi": "3.0.1",
  "info": {
    "title": "Skool Scraper - Community Stats & Public Posts (No Login)",
    "description": "Scrape public Skool communities without login or cookies: members, online count, posts total, price, categories, levels, owner, links, events, plus public feed posts with likes, comments, category and author. Sort, category filter, only-new-posts monitoring.",
    "version": "0.1",
    "x-build-id": "ruADnODCuz05ztIQQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rjmacarthy~skool-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rjmacarthy-skool-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/rjmacarthy~skool-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rjmacarthy-skool-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/rjmacarthy~skool-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rjmacarthy-skool-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",
        "required": [
          "communityUrls"
        ],
        "properties": {
          "communityUrls": {
            "title": "Skool communities",
            "type": "array",
            "description": "Community URLs or slugs, one per line, e.g. \"https://www.skool.com/ai-automation-society\" or just \"ai-automation-society\". Post, about and classroom URLs resolve to their community.",
            "default": [
              "https://www.skool.com/ai-automation-society"
            ],
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "What to scrape",
            "enum": [
              "posts",
              "community"
            ],
            "type": "string",
            "description": "\"Community + posts\" outputs one community record plus feed posts per community. \"Community stats only\" outputs just the community record (one request per community). Private communities always give the community record only.",
            "default": "posts"
          },
          "maxPostsPerCommunity": {
            "title": "Max posts per community",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many posts per community (0 = no limit). Skool shows about 30 posts per page, plus pinned posts on page 1.",
            "default": 50
          },
          "sort": {
            "title": "Sort posts",
            "enum": [
              "default",
              "newest",
              "top-day",
              "top-week",
              "top-month",
              "top-year",
              "top-all"
            ],
            "type": "string",
            "description": "Same as the feed's sort menu. \"Default\" is Skool's latest-activity order (new comments bump posts up). \"Only new posts\" always uses \"Newest\".",
            "default": "default"
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Only posts from this feed category, by name (e.g. \"General Discussion\", emojis optional, prefix is enough) or category ID. Unknown names are logged and the whole feed is scraped. Leave empty for all categories."
          },
          "maxItems": {
            "title": "Max items in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop the run after this many dataset items (communities + posts) in total (0 = no limit).",
            "default": 1000
          },
          "fetchFullContent": {
            "title": "Fetch full text of long posts",
            "type": "boolean",
            "description": "The feed cuts posts at 2,000 characters (flagged by contentTruncated). Turn this on to open those posts and get the full text: one extra request per long post (usually 1-3 per page).",
            "default": false
          },
          "includeSuggested": {
            "title": "Include suggested communities",
            "type": "boolean",
            "description": "Also output the communities Skool suggests on the scraped pages, as extra community records (source = \"suggested\"). Skool shows suggestions only for some communities; most pages have none.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new posts",
            "type": "boolean",
            "description": "Monitor mode: output only posts not output by an earlier run with the same state key. The first run outputs the current posts and saves them; later runs output only posts created since. Community records are still output every run.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Name of this monitor, so different scheduled tasks keep separate \"seen posts\" lists.",
            "default": "default"
          },
          "stateStoreName": {
            "title": "State key-value store",
            "type": "string",
            "description": "Named key-value store that keeps the \"seen posts\" lists between runs.",
            "default": "skool-scraper-state"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed normally: Skool's community pages answer Apify's servers directly. Enable Apify Proxy (datacenter) only if you see HTTP 403/429 or challenge errors. Residential proxies are not supported and fall back to datacenter proxy.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}