All platforms24 Kick endpoints

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.

No credit card requiredRead the API docs
  • Channels + live
  • VODs and clips
  • 1 credit per request
  • Failed requests aren't charged
99.8% uptime#3 Product of the Day3,200+ developers

Teams running monitoring, research, and enrichment pipelines

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.

Never expires

What Kick data can you get?

24 endpoints, one API key. Every response comes back as live JSON in the same envelope.

Browse all 24 Kick endpoints

Channels

Clips

Live

Videos

Users

Categories

Events

Drops

Use cases

What teams build with Kick data

Monitoring, enrichment, research and content workflows on Kick data, on the same API as every other platform.

What you can build

Monitor channels

Follow live status, videos, clips and categories.

Find streamers

Check followers, socials and recent categories.

How it works

Your first request in three steps.

Use TypeScript or your automation tool of choice.

Sources

+ 51 more platforms

One request

Social Fetch API

GET/v1/tiktok/profiles/charlidamelio

x-api-key: sk_live_••••••••

1 request · 1 credit

Same JSON shape

response.json200 OK
{
  "data": {
    "lookupStatus": "found",
    "profile": {
      "platform": "tiktok",
      "handle": "charlidamelio",
      "displayName": "charli d’amelio",
      "verified": true
    },
    "metrics": {
      "followers": 160263648
    }
  }
}
  1. Step 1

    Create your free account

    Get an API key with 100 requests included.

  2. Step 2

    Choose an endpoint

    Pass a username, URL, keyword, or post ID.

  3. 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.

Explore integrations

Pricing

Social data, priced simply.

Start with 100 free credits. Monthly plans give you predictable volume and lower per-request rates.

Starter

$29.00

18,000credits

  • Top up from $1.61 / 1k if you run out
  • Up to 25 monitors
Most popular

Growth

$79.00

50,000credits

  • Top up from $1.58 / 1k if you run out
  • 5 team seats
  • Up to 100 monitors

Scale

$225.00

150,000credits

  • 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.”

Daniel Reeve · Founder, Social Crow
  • “Transcripts at volume from one endpoint. No broken scrapers for our small team to maintain.”

    Marcus Lin · Founder, Voice Gecko
  • “Live profile data on every request. We never flag accounts from a stale cache.”

    Hannah Webb · Founder, Scam Finder
  • “Heavy concurrent load, no rate limits to negotiate. The rare API I haven't wrapped in retries.”

    Owen Pritchard · Founder, IP Flare

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. 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. 2. Pick the channel or record

    Use the channel slug, for example GET /v1/kick/channels/xqc for the profile or GET /v1/kick/channels/xqc/clips?sort=date for its newest clips. For a single record use the VOD UUID or the clip_… id. Send x-api-key on every request.

  3. 3. Branch and page

    Check data.lookupStatus before you store a row. Keep requesting with page.nextCursor while page.hasMore is true, and bill from meta.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