
Instagram Reel Scraper
scrape.ly/store/echofield/instagram-reel-scraperSocial mediaVideos
1 monthly user

Scrape Kick.com channels, VODs, clips and live streams: followers, views, durations, categories and direct .m3u8 stream links per quality, with optional MP4 downloads. No login needed.
Scrape Kick.com in seconds: channel profiles, past broadcasts (VODs), clips and live streams, each with direct .m3u8 stream links for every quality from 1080p60 down to 160p. Turn on MP4 downloads to save clips and short VODs straight to storage. No login, no API key, no browser.
.m3u8 link, plus one link per quality and an estimated file size.| Field | What it does |
|---|---|
startUrls | Kick links: kick.com/xqc, kick.com/xqc/videos/<id>, kick.com/video/<id>, kick.com/xqc/clips/<id>, kick.com/category/just-chatting |
channels | Channel names, for example xqc |
categories | Category slugs or names; all returns the top live streams on Kick |
searchQueries | Keywords to find channels |
maxItemsPerInput | VODs, clips, live streams or search results per input (default 10) |
maxTotalItems | Total row limit across all inputs (0 = no limit) |
includeChannelInfo / includeVideos / includeClips | What a channel produces |
clipsSort / clipsPeriod | Most viewed or newest clips; day, week, month or all time |
dateFrom / dateTo / minViews / minDurationSeconds / maxDurationSeconds / languages | Filters |
resolveQualities | List every quality with its own link and size (default on) |
quality | Preferred quality for downloadM3u8Url and downloads |
downloadVideos / maxVideoSizeMb | Save MP4 files up to the size limit (max 95 MB per file) |
{
"startUrls": [{ "url": "https://kick.com/xqc" }, { "url": "https://kick.com/xqc/clips/clip_01KT86AY6TFA1JMTT3M02AZ4YW" }],
"categories": ["just-chatting"],
"maxItemsPerInput": 10,
"clipsSort": "view",
"clipsPeriod": "month",
"quality": "720p60",
"downloadVideos": false
}
Every row has a type: channel, video (VOD), clip or livestream.
| Field | Description |
|---|---|
type, id, url, title | Row type, Kick id, Kick page URL, title |
channel, channelName, channelId | Channel slug, display name and id |
createdAt, startTime, durationSeconds, duration | Dates (UTC, ISO 8601), length in seconds and in milliseconds |
views, likes, peakViewers, viewerCount | Engagement |
categories / category, language, tags, isMature | Content info |
thumbnailUrl | Thumbnail image |
m3u8Url | HLS link (VOD master playlist or clip playlist) |
mp4Url | Direct MP4 file, for older clips that Kick stores as a single file |
qualities[] | Per quality: quality, resolution, fps, bandwidth, m3u8Url, estimatedSizeBytes |
downloadQuality, downloadM3u8Url, estimatedSizeBytes | The chosen quality and its link and size |
downloadUrl, fileSizeBytes, fileFormat, downloadStatus | Saved MP4 file (when downloads are on) |
followersCount, bio, verified, isLive, socials, livestream, liveM3u8Url | Channel rows |
Example clip and VOD (real structure; clipper name changed):
[
{
"type": "clip",
"id": "clip_01KT86AY6TFA1JMTT3M02AZ4YW",
"url": "https://kick.com/xqc/clips/clip_01KT86AY6TFA1JMTT3M02AZ4YW",
"title": "lmaoaoaoaoa",
"channel": "xqc",
"channelName": "xQc",
"createdAt": "2026-06-04T02:12:03Z",
"durationSeconds": 31,
"views": 68288,
"category": "Just Chatting",
"creator": "clipper_jane",
"thumbnailUrl": "https://clips.kick.com/clips/d9/clip_01KT86AY6TFA1JMTT3M02AZ4YW/thumbnail.webp",
"m3u8Url": "https://clips.kick.com/clips/d9/clip_01KT86AY6TFA1JMTT3M02AZ4YW/playlist.m3u8",
"estimatedSizeBytes": 33827404,
"downloadStatus": "success",
"fileSizeBytes": 32786775,
"fileFormat": "mp4",
"downloadUrl": "https://api.scrape.ly/v2/key-value-stores/<store>/records/clip_xqc_clip_01KT86AY6TFA1JMTT3M02AZ4YW_source.mp4"
},
{
"type": "video",
"id": "50d558e6-63f6-43a7-8b4c-61634e839d7d",
"url": "https://kick.com/amouranth/videos/50d558e6-63f6-43a7-8b4c-61634e839d7d",
"title": "WORKOUT STREAM✨ !s for my socials",
"channel": "amouranth",
"createdAt": "2026-09-28T22:34:00Z",
"durationSeconds": 4467,
"views": 21450,
"language": "English",
"categories": ["Just Chatting"],
"m3u8Url": "https://stream.kick.com/.../media/hls/master.m3u8",
"qualities": [
{ "quality": "1080p60", "resolution": "1920x1080", "fps": 60, "bandwidth": 5397705, "m3u8Url": "https://stream.kick.com/.../1080p60/playlist.m3u8", "estimatedSizeBytes": 3013919793 },
{ "quality": "480p30", "resolution": "852x480", "fps": 30, "bandwidth": 1520567, "m3u8Url": "https://stream.kick.com/.../480p30/playlist.m3u8", "estimatedSizeBytes": 849046598 }
],
"downloadQuality": "1080p60",
"downloadM3u8Url": "https://stream.kick.com/.../1080p60/playlist.m3u8",
"estimatedSizeBytes": 3013919793
}
]
Is it legal to scrape Kick? The actor reads only public pages and public video links, the same data any visitor sees. You are responsible for how you use it, including copyright on downloaded videos.
Do I need a Kick account or proxy? No account. The default datacenter proxy works; switch to residential only if you see blocks.
How many results can I get? Kick keeps a channel's recent VODs (usually the last few weeks) and lets you page through all of a channel's clips. Live streams are listed by viewer count.
Why can't I download a 5-hour VOD? Stored files are limited to 95 MB each. For long VODs use the .m3u8 link with any HLS tool (for example ffmpeg -i "<m3u8Url>" -c copy vod.mp4), or pick a lower quality.
How do I open a downloaded MP4? Open the run's Storage tab and download the file, or request downloadUrl through the API with your API token in the Authorization: Bearer header.
Why is a field empty? Kick does not fill every field for every item (for example, a channel that is offline has no live stream).
Can I schedule it or use the API? Yes. Schedule runs in the console or start them through the API and fetch the dataset as JSON, CSV or Excel.
liveM3u8Url) are signed and expire after a while.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.
startUrlsarrayOptionalKick URLs
Kick links of any kind: channels (kick.com/xqc), VODs (kick.com/xqc/videos/ or kick.com/video/), clips (kick.com/xqc/clips/ or ?clip=) and categories (kick.com/category/just-chatting).
channelsarrayOptionalChannel names
Kick usernames or slugs, for example xqc or amouranth. Each channel returns its profile, latest VODs and top clips.
categoriesarrayOptionalCategories
Category slugs or names, for example just-chatting or slots. Returns the live streams in that category with the most viewers, plus the category's top clips. Use 'all' for the top live streams across Kick.
searchQueriesarrayOptionalSearch channels
Keywords to search Kick channels by name. Returns matching channel profiles.
maxItemsPerInputintegerOptionaldefault 10Max items per input
How many VODs, how many clips, how many live streams and how many search results to return for each input. A channel with 10 returns up to 10 VODs and 10 clips. 0 returns only channel profiles.
maxTotalItemsintegerOptionaldefault 0Max total items
Stop after this many rows across all inputs. 0 means no total limit.
Choose which kinds of rows a channel produces.
includeChannelInfobooleanOptionaldefault trueChannel profile
Add one row per channel with followers, bio, socials, verification and current live stream.
includeVideosbooleanOptionaldefault trueVODs (past broadcasts)
Add the channel's saved broadcasts (VODs), newest first.
includeClipsbooleanOptionaldefault trueClips
Add the channel's (or category's) clips, sorted as chosen below.
clipsSortenumOptionaldefault "view"Sort clips by
Most viewed or newest clips first.
clipsPeriodenumOptionaldefault "all"Clips period
Time window for clips.
Narrow down VODs, clips and live streams. Filtered-out rows are not charged.
dateFromstringOptionalCreated after
Only VODs and clips created on or after this date (YYYY-MM-DD).
dateTostringOptionalCreated before
Only VODs and clips created on or before this date (YYYY-MM-DD).
minViewsintegerOptionalMinimum views
Only VODs and clips with at least this many views, and live streams with at least this many viewers.
minDurationSecondsintegerOptionalMinimum duration (seconds)
Only VODs and clips at least this long.
maxDurationSecondsintegerOptionalMaximum duration (seconds)
Only VODs and clips at most this long.
languagesarrayOptionalLanguages
Only VODs and live streams in these languages, as codes or names (en, es, English).
Every VOD and clip comes with its .m3u8 stream link. Optionally save the video file as MP4.
resolveQualitiesbooleanOptionaldefault trueResolve quality links
Read each VOD's HLS playlist to list every quality (1080p60 to 160p) with its own .m3u8 link and estimated file size, and each clip's exact size. Adds one small request per video.
qualityenumOptionaldefault "best"Preferred quality
Quality for the downloadM3u8Url field and for downloads. If a VOD does not have it, the next lower quality is used. Clips come in their source quality.
downloadVideosbooleanOptionaldefault falseDownload videos as MP4
Save each VOD and clip up to the size limit below as an MP4 file in the run's key-value store and put its link in downloadUrl. Charged per downloaded video. Videos over the limit keep their stream links and are not charged.
maxVideoSizeMbintegerOptionaldefault 50Max video size to download (MB)
Skip downloads larger than this. Up to 95 MB per file: enough for clips and short VODs (a 30 s clip at 1080p60 is about 33 MB; 480p is about 11 MB per minute).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for Kick's public API. Switch to residential if you see blocks.
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 |
|---|---|---|
| type | string | Row type |
| id | string | integer | Kick id (VOD uuid, clip id, channel id, livestream id) |
| url | string | null | Kick page URL |
| title | string | null | |
| channel | string | null | Channel slug |
| m3u8Url | string | null | HLS stream link |
| downloadUrl | string | null | Saved MP4 file |
| mp4Url | string | null | Direct MP4 file (older clips) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One channel, VOD, clip or live stream saved to the dataset. | $0.001 |
| Downloaded video | One VOD or clip saved as an MP4 file (up to 95 MB), only when downloads are switched on. | $0.005 |
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/kick-scraper').call({
"startUrls": [
{
"url": "https://kick.com/xqc"
}
],
"maxItemsPerInput": 10,
"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/kick-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/kick-scraper"
}
}
}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.
Channel profile plus the most recent past broadcasts.
Newest clips of the past week from one channel.
Live streams and clips from a Kick category.
Find Kick channels by name or keyword.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.