{
  "openapi": "3.0.1",
  "info": {
    "title": "Skool Content Scraper — Posts, Comments & Classroom",
    "description": "Scrape public Skool posts, nested comments, classroom lessons, media links, authors, and engagement. Use for research, course archives, RAG, and monitoring. Not for members, emails, private content, write actions, or downloads. Returns flat post/comment/lesson rows with parent and depth. $0.005/row.",
    "version": "1.3",
    "x-build-id": "Zw6fTobpjVAhxWV4s"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/muhammadafzal~skool-content-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-muhammadafzal-skool-content-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/muhammadafzal~skool-content-scraper/runs": {
      "post": {
        "operationId": "runs-sync-muhammadafzal-skool-content-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/muhammadafzal~skool-content-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-muhammadafzal-skool-content-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": {
          "startUrls": {
            "title": "Public Skool community URLs",
            "type": "array",
            "description": "Use this when you know which public Skool communities to extract. Pass full community URLs such as https://www.skool.com/ai-automation-society. Defaults to one working public community. This is not for post, profile, bare-slug, or non-Skool URLs.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "Skool community URL",
                  "type": "string",
                  "description": "A full public Skool community URL such as https://www.skool.com/ai-automation-society."
                }
              },
              "required": [
                "url"
              ]
            },
            "default": [
              {
                "url": "https://www.skool.com/ai-automation-society"
              }
            ]
          },
          "scrapeMode": {
            "title": "Content to scrape",
            "enum": [
              "all",
              "community",
              "classroom"
            ],
            "type": "string",
            "description": "Use this when you want posts, classroom lessons, or both. Choose all, community, or classroom; for example, classroom extracts courses and lesson media only. Defaults to all. This is not a Skool feed sort option.",
            "default": "all"
          },
          "maxResults": {
            "title": "Maximum total results",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Use this to cap the combined post, comment, and lesson rows returned in one run. Enter an integer from 1 to 5000, such as 200. Defaults to 200. This is the hard billing cap, not a per-community limit.",
            "default": 200
          },
          "maxPostsPerGroup": {
            "title": "Maximum posts per community",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Use this to limit feed posts visited for each community. Enter an integer from 1 to 1000, such as 25. Defaults to 25. This does not count comment or classroom rows.",
            "default": 25
          },
          "includeComments": {
            "title": "Include nested comments",
            "type": "boolean",
            "description": "Use this when full conversation threads are needed with each comment emitted as a separate row. Set true or false; replies preserve parentCommentId and depth. Defaults to true. This has no effect in classroom-only mode.",
            "default": true
          },
          "maxCommentsPerPost": {
            "title": "Maximum comments per post",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Use this to cap flattened top-level comments and replies for each post. Enter an integer from 0 to 1000, such as 50. Defaults to 50. This is not a page count; zero disables comment rows.",
            "default": 50
          },
          "maxCommentDepth": {
            "title": "Maximum comment depth",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Use this to restrict how deeply reply trees are flattened. Enter 0 for top-level comments only or up to 20; for example, 3 keeps replies through depth three. Defaults to 20. This is not a page-count limit.",
            "default": 20
          },
          "maxLessonsPerGroup": {
            "title": "Maximum lessons per community",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Use this to cap classroom lesson rows across courses in each community. Enter an integer from 1 to 2000, such as 100. Defaults to 100. This does not count course containers as results.",
            "default": 100
          },
          "postedAfter": {
            "title": "Only content on or after",
            "type": "string",
            "description": "Use this for delta runs that should skip older posts, comments, and lessons. Pass an ISO date or timestamp such as 2026-07-01 or 2026-07-01T00:00:00Z. Defaults to empty for all available dates. This is not a Skool display timezone.",
            "default": ""
          },
          "includeMedia": {
            "title": "Extract media and video metadata",
            "type": "boolean",
            "description": "Use this to return video, image, file, and resource URLs exposed in Skool payloads. Set true or false; metadata can include provider, thumbnail, duration, name, and MIME type. Defaults to true. This extracts links only, not binary files.",
            "default": true
          },
          "responseFormat": {
            "title": "Response detail",
            "enum": [
              "concise",
              "detailed"
            ],
            "type": "string",
            "description": "Use concise for smaller AI-agent output or detailed for author bios and social links. Accepted values are concise and detailed; for example, detailed. Defaults to concise. This does not change which posts, comments, or lessons are scraped.",
            "default": "concise"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}