{
  "openapi": "3.0.1",
  "info": {
    "title": "Skool Scraper Pro",
    "description": "📚 FREE Skool Scraper : Extract Skool lessons, 🎥 Mux videos, 📎 attachments, PDFs & polls from any community. 4 URL modes: full classroom, single course, lesson, or post. Optional file downloads to storage.",
    "version": "0.0",
    "x-build-id": "CfIuMdEGcXjZe5KwX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dz_omar~skool-scraper-pro/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dz_omar-skool-scraper-pro",
        "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/dz_omar~skool-scraper-pro/runs": {
      "post": {
        "operationId": "runs-sync-dz_omar-skool-scraper-pro",
        "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/dz_omar~skool-scraper-pro/run-sync": {
      "post": {
        "operationId": "run-sync-dz_omar-skool-scraper-pro",
        "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": [
          "communityUrl"
        ],
        "properties": {
          "communityUrl": {
            "title": "🔗 Skool Community URLs",
            "type": "array",
            "description": "One or more Skool URLs to extract. Supported formats:\n\n• Full classroom: `skool.com/community/classroom`\n• One course: `skool.com/community/classroom/courseId`\n• One lesson: `skool.com/community/classroom/courseId?md=lessonId`\n• One post: `skool.com/community/postName`",
            "items": {
              "type": "string"
            }
          },
          "lessonsPerCourse": {
            "title": "📚 Lessons per Course",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of lessons to extract from EACH course.\n\nExample: Set to 5 → extracts up to 5 lessons from each course.\n\nSet to 1000 (max) to extract all lessons from every course.",
            "default": 10
          },
          "skipLockedCourses": {
            "title": "🔒 Skip Locked Courses",
            "type": "boolean",
            "description": "Skip courses locked behind a level or VIP requirement.\n\n⚠️ Disable only if you have provided credentials with the required access level.",
            "default": true
          },
          "downloadAttachments": {
            "title": "📎 Download Post Attachments",
            "type": "boolean",
            "description": "Download images and documents attached to lesson posts (JPG, PNG, PDF, Word, Excel…).\n\n📦 Saved to Key-Value Store as `image-{id}.{ext}` or `doc-{id}.{ext}`.\n\n⚠️ Increases run time — large communities may have many files.",
            "default": false
          },
          "downloadResources": {
            "title": "📚 Download Lesson Resources",
            "type": "boolean",
            "description": "Download image and document files from the lesson resources panel. Web links (YouTube, Chrome extensions, etc.) are skipped automatically.\n\n📦 Saved to Key-Value Store as `image-{lessonId}-r{n}.{ext}` or `doc-{lessonId}-r{n}.{ext}`.\n\n⚠️ Only useful if the community shares PDF guides or images in lesson resources.",
            "default": false
          },
          "downloadVideos": {
            "title": "🎬 Download Videos",
            "type": "boolean",
            "description": "Download videos hosted on Skool's own servers",
            "default": false
          },
          "videoQuality": {
            "title": "🎞️ Video Quality",
            "enum": [
              "1080p",
              "720p",
              "480p",
              "270p"
            ],
            "type": "string",
            "description": "Preferred video resolution when downloading.\n\nIf the selected quality is not available, the scraper falls back to the next lower quality automatically.\n\n• **1080p** — Best quality, largest files (~80 MB per 5 min)\n• **720p** — Good quality, moderate size\n• **480p** — Smaller files, acceptable quality\n• **270p** — Lowest quality, smallest files\n\n💡 Only applies when 'Download Videos' is enabled.",
            "default": "1080p"
          },
          "email": {
            "title": "📧 Email (optional)",
            "type": "string",
            "description": "Your Skool account email for automatic login.\n\n✅ Login succeeds → authenticated session created\n❌ Login fails → falls back to browser cookies below\n\n💡 Leave empty to skip and use browser cookies instead."
          },
          "password": {
            "title": "🔑 Password (optional)",
            "type": "string",
            "description": "Your Skool account password.\n\n🔒 Required only if using email above.\n\n⚠️ Stored as a secret — never logged or exposed."
          },
          "cookies": {
            "title": "🍪 Browser Cookies (optional)",
            "type": "array",
            "description": "Fallback if email+password login fails or is not provided.\n\n📋 How to get cookies:\n1. Install [Cookie-Editor](https://cookie-editor.com) or [Copy Cookies](https://chromewebstore.google.com/detail/copy-cookies/jcbpglbplpblnagieibnemmkiamekcdg)\n2. Log into skool.com\n3. Open extension → Export → JSON format\n4. Paste the JSON array here\n\n⚠️ Keep cookies private — they grant full access to your account."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}