Skool Video Scraper avatar

Skool Video Scraper

Pricing

Pay per usage

Go to Apify Store
Skool Video Scraper

Skool Video Scraper

Download videos from Skool classroom lessons, or resolve a lesson URL to its underlying playable video URL. Handles both third-party embeds (Loom/YouTube/Vimeo) and self-hosted Mux streams.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Harish Garg

Harish Garg

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

7 days ago

Last modified

Share

Skool Video Downloader

Download videos from Skool classroom lessons — or just resolve a lesson URL to its underlying playable video URL without downloading. Give it a public Skool lesson page link and it figures out where the video actually lives, whether that's a third-party embed (Loom, YouTube, Vimeo, Wistia) or a self-hosted Mux stream, then hands you the file or the link.

This Actor runs on the Apify platform, so you get API access, scheduling, proxy rotation, and run monitoring out of the box.

What does Skool Video Downloader do?

Skool has no download button, and the way it serves video makes saving a lesson surprisingly hard:

  • Embedded lessons point to another platform (Loom, YouTube, Vimeo, Wistia). The real video URL is buried in the page data.
  • Self-hosted lessons stream from Mux as a signed, short-lived, referrer-gated HLS playlist (.m3u8?token=<JWT>). A stream URL copied from devtools stops working the moment you leave the page or the token expires.

This Actor reads the public Skool lesson page, resolves the lesson to its true video source, and then either downloads the full video file (saved to the key-value store as an MP4) or returns the playable URL — no manual devtools digging, no expired-token guesswork.

Why use Skool Video Downloader?

  • Archive course content you have access to, in a stable MP4 you actually own a copy of.
  • Feed videos into a pipeline — transcription, clipping, summarization, re-encoding.
  • Get a fetchable URL instead of a one-shot tokenized stream that dies when you navigate away.
  • Automate it — schedule runs, trigger via API/webhooks, and integrate with the rest of your stack on Apify.

How to download videos from Skool

  1. Open the Skool lesson in your browser and copy its page URL — it usually contains ?md=<lessonId>.
  2. Paste it into the Skool Lesson URL field.
  3. Choose What to do: Download the video file or Resolve the video URL only.
  4. (Optional) Set Max Video Minutes to skip anything longer than your cap.
  5. Click Start. When the run finishes, the result is in the Output tab, and for download mode the MP4 is in Storage → Key-value store.

ℹ️ The Actor loads Skool pages anonymously — it can't sign in, so the lesson must be on a publicly accessible (free/open) community page.

Input

FieldDescription
skoolUrlRequired. The Skool classroom lesson page URL (contains ?md=<lessonId>).
outputModedownloadVideo (default) — download the file; or resolveUrl — just return the video URL.
maxVideoMinutesOptional. Skip videos longer than this, in minutes (download mode only).
proxyConfigurationOptional Apify Proxy. Off by default; enable RESIDENTIAL only if Skool blocks the server IP.

Input example

{
"skoolUrl": "https://www.skool.com/my-community/classroom/abc123?md=def456",
"outputMode": "downloadVideo"
}

Output

Each run pushes one item to the dataset. In download mode, the video file itself is saved to the key-value store and linked from the item via videoFile. You can download the dataset in various formats such as JSON, CSV, Excel, or HTML.

Download mode

{
"skoolUrl": "https://www.skool.com/my-community/classroom/abc123?md=def456",
"title": "Glenn Marcus - $60K in 5 Days",
"status": "downloaded",
"isSelfHosted": true,
"videoFile": "https://api.apify.com/v2/key-value-stores/<storeId>/records/Glenn-Marcus---60K-in-5-Days.mp4",
"fileName": "Glenn-Marcus---60K-in-5-Days.mp4",
"fileSizeBytes": 53018337,
"ext": "mp4",
"durationSeconds": 562,
"width": 1280,
"height": 720,
"resolvedVideoUrl": "https://stream.video.skool.com/<playbackId>.m3u8?token=..."
}

Resolve-only mode

{
"skoolUrl": "https://www.skool.com/my-community/classroom/abc123?md=def456",
"title": "Glenn Marcus - $60K in 5 Days",
"status": "resolved",
"isSelfHosted": true,
"resolvedVideoUrl": "https://stream.video.skool.com/<playbackId>.m3u8?token=...",
"referer": "https://www.skool.com/"
}

⚠️ Self-hosted (Mux) URLs are signed, short-lived, and referrer-bound. If you resolve one and fetch it yourself, you must send the Referer: https://www.skool.com/ header and use it promptly before the token expires. Download mode handles this for you.

Data fields

FieldDescription
titleLesson title (for self-hosted) or extractor title (for embeds).
statusdownloaded, resolved, or failed.
isSelfHostedtrue for self-hosted Mux streams, false for third-party embeds.
resolvedVideoUrlThe underlying playable video URL.
refererRequired Referer header for self-hosted streams (else null).
videoFileKey-value store URL of the downloaded file (download mode).
fileNameFile name used for the stored video.
fileSizeBytes, ext, durationSeconds, width, heightDownloaded file metadata.
statusMessageHuman-readable result or error explanation.

Tips and advanced options

  • Pick the exact lesson. If your URL points at a classroom with several lessons rather than one, open the specific lesson so the URL includes ?md=.... Otherwise the Actor can't tell which video you want.
  • Resolve before you download. Run resolveUrl first to confirm the lesson has a playable video and see whether it's an embed or self-hosted, then download.
  • Leave the proxy off. Skool pages and most embeds load fine — and faster — without a proxy. Only enable Apify Proxy (e.g. the RESIDENTIAL group) if Skool starts blocking the datacenter IP.
  • Cap long videos. maxVideoMinutes skips anything over your limit and reports it cleanly, so a stray multi-hour recording doesn't blow up a run.
  • Automate it. Schedule recurring runs or call the Actor from the Apify API / webhooks to pull new lessons into your own workflow automatically.

FAQ, limitations, and support

Can it download members-only or paid lessons? No. The Actor downloads anonymously and can't authenticate, so private/paywalled lessons return a failed item explaining this. Use it for publicly accessible lessons you have the rights to.

Can I submit a raw stream.video.skool.com/...m3u8 link? No — those are tokenized streams tied to your session and IP, and they expire. Submit the lesson page URL (the one containing ?md=...) instead.

Why did my run say there's no video? The lesson may be text-only, members-only, or still processing on Skool's side. Open it in a browser to confirm it plays, then re-submit.

Is this legal? Only download content you have the rights to access and use. You are responsible for complying with Skool's Terms of Service and the content owner's rights. This Actor does not bypass authentication or paywalls.

Found a bug or need a tweak? Use the Issues tab on the Actor's page — feedback and feature requests are welcome.