# Skool Video Downloader | How to Download Skool Videos (`serpdownloaders/skool-bulk-downloader`) Actor

Make an organized local copy of any Skool course you're authorized to open, with the lessons arranged in the order they were taught.

- **URL**: https://apify.com/serpdownloaders/skool-bulk-downloader.md
- **Developed by:** [SERP Downloaders](https://apify.com/serpdownloaders) (community)
- **Categories:** Videos, Automation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Skool Video Downloader | How to Download Skool Videos

Make an organized local copy of any Skool course you're authorized to open, with the lessons arranged in the order they were taught.

The extension builds a local, well-organized backup of lessons your Skool membership can already reach. You decide how much to take, whether that's a complete course, a handful of modules or a few individual lessons, and the result is laid out in nested folders (course, then module, then lesson) that follow the sequence the instructor set.

### Get it Here

👉 Get it here: [Skool Bulk Downloader](https://serp.ly/skool-bulk-downloader?via=apify)

- ✅ Supported video is processed on your device, not on a remote server
- ✅ Select at the level of a course, a module or one lesson
- ✅ Pausing, retrying and recovering jobs, plus a record of past backups

### Preview

![Skool Bulk Downloader](https://apps.serp.co/media/optimized-products/skool-bulk-downloader-classroom-sidepanel-3ef4a43da3.webp)

![Skool classroom with the Skool Bulk Downloader popup launcher](https://apps.serp.co/media/optimized-products/skool-bulk-downloader-classroom-popup-53073e9c55.webp)

### How It Works

1. **Enter a course you're allowed to view**: Go into a course that your account has permission to open, then start Skool Bulk Downloader from your browser's toolbar.
2. **Decide how much to save**: Browse the modules and lessons the extension has found, then check the entire course or only the parts you're allowed to save.
3. **Track the run and read the report**: The manager moves through your selection, logging the provider and status for each lesson, and ends by producing the organized backup along with a report.

### What It Does

- Maps out the classroom's structure (courses, then modules, then lessons) as long as your account can open it, keeping the original sequence.
- Scope is chosen first, whether a complete course, particular modules or single lessons, and the backup starts after that.
- Wistia, Vimeo and Loom videos are saved, together with video that's native to Skool, whenever they're compatible.
- YouTube lessons are noted in information/link mode, which keeps the report honest about what was actually saved.
- Alongside video, the backup carries the lesson text, any resources and attachments, and an auditable report of the run.
- A single selected lesson is worked on at any moment, and its provider and progress stay visible.

### Skool Bulk Downloader vs. Single-video workflow

They aren't interchangeable; which one fits depends on how much of a course you want to keep.

| Skool Bulk Downloader | Single-video workflow |
| --- | --- |
| Reads the course layout, then you tick whichever course, module or lesson you want. | The starting point is just the single video that's showing in your browser right now. |
| Folders follow course, module and lesson order, with the supporting lesson material saved alongside. | Typically produces a lone media file, with the course structure left behind. |
| Job progress is durable, with pause, retry and recovery tools, a history, and a final report at the end. | You repeat the process by hand for every lesson. |
| Ideal for backing up many authorized lessons at once with the same tidy organization throughout. | Makes sense when you merely need the one supported video you have on screen. |

### Compatibility

**Browsers:** Chrome, Edge, Brave

**Desktop browsers it runs in:**

- Chrome from version 116 upward
- Microsoft Edge
- Brave

**Video hosts it can handle:**

- Video native to Skool
- Loom
- Vimeo
- Wistia
- YouTube, handled in information/link mode

**What a backup contains:**

- Folders arranged in course order
- Videos that are compatible
- Written lesson content, including notes
- Resources along with attachments
- A backup report that has been redacted

**Outside what it handles:**

- Firefox, which is not supported yet
- Phone and tablet browsers
- Safari
- Media locked by DRM
- Live-streamed content

### FAQ

**Is a full course something it can back up?**
Yes. Open a classroom your account can access, let the extension discover its modules and lessons, and choose either the entire course or just the sections you want. The manager then walks through that ordered selection, lesson by lesson.

**What will I find inside a backup?**
Depending on the course, a backup can hold compatible videos, lesson text, resources and attachments, all in structured folders that go course, module, lesson. A report accompanies it, listing which items were completed, skipped, information-only or failed.

**What video platforms does the bulk workflow cover?**
Compatible videos hosted on Wistia, Vimeo, Loom or Skool itself are covered by the verified bulk workflow. YouTube lessons are only noted in information/link mode, and the bulk workflow leaves them undownloaded.

**Can I recover if a backup stops partway?**
Yes. Job state is saved locally, and the manager offers controls for recovery, history, retrying, pausing and resuming, so eligible work continues from where it left off rather than the whole course starting over.

### Know Before You Use It

- Neither DRM-protected material nor live streams can be saved
- On phones and tablets, and in Safari, it isn't supported, and Firefox support hasn't arrived yet
- Processing is deliberately sequential: the bulk scheduler picks up a single selected lesson at once
- YouTube lessons only ever receive information/link treatment in the bulk workflow

> Only download videos you own or have permission to save.

# Actor input Schema

## Actor input object example

```json
{}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("serpdownloaders/skool-bulk-downloader").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("serpdownloaders/skool-bulk-downloader").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call serpdownloaders/skool-bulk-downloader --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,serpdownloaders/skool-bulk-downloader"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mUqzD6fM0lHgDsqY0/builds/KwPqyMAgHitEcjJLQ/openapi.json
