
Instagram Scraper
scrape.ly/store/echofield/instagram-scraperSocial mediaLead generation
1.5K monthly users

Download public videos from Vimeo, Dailymotion, pages with an embedded player and direct video or stream links. Pick a quality and a format; each file is saved with the run and gets a download link.
Save public videos from Vimeo, Dailymotion, pages with an embedded video player, direct video files and HLS or DASH stream links. Pick a quality and a format (MP4, WebM, MP3 and more), and each video is stored with the run and gets a download link, together with its title, uploader, length and picture size. No account, cookies or browser extension needed.
.mp4 / .webm / .mov files and .m3u8 / .mpd stream links.failedInputs in the run's OUTPUT record.| Field | What it does |
|---|---|
videos | Video page links, direct video files or stream links. A page with several videos gives one row per video. |
maxVideos | Stop after this many saved videos (default 10). |
preferredQuality | Highest picture size, 144p to 2160p (default 720p). |
preferredFormat | mp4, mkv, mov, webm, avi, flv, or audio: mp3, m4a, aac, wav, flac, ogg, opus, vorbis, aiff, alac, mka. |
saveFile | Store the file and add a download link (default on). |
filenameTemplateParts | Add title, uploader and/or timestamp to the file name. |
includeSubtitles | Add the video's own subtitle text (WebVTT or SRT, as published) when the site has a track. |
proxyConfiguration | Datacenter by default, with an automatic residential retry when a site refuses datacenter addresses. |
{
"videos": [
{ "url": "https://vimeo.com/22439234" },
{ "url": "https://media.w3.org/2010/05/sintel/trailer.mp4" }
],
"maxVideos": 10,
"preferredQuality": "360p",
"preferredFormat": "mp4",
"saveFile": true
}
| Field | Description |
|---|---|
title, uploader, uploadDate | Video title, uploader or channel, publishing date |
site, id, pageUrl, input | Source site (web for a file or an embedded player), video id, video page and the link you gave |
durationSeconds, quality, width, height | Length and picture size of the saved video |
downloadedFileUrl, fileKey, format | Download link (7 days), storage key and file format |
bytes, billedMegabytes | Bytes downloaded from the site and the megabytes charged |
videoStreamUrl, audioStreamUrl | Direct stream links from the site (they may expire) |
thumbnailUrl, description, subtitles | Thumbnail, description and optional subtitle text |
note | Link expiry, or why a file was not saved |
Example rows from a test run (long fields shortened):
[
{
"input": "https://vimeo.com/22439234",
"pageUrl": "https://vimeo.com/22439234",
"site": "vimeo",
"id": "22439234",
"title": "The Mountain",
"uploader": "TSO Photography",
"uploadDate": null,
"durationSeconds": 185,
"thumbnailUrl": "https://i.vimeocdn.com/video/145027281-cf3e3e04...-d",
"downloadedFileUrl": "https://api.scrape.ly/v2/key-value-stores/<store>/records/vimeo_22439234_TheMountain.mp4?signature=...&attachment=1",
"fileKey": "vimeo_22439234_TheMountain.mp4",
"format": "mp4",
"quality": "360p",
"width": 640,
"height": 360,
"bytes": 20459894,
"billedMegabytes": 21,
"videoStreamUrl": "https://skyfire.vimeocdn.com/.../media.m3u8?...",
"audioStreamUrl": "https://skyfire.vimeocdn.com/.../media.m3u8?...",
"note": "The file link expires in 7 days."
},
{
"input": "https://media.w3.org/2010/05/sintel/trailer.mp4",
"pageUrl": "https://media.w3.org/2010/05/sintel/trailer.mp4",
"site": "web",
"id": "trailer",
"title": "trailer",
"uploader": null,
"uploadDate": "2010-05-13",
"durationSeconds": 52,
"thumbnailUrl": null,
"downloadedFileUrl": "https://api.scrape.ly/v2/key-value-stores/<store>/records/web_trailer_trailer.mp4?signature=...&attachment=1",
"fileKey": "web_trailer_trailer.mp4",
"format": "mp4",
"quality": "480p",
"width": 854,
"height": 480,
"bytes": 4372373,
"billedMegabytes": 5,
"videoStreamUrl": "https://media.w3.org/2010/05/sintel/trailer.mp4",
"audioStreamUrl": "https://media.w3.org/2010/05/sintel/trailer.mp4",
"note": "The file link expires in 7 days."
}
]
Links that were not downloaded are listed in the run's OUTPUT record:
{
"saved": 0,
"failedInputs": [
{"input": "https://www.netflix.com/title/80057281", "code": "DRM_PROTECTED", "reason": "Netflix protects its videos with DRM (copy protection), so they cannot be downloaded."},
{"input": "https://vimeo.com/68375962", "code": "NEEDS_LOGIN", "reason": "This video needs a login, cookies, a password or a paid subscription. Videos behind a login are not supported."}
]
}
You pay per result:
Example from a test run: 10 public videos at 360p (72 MB in total) cost 10 × $0.01 + 72 × $0.001 = $0.17 in result fees, plus $0.10 platform usage (compute and about 0.9 GB of proxy traffic per GB of video), $0.27 in total. Platform usage is billed on top of the result fees at the normal platform rates. Links that cannot be downloaded are not charged as results.
Is it legal to download these videos? Only download videos you have the right to save, such as your own uploads, openly licensed or public-domain works, or videos whose owner allows downloads. Respect each site's terms and the creator's copyright.
Do I need a login, cookies or a proxy? No. The actor never asks for an account, cookies or a password. A proxy is included by default.
Can it download videos that need a login, a password, a subscription or an age check?
No. Private, password-protected, members-only, paid and age-gated videos are not supported. Such links are reported as "needs a login, not supported" in failedInputs and cost nothing.
Can it download from Netflix, Disney+, Prime Video, Hulu, Max, Apple TV or Spotify? No. These services protect their videos with DRM (copy protection such as Widevine, PlayReady or FairPlay), and so do some videos on other sites. DRM-protected videos are refused with a clear reason and cost nothing.
What about live streams? Live streams and scheduled premieres are not supported. Run the link again once the site publishes the recording.
Why is a field empty? Sites publish different details. A direct video file has no uploader or description, so those fields stay empty, while length and picture size are read from the saved file.
Can I schedule runs or use the API? Yes. Save the input as a task and schedule it, or start runs through the API and read the dataset as JSON, CSV or Excel.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
videosarrayRequiredVideo links
Links to public video pages (for example Vimeo, Dailymotion or YouTube), pages with an embedded video player, direct video files (.mp4, .webm, .mov) and HLS or DASH stream links (.m3u8, .mpd). A page with several videos gives one row per video. Videos that need a login, cookies, a password or a subscription, DRM-protected streaming services and live streams are not supported.
maxVideosintegerOptionaldefault 10Maximum videos
Stop after this many videos are saved. Pages with several videos count each video.
Picture size and file format. Audio formats save the soundtrack only.
preferredQualityenumOptionaldefault "720p"Preferred quality
Highest picture size to download. When the video has no exact match, the closest available size is used. Direct video files are saved at their own size.
preferredFormatenumOptionaldefault "mp4"Preferred format
Format of the saved file. MP4, MKV, MOV and WebM keep the original streams when they fit; other formats are converted.
File storage, file names and subtitles.
saveFilebooleanOptionaldefault trueSave the file
Save each video in this run's storage and add a download link (valid for 7 days). Turn this off to get the video details and direct stream links only. One saved file can be up to 90 MB, the storage limit for a single file; larger videos return their stream links and a note, so pick a lower quality to save them.
filenameTemplatePartsarrayOptionaldefault ["title"]Name the file with
Parts added after the site and video id, separated by underscores. Names are shortened to 252 characters.
includeSubtitlesbooleanOptionaldefault falseInclude subtitles
Add the video's own subtitle text when the site publishes a track (WebVTT or SRT as published, English first). Speech-to-text is not included.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter addresses are the default. When a site refuses them, the video is retried on residential addresses automatically.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| input | string | null | Link from the input |
| pageUrl | string | null | Page of the video |
| site | string | null | Site the video came from (web = a video file or a page with an embedded player) |
| id | string | null | Video id on the site |
| title | string | null | Video title |
| uploader | string | null | Uploader or channel name |
| uploadDate | string | null | Publishing date (YYYY-MM-DD) |
| durationSeconds | integer | null | Length in seconds |
| description | string | null | Video description |
| thumbnailUrl | string | null | Thumbnail image |
| downloadedFileUrl | string | null | Download link of the saved file (valid for 7 days) |
| fileKey | string | null | Storage key of the saved file |
| format | string | null | File format |
| quality | string | null | Picture size (short side), or audio |
| width | integer | null | Picture width in pixels |
| height | integer | null | Picture height in pixels |
| bytes | integer | null | Bytes downloaded from the site |
| billedMegabytes | integer | null | Megabytes charged for the saved file (bytes rounded up) |
| videoStreamUrl | string | null | Direct video stream link from the site (may expire) |
| audioStreamUrl | string | null | Direct audio stream link from the site (may expire) |
| subtitles | string | null | Subtitle text (WebVTT or SRT, as published) when requested |
| note | string | null | Link expiry or a reason the file was not saved |
You pay for the events the actor reports, such as each result or page it produces, plus the platform usage of your runs: compute, proxies and storage. Platform usage is typically about $6.15 per 1,000 results.
| Event | Charged when | Price |
|---|---|---|
| Saved megabyte | Each megabyte downloaded for a saved file, rounded up. | $0.001 |
| Video | Each video in the dataset, with or without a saved file. | $0.01 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/video-downloader').call({
"videos": [
{
"url": "https://vimeo.com/22439234"
},
{
"url": "https://media.w3.org/2010/05/sintel/trailer.mp4"
}
],
"maxVideos": 10,
"preferredQuality": "720p",
"preferredFormat": "mp4",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/video-downloaderPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://mcp.scrape.ly?tools=actors,runs,storage,docs&actors=echofield/video-downloader"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
One public Vimeo video saved as a 360p MP4 file.
A public .mp4 file link (Sintel trailer, CC BY) saved with its size and length.
A web page with an HTML5 video player; the embedded video is saved.
A public Dailymotion video saved near 240p, with the subtitle text the site publishes.
The soundtrack of a public Vimeo video saved as an MP3 file.

The 9 best web scraping tools for 2026 across platforms, scraping APIs, no-code builders, open-source libraries and AI crawlers, each with a narrow 'best for', today's prices, and a comparison table. Scrape.ly is our pick.
Read the article
What is web scraping? The automated collection of data from websites into structured records. See how it works step by step with tested Python code, what teams use it for, how it differs from crawling, APIs and screen scraping, and how to do it without code.
Read the article
The 7 best Apify alternatives for 2026, compared on what matters when you leave Apify: running your existing Actors, proxy prices per GB, free plans and spend control. Plus the exact code to switch.
Read the articleScrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.