Resolve Streamable URLs, embed codes, or short codes into direct signed video download links, quality variants, and full metadata. No login or API key required.
- No login needed: paste a link, embed snippet, or short code and get a result back immediately.
- Every quality variant: get all available resolutions for a video, not just one link.
- Nothing goes missing: deleted or unavailable videos still return a row so you know exactly what happened.
- Flexible input: works with share links, embed links, full embed snippets, or bare short codes.
- Optional file storage: turn on one setting to also save a copy of the video file itself.
- Click Try for free at the top of this page.
- Paste one or more Streamable links, embed snippets, or short codes into Streamable videos, one per line.
- Turn on Download and store the video file if you also want a saved copy, not just the link.
- Click Start: the actor resolves every video and writes one flat row per item.
- Download your results: Export as Excel, CSV, JSON, or HTML from the Output tab.
| Field | Type | Required | Description |
|---|---|---|---|
targets |
array of strings | Yes | Streamable share URLs, embed URLs, iframe embed snippets, or bare short codes. One per line. |
downloadFile |
boolean | No | When enabled, also downloads and stores the video file, adding a direct download link. Off by default. |
maxItems |
integer | No | Maximum number of videos to resolve. Use 0 for no limit. |
proxyConfiguration |
object | No | Network settings. The default works well for almost every run. |
Each row in your dataset is one resolved video. All fields are flat with no nested data, so the file opens cleanly in any spreadsheet program.
{
"input": "moo",
"streamableId": "moo",
"canonicalUrl": "https://streamable.com/moo",
"title": "\"Please don't eat me!\"",
"width": 852,
"height": 480,
"thumbnailUrl": "https://cdn-cf-west.streamable.com/image/f6441ae0c84311e4af010bc47400a0a4.jpg?Expires=...",
"bestMediaUrl": "https://cdn-cf-west.streamable.com/video/f6441ae0c84311e4af010bc47400a0a4.mp4?Expires=...",
"mediaVariants": [
{ "quality": "mp4", "url": "https://cdn-cf-west.streamable.com/video/....mp4?Expires=...", "width": 852, "height": 480 }
],
"status": "ready",
"available": true,
"scrapedAt": "2026-07-02T21:58:40.708Z"
}| Field | Type | Description |
|---|---|---|
input |
string | The original link, snippet, or code you provided. |
streamableId |
string | The resolved Streamable short code. |
canonicalUrl |
string | The clean streamable.com share link for this video. |
title |
string | The video's title, if it has one. |
durationSeconds |
number | Length of the video in seconds, when reported. |
width / height |
number | Resolution of the best available file. |
thumbnailUrl |
string | Direct link to the video's preview image. |
plays |
number | View count, when reported. |
dateAdded |
string | Upload date, when reported. |
bestMediaUrl |
string | Direct link to the highest quality video file available right now. |
mediaVariants |
array | Every available quality of the video, with its own link and resolution. |
status |
string | ready, processing, uploading, failed, not_found, or invalid_input. |
available |
boolean | True only when a working download link was actually found. |
savedFile |
object | Details of the stored copy of the file, only present when file download is turned on. |
scrapedAt |
string | When this video was checked, in ISO 8601 UTC. |
$0.0022 per video record, about $2.20 per 1,000 results. No monthly subscriptions and no minimum commits. New Apify accounts include $5 of free usage, so you can try it before you pay.
You only pay for the records you actually receive. A typical run of 100 videos completes in seconds.
Create a .env file from .env.example, add your Apify API token, and run:
npm install
npm startThe script uses the Apify API client to start getascraper/streamable-video-downloader and fetch results.
- Batch your links: paste many videos at once instead of running the actor repeatedly, since setup time is shared across the batch.
- Leave file download off unless you need the actual file, since resolving the link alone is faster and lighter.
- Set Max items to cap spend on very long lists while you test the output shape.
- Check the status field before trusting a result. Only
readyrows withavailable: truehave a working download link.
Is this legal to use? This actor only resolves videos that are already public on Streamable and viewable without logging in. You are responsible for how you use the results, including respecting the rights of whoever uploaded the video.
Do I need a Streamable account or API key? No. Paste a link or code and press start. No login is needed.
What happens if a video was deleted or never existed?
You still get a row for it, marked not_found with available: false, so nothing silently disappears from your results.
Can I get the actual video file, not just a link? Yes. Turn on Download and store the video file in the input. This takes longer and uses more data, so it is off by default.
For bug reports, missing fields, or feature requests, open an issue under the Issues tab, or visit the Streamable Video Downloader Apify page.
