Kick API. Channels, streams and clips as JSON.
Look up a channel, check whether it is live, page its videos and clips, and read the live directory, categories, events and drop campaigns. Every response uses the same envelope.
- Channels + live
- VODs and clips
- 1 credit per request
- Failed requests aren't charged
Teams running monitoring, research, and enrichment pipelines
Why Social Fetch
Kick data as JSON. You build the product.
Live Kick data in one response shape, with platform changes handled for you.
Kick, plus every other platform
One key and one response envelope for Kick and 56 more platforms.
Pricing you can reason about
One request, one credit. Know how far your balance will go before you run your next batch.
Live data on every request
Fetch public data when you ask for it.
Nothing to maintain
We handle platform changes and breakages.
Built for production jobs
Run concurrent workloads with explicit statuses and request IDs.
Regular jobs. Better rates.
Running lookups every month? Get lower per-credit rates with a monthly plan. For occasional projects, choose pay as you go.
What Kick data can you get?
24 endpoints, one API key. Every response comes back as live JSON in the same envelope.
- +4 more channels endpoints
Channels
Clips
Live
Videos
Users
Search
Categories
Events
Drops
Browse all 24 Kick endpoints
Channels
Clips
Live
Videos
Users
Search
Categories
Events
Drops
What teams build with Kick data
Monitoring, enrichment, research and content workflows on Kick data, on the same API as every other platform.
How it works
Your first request in three steps.
Use TypeScript or your automation tool of choice.
Sources
+ 51 more platforms
One request
GET/v1/tiktok/profiles/
x-api-key: sk_live_••••••••
Same JSON shape
{
"data": {
"lookupStatus": "found",
"profile": {
"platform": "tiktok",
"handle": "charlidamelio",
"displayName": "charli d’amelio",
"verified": true
},
"metrics": {
"followers": 160263648
}
}
}Step 1
Create your free account
Get an API key with 100 requests included.
Step 2
Choose an endpoint
Pass a username, URL, keyword, or post ID.
Step 3
Get clean JSON
Use the response immediately or send it into your pipeline.
Works with your stack
Code, automate, or connect your AI.
TypeScript
n8n
- Make
- Apify
- MCP
- AI clients
Pricing
Social data, priced simply.
Start with 100 free credits. Monthly plans give you predictable volume and lower per-request rates.
Starter
18,000credits
$1.61 per 1k · $0.00161 per request
- Top up from $1.61 / 1k if you run out
- Up to 25 monitors
Growth
50,000credits
$1.58 per 1k · $0.00158 per request
- Top up from $1.58 / 1k if you run out
- 5 team seats
- Up to 100 monitors
Scale
150,000credits
$1.50 per 1k · $0.00150 per request
- Top up from $1.50 / 1k if you run out
- 25 team seats
- Up to 250 monitors
- Cancel anytime
- 30-day money-back guarantee
- Price locked while you stay
Need 1M+ credits, invoicing, or volume rates? Talk to us
Trust signals
DevHunt
Product Hunt
Uneed
Customers
Teams building on Social Fetch.
“Our TikTok and Instagram scrapers broke constantly. Social Fetch took us off that rotation — we ship product again.”
“Transcripts at volume from one endpoint. No broken scrapers for our small team to maintain.”
“Live profile data on every request. We never flag accounts from a stale cache.”
“Heavy concurrent load, no rate limits to negotiate. The rare API I haven't wrapped in retries.”
Kick API: common questions
What Kick data can I get from the API?
Channel profiles, live status, a channel's videos, clips, gifter leaderboard, channel-point rewards, goals and emotes, single VODs and clips, global and category clip lists, users, the live directory, top gifted streams, channel search, category groups, the busiest categories, top channels, events, drop campaigns and active chatters.
How do I name a Kick channel?
Use the channel slug, for example xqc, trainwreckstv or pala_okey. Slugs are case-insensitive and can contain letters, digits, underscores and hyphens. An unknown slug returns data.lookupStatus: not_found with channel: null.
What does a channel response include?
data.channel carries id, userId, slug, url, username, bio, avatarUrl, socials, followers, isVerified, isAffiliate, isBanned, subscription, subscriberBadges, chat modes, links, recentCategories and livestream. livestream is null when the channel is offline.
How do lists page?
Lists return data.page with page, hasMore, nextCursor and lastPage. Send nextCursor back as cursor with the same filters until hasMore is false. Sortable clip pages drop recently returned ids, so a page can be shorter than a full page even when hasMore is true; keep following nextCursor, and de-duplicate by clips[].id. The last page with rows can still say hasMore is true and be followed by an empty page; stop at the first empty page, which has hasMore false and no nextCursor. Categories also accept page 1 to 20. A channel's videos come back in one page of up to 30 with no paging.
Does a VOD always have a playback URL?
No. A subscriber-only VOD returns lookupStatus: restricted with its public metadata and playbackUrl: null. A normal public VOD returns lookupStatus: found and a public playbackUrl.
How many live streams can I list at once?
GET /v1/kick/livestreams returns up to 100 streams per page. The directory order moves while you walk it, so a row can repeat across cursor pages. De-duplicate by data.streams[].id, or follow page.nextCursor one page at a time.
What does search return?
data.channels, data.categories and data.tags. The query must be at least 3 characters. Double quotes, semicolons, backslashes, ampersands and emoji are refused with HTTP 400 before any request. No match is still lookupStatus: found with empty arrays, so check the array lengths rather than treating an empty answer as an error.
Can I tell whether a channel is live?
GET /v1/kick/channels/{slug}/livestream returns data.livestream with id, title, category, viewers, language, tags and startedAt when the channel is live, and null when it is offline. On this route startedAt is the stream record's creation time and can differ by a few seconds from the channel route's start time. An unknown slug returns lookupStatus: not_found, so offline and missing are distinct.
How are active chatters returned?
GET /v1/kick/channels/{slug}/chatters returns up to 100 named people in data.chatters, with separate moderators, vips, ogs and bots arrays and data.totalCount for everyone in chat. avatarUrl is the real URL, including Kick's default avatar when the person has not set one.
How much does the Kick API cost?
Every Kick route charges a flat amount per completed request, shown on each endpoint page, and each page of a list is billed separately. A found, empty or not-found answer is a completed request and costs that amount; invalid requests and errors are free. Check meta.creditsCharged on every response. New accounts start with 100 free credits.
The Kick API in detailHow the Kick routes work, what they cost, and how they differ from the official API.
Why teams use Social Fetch for Kick
GET /v1/kick/channels/{slug} is the center of the Kick API. A channel profile carries bio, followers, socials, chat modes, links, subscriberBadges, recentCategories and the current livestream when the channel is live. From there, /v1/kick/channels/{slug}/videos, /clips, /leaderboard, /rewards, /goals, /emotes and /chatters each add one part of the channel.
The rest of the catalog covers single records and discovery: a VOD by UUID, a clip by id, the global, category and newest clip lists, any user by username, the live directory, channel search, the category list and detail, top channels, events and drop campaigns. Every answer is JSON in the { data, meta } envelope with data.lookupStatus on lookups. Lists report page.nextCursor and page.hasMore, so you fetch one page at a time. A lookup that misses comes back as lookupStatus: not_found, not as an HTTP error.
How to call the Kick API
1. Create an API key
Sign up at Social Fetch and copy a key (
sfk_…). New accounts get 100 free credits, enough to try several routes on a few channels.2. Pick the channel or record
Use the channel slug, for example
GET /v1/kick/channels/xqcfor the profile orGET /v1/kick/channels/xqc/clips?sort=datefor its newest clips. For a single record use the VOD UUID or theclip_…id. Sendx-api-keyon every request.3. Branch and page
Check
data.lookupStatusbefore you store a row. Keep requesting withpage.nextCursorwhilepage.hasMoreis true, and bill frommeta.creditsCharged.
What each Kick route returns
- Channel profile with socials, chat modes, link panels, subscriber badges, recent categories and the current live stream.
- A channel's videos, clips, gifter leaderboard, channel-point rewards, goals and emotes.
- Single VOD and clip records with views, likes, duration, category and creator.
- Global, per-category and newest clip lists with sort, time window and cursor paging.
- Live directory, top gifted streams, top channels, channel search, category groups, top categories, category list and detail.
- Events with live streams or clips, drop campaigns including expired ones, and the people currently in a channel's chat.
How much does the Kick API cost?
Each Kick route charges a flat credit amount per completed request, shown on every endpoint page. Each page of a list is its own request. Credits never expire on pay-as-you-go packs, and meta.creditsCharged on every response is the billing source of truth.
Social Fetch vs the official Kick API
Social Fetch gives every Kick route one JSON shape: ISO 8601 UTC timestamps, numeric counts even where Kick uses a string, typed lookupStatus responses, and opaque cursors that continue the same list and filters. Lists whose order moves while you walk them drop recently returned ids, but a long walk can still repeat a row; de-duplicate by id. You do not need an app registration or a user session to call the public routes.
Pull your first Kick data.
Run a live Kick request in the playground. 100 free credits, no card, JSON back in seconds.
No credit cardSign up in 30 seconds withGoogleGitHub