Operated by Sourcelane✓ verified
A web-scraping connector for Kick.com that harvests structured channel-level and content-level metadata for streamers at scale: channel profiles (followers, verification/affiliate/banned flags, bios, contact emails, profile and banner images, social links), past broadcasts/VODs (titles, URLs, start dates, durations, view counts, end-of-stream viewer counts, categories, tags, thumbnails, HLS playlist links), clips (titles, URLs, views, durations, creation dates, clip creators, categories, thumbnails, video URLs), and real-time live stream listings (ranked by viewers with channel info, current viewers, title, category/parent section, language, uptime, thumbnails, bio/emails/socials). Supports bulk scraping, category/language/minimum-viewer filtering, sorting (by views or recency), stateful continuation across runs via pagination tokens, automatic proxy rotation when needed, and operation without a Kick account.
Verified Sep 28, 3:55 AM
$0.002
per channel
Up to 100 per call. Only pay for results returned; failed calls are refunded.
| Window | Uptime | Success rate | p50 | p95 | Calls |
|---|---|---|---|---|---|
| 24h | — | — | — | — | 0 |
| 7d | — | — | — | — | 0 |
| 30d | — | — | — | — | 0 |
Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.
Call it via Sourcelane
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"kick-channel-scraper","params":{"mode":"channels","maxItems":5},"maxResults":10}'Request params
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Channel profiles: one row per channel with followers, verified badge, bio, social links and live status. Past broadcasts: every VOD Kick still hosts for each channel. Clips: a channel's clips sorted by views or date. Live streams: channels streaming right now, highest viewers first, optionally filtered by category and language. |
channels | array | optional | Kick channel names or URLs, one per line - e.g. xqc, @adinross or https://kick.com/trainwreckstv. Used by the Channel profiles, Past broadcasts and Clips modes. |
includeAboutLinks | boolean | optional | Channel profiles mode: also return the links from the channel's About panel (sponsor, merch, tip links) and the monthly subscription price. Same number of requests, slightly larger responses. |
maxVideosPerChannel | integer | optional | Past broadcasts mode: newest broadcasts first. 0 = everything Kick still hosts (Kick keeps VODs for roughly the last 30 days). |
clipsSort | string | optional | Clips mode: return the most viewed clips first or the newest clips first. |
clipsTimeRange | string | optional | Clips mode: only include clips created within this window. |
maxClipsPerChannel | integer | optional | Clips mode: stop after this many clips for each channel. 0 = all clips (large channels have tens of thousands). |
liveCategories | array | optional | Live streams mode: only return streams in these categories. Use the slug from the category page URL, e.g. just-chatting, slots, grand-theft-auto-v, counter-strike-2. Leave empty for all categories. |
liveParentCategory | string | optional | Live streams mode: restrict to one top-level section of Kick. |
liveLanguages | array | optional | Live streams mode: only return streams in these languages. Accepts language names (English, Spanish) or codes (en, es, pt). Leave empty for all languages. |
minViewers | integer | optional | Live streams mode: skip streams with fewer concurrent viewers than this. The list is sorted by viewers, so the run stops as soon as it drops below the threshold. |
includeChannelDetails | boolean | optional | Live streams mode: look up each live channel's follower count and verified status. Adds one request per stream, so runs take a little longer. |
maxItems | integer | optional | Maximum number of rows for the whole run, across all channels. 0 = no limit. Capped at 100 per call. |
pageId | string | optional | Paste NEXT_PAGE_ID from the previous run's Key-value store to continue where it stopped. Works for Live streams mode and for Clips mode with a single channel. |
Each result contains
| Field | Type | Description |
|---|---|---|
type | string | — |
channelSlug | string | — |
channelUsername | string | — |
clipId | string | — |
url | string | URL |
title | string | — |
views | integer | — |
durationSeconds | integer | — |
createdAt | string | Created At |
creatorUsername | string | — |
creatorSlug | string | — |
category | string | — |
categorySlug | string | — |
parentCategory | string | — |
isMature | boolean | — |
thumbnailUrl | string | — |
videoUrl | string | — |
livestreamId | string | — |
scrapedAt | string | — |
Pick your tool and connect in under a minute. Then just ask — for example: “Find this creator's profiles on every social network and summarise their reach.”
Connect Claude
Web, desktop and mobile. Paste one URL.
Adds the Sourcelane MCP server with your key as a header.
claude mcp add --transport http sourcelane https://api.usesourcelane.com/mcp \
--header "Authorization: Bearer sl_live_your_agent_key"Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.
{
"mcpServers": {
"sourcelane": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.usesourcelane.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer sl_live_your_agent_key"
}
}
}
}Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).
{
"mcpServers": {
"sourcelane": {
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer sl_live_your_agent_key"
}
}
}
}Save as .vscode/mcp.json. VS Code prompts for your key once.
{
"servers": {
"sourcelane": {
"type": "http",
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer ${input:sourcelane-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "sourcelane-key",
"description": "Sourcelane agent key",
"password": true
}
]
}Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.
https://usesourcelane.com/openapi.jsonOne POST. Pass maxResults to cap cost.
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"kick-channel-scraper","params":{"mode":"channels","maxItems":5},"maxResults":10}'Wrap the REST call as a tool, or point an MCP client at the endpoint.
import requests
res = requests.post(
"https://api.usesourcelane.com/v1/call",
headers={"Authorization": "Bearer sl_live_your_agent_key"},
json={
"listing": "kick-channel-scraper",
"params": {"mode":"channels","maxItems":5},
"maxResults": 10,
},
timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])—
0 reviews
Leave a review
Loading reviews…