Skip to content
    ↑↓ to choose · Enter to open

    · 16 min read

    Kick Channel Scraper: 66 Data Fields, Up to 1,000 Free Results/Month

    By CrawlerBros Engineering Team

    Each record from Kick Channel Scraper carries up to 66 output fields, providing detailed information about Kick.com streamer channels, including profile data, follower counts, live status, past broadcasts (VODs), clips, gift leaderboards, custom emotes, and the full category/subcategory taxonomy. This Actor retrieves data directly from Kick's public JSON API, requiring no login, cookies, or proxies. It's a powerful tool for researchers, analysts, and content creators looking to understand the Kick streaming ecosystem. However, it is not suitable for users who require search functionality for channels or videos, as this is not a supported feature.

    Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 1,000 results at $0.005 each before platform usage. Open Kick Channel Scraper on Apify and run the prefilled example.

    How reliable is Kick Channel Scraper in production?

    Across the last 30 days of public runs on the Apify platform, Kick Channel Scraper recorded 365 runs with the following outcomes.

    Outcome Runs Share
    Succeeded 365 100.0%
    Failed 0 0.0%
    Aborted by the user 0 0.0%
    Timed out 0 0.0%
    Total 365 100.0%

    No run failed or timed out in the last 30 days. Keep a retry and an alert on scheduled runs all the same: a clean month is a record, not a guarantee.

    What does it cost to run Kick Channel Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    Worked example: collecting 10,000 results costs $50.00 in result charges before run-start fees and platform usage. No run failed or timed out in the last 30 days, so the list price is a fair budget; keep a retry in place all the same.

    The primary driver of cost is the number of results returned, which depends on the maxItems input control for most modes, or the number of channelSlug values provided. To estimate costs, perform a small test run with a low maxItems (the example input caps maxItems at 20, costing at most $0.10 in result charges) and evaluate the number of records produced before scaling up. This allows you to confirm the data structure and relevance without incurring significant charges.

    How do you run Kick Channel Scraper from the API?

    The schema marks 1 of its 7 controls as required: mode. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for Kick Channel Scraper, so the request works once your token is in place.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~kick-channel-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"channel","channelSlug":"xqc","clipSort":"date","clipPeriod":"all","clipCategory":"","subcategoryCategory":"","maxItems":20}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "channel",
      "channelSlug": "xqc",
      "clipSort": "date",
      "clipPeriod": "all",
      "clipCategory": "",
      "subcategoryCategory": "",
      "maxItems": 20
    }
    
    run = client.actor("crawlerbros~kick-channel-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "channel",
      "channelSlug": "xqc",
      "clipSort": "date",
      "clipPeriod": "all",
      "clipCategory": "",
      "subcategoryCategory": "",
      "maxItems": 20
    }
    
    const run = await client.actor('crawlerbros~kick-channel-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.

    Which Kick Channel Scraper inputs matter, and which can you skip?

    The mode control is required and determines the type of data to fetch, from channel profiles to clips or leaderboard entries. The channelSlug control is essential for most modes that target specific streamers. For a first run, you should specify a mode and a single channelSlug to get a feel for the output. The clipSort, clipPeriod, clipCategory, and subcategoryCategory controls are for filtering global clips and subcategories; these can be left at their defaults for initial exploration.

    • mode (string): What to fetch. Default: "categories".
    • channelSlug (string): Kick channel/streamer username, e.g. xqc, adinross, trainwreckstv. Required for channel, videos, leaderboard, emotes modes. Leave blank for clips global trending or subcategories/categories/leaderboard-less browsing. Default: "".
    • clipSort (string): Sort order for global trending clips. Ignored when channelSlug is set (channel clips are returned newest-first by the API). Default: "date".
    • clipPeriod (string): Time window for global trending clips. Ignored when channelSlug is set. Default: "all".
    • clipCategory (string): Restrict global trending clips to one top-level category. Ignored when channelSlug is set. Default: "".
    • subcategoryCategory (string): Restrict the subcategory browse list to one of Kick's 6 top-level categories. Default: "".
    • maxItems (integer): Hard cap on emitted records (ignored by channel mode, which always emits exactly 1 record). Default: 20.

    Fixed-choice controls: mode accepts channel (Channel profile), videos (Channel VODs (past broadcasts)), clips (channel or global trending), subcategories (Browse subcategories (game/stream tags)), leaderboard (Channel gift leaderboard (top gifters)), categories (Top-level categories (all 6)), emotes (Channel emotes (channel-specific set)); clipSort accepts date (Newest first), view (Most viewed); clipPeriod accepts day (Past day), week (Past week), month (Past month), all (All time); clipCategory accepts "" (Any category), games, irl, music, gambling, creative, alternative; subcategoryCategory accepts "" (Any category), games, irl, music, gambling, creative, alternative.

    What does Kick Channel Scraper return?

    The records returned by Kick Channel Scraper are rich in detail, providing everything from a streamer's follower count and social links to individual VOD metadata and top gifter lists. This output is ideal for building analytics dashboards, content aggregation systems, or conducting detailed research on the creator economy. It conspicuously does not contain private viewer data, direct contact information for streamers, or real-time chat logs.

    • recordType
    • channel
    • video
    • clip
    • subcategory
    • leaderboardEntry
    • category
    • emote
    • slug
    • channelId
    • username
    • bio
    • profilePicUrl
    • followersCount
    • verified
    • isAffiliate
    • isBanned
    • vodEnabled
    • subscriptionEnabled
    • socials
    • bannerUrl
    • chatroom
    • isLive
    • streamTitle
    • viewerCount
    • startTime
    • streamThumbnailUrl
    • kickUrl
    • videoId
    • channelSlug
    • title
    • language
    • isMature
    • durationSeconds
    • views
    • createdAt
    • thumbnailUrl
    • streamUrl
    • videoStatus
    • videoUrl
    • clipId
    • privacy
    • likes
    • clipUrl
    • channelUsername
    • channelProfilePicUrl
    • creatorUsername
    • creatorSlug
    • parentCategory
    • subcategoryId
    • name
    • description
    • isPromoted
    • viewers
    • period
    • allTime
    • week
    • month
    • rank
    • userId
    • quantity
    • categoryId
    • icon
    • emoteId
    • subscribersOnly
    • emoteUrl

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Kick Channel Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Select your desired mode. Start with channel and a single channelSlug to understand the output structure for a specific streamer's profile.
    2. Examine the channel output: confirm fields like followersCount, isLive, and streamTitle are populated as expected for an active streamer.
    3. Switch to videos mode with the same channelSlug and a maxItems of 5. Verify that title, durationSeconds, and views appear for each VOD.
    4. If collecting global trending clips, set mode to clips and leave channelSlug blank. Experiment with clipSort, clipPeriod, and clipCategory to see how the results change.
    5. Check the clips output for variety in categories and channels, ensuring the filters (clipSort, clipPeriod, clipCategory) are working as intended.
    6. For bulk data collection, expand your channelSlug list or increase maxItems (up to 2000) for relevant modes, always monitoring output consistency.
    7. Regularly review the recordType field in your dataset to ensure each entry matches the mode you intended, especially when combining different collection types in a single run.

    How do you apply it? Three worked playbooks

    These are Kick Channel Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Streamer analytics

    Outcome: Track a creator's follower growth, live status, and VOD/clip performance over time

    Configure: Set mode to channel and specify the channelSlug of the creator. For VODs, set mode to videos with the same channelSlug and a maxItems value, e.g., 50. For clips, use mode clips with the channelSlug and a maxItems of 50.

    Working method: Begin by fetching the channel profile for a specific streamer. Then, schedule separate runs for their VODs and clips, storing the results with timestamps. Compare followersCount over time from channel profiles, and analyze views on VODs and clips to assess content performance and trends. Look for correlations between live status and follower growth.

    Deliverable: A time-series dataset of channel profiles, VODs, and clips for one or more streamers, showing changes in follower counts, live events, and content engagement metrics.

    Stop condition: Channel profile data for a specific channelSlug consistently returns with empty followersCount or isLive status, indicating a data source issue.

    Use case 2: Content aggregation

    Outcome: Pull recent VODs and clips for a highlight roundup

    Configure: Set mode to videos or clips. If for a specific channel, provide its channelSlug. For global trending clips, omit channelSlug and set clipSort to view, clipPeriod to week or day, and maxItems to 100.

    Working method: Start with a targeted run using mode=videos for a specific channelSlug to identify high-performing VODs. For trending content across Kick, set mode=clips with no channelSlug, sorting by view for the day or week. Evaluate the returned titles, views, and thumbnails to select content for your highlight reel. Combine results from both VODs and clips to create comprehensive roundups.

    Deliverable: A curated list of video and clip metadata (titles, URLs, thumbnails, views) suitable for generating highlight summaries or news feeds.

    Stop condition: Returned VODs or clips consistently have zero views or extremely short durationSeconds (e.g., less than 30 seconds), indicating irrelevant or malformed content.

    Use case 3: Creator-economy research

    Outcome: Analyze gift-leaderboard data to study viewer spending behavior

    Configure: Set mode to leaderboard and provide the channelSlug of the streamer whose gift economy you want to study. Leave maxItems at its default for a comprehensive view.

    Working method: Execute runs for mode=leaderboard across a selection of channelSlug values representing different streamer tiers or content types. Collect the data over several weeks or months, focusing on username, quantity, and period. Compare gifting patterns (all-time, weekly, monthly) across various channels to identify high-value viewers and analyze engagement trends related to gifting behavior. Look for specific usernames appearing frequently across different leaderboards.

    Deliverable: A dataset of gift leaderboard entries for multiple channels, showing top gifters and their contribution quantities, categorized by period, suitable for quantitative analysis of viewer spending.

    Stop condition: Leaderboard data consistently returns the same set of users and quantities across different period filters (e.g., week and month show identical results), suggesting a caching or data refresh issue upstream.

    What breaks, and how do you design around it?

    • Over the last 30 days, 0.0% of public runs failed and 0.0% timed out. Build retries and alerting around those rates rather than assuming every run completes.

    When collecting VODs, be aware that Kick's API only returns the most recent broadcasts, not a full historical archive; you will need to schedule repeated runs to capture new VODs as they appear. For subcategories, the API has an internal ceiling around 200 records per query; plan to filter by subcategoryCategory if you need to browse specific niches more deeply. Global clips filtered by niche categories may take longer to collect a large maxItems due to the distribution of content; consider lowering maxItems or running multiple times if you encounter long run times.

    When should you not use Kick Channel Scraper?

    This Actor is not the right choice if your primary need is to monitor real-time chat interactions or obtain direct contact information for streamers or viewers. Kick's public API, which this Actor uses, does not expose real-time chat data or private user contact details, focusing instead on public channel metrics and content. If you require real-time chat analysis, you might need to explore dedicated streaming analytics platforms that integrate directly with Kick's chat API (if available and accessible). For obtaining contact details, an alternative approach might involve using publicly available social media scraping tools like Instagram Followers & Following Scraper or Facebook Followers & Following Scraper to find associated social media profiles, then attempting to locate contact information through those channels. If you need comprehensive Twitch data, the Twitch Scraper or TwitchTracker Analytics Scraper would be more appropriate.

    What should you check before trusting the output?

    • Check for missing streamTitle or viewerCount in channel mode records when isLive is true; this could indicate a temporary API issue.
    • Look for video records with durationSeconds as zero when videoStatus is available; this might point to a corrupted VOD entry.
    • Inspect clip records for inconsistent createdAt timestamps, especially when using clipSort by date, to ensure correct chronological ordering.
    • For leaderboard entries, verify quantity values are positive and username fields are not empty, as zero-quantity or anonymous entries are usually irrelevant.
    • When collecting emotes, confirm that emoteUrl fields resolve to valid images and subscribersOnly flags are correctly set.
    • If maxItems is used with clips or subcategories mode, ensure the number of records returned is close to or exactly maxItems, unless an upstream limit is reached.

    None of this proves a record is correct. It gives a scheduled Kick Channel Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    What kind of data can I get about a streamer's live status?

    When fetching a channel profile using mode=channel, the output includes isLive, streamTitle, viewerCount, and streamThumbnailUrl fields. These provide real-time information about whether a streamer is currently broadcasting, the title of their stream, how many viewers they have, and a link to the live thumbnail. If the channel is offline, isLive will be false and the other live-specific fields will be omitted from the record.

    How can I get all available VODs for a channel?

    Kick's public API for VODs (past broadcasts) only returns the most recent items per channel, and it does not offer further pagination to access older VODs. This Actor surfaces all the VODs that the API exposes. To collect as many as possible, set mode to videos, specify the channelSlug, and use the highest allowed maxItems value (2000), but be aware that the actual number returned may still be limited by the API's internal ceiling for recent VODs.

    Does this Actor provide global trending clips or just channel-specific ones?

    This Actor supports both. If you set mode to clips and provide a channelSlug, it will return clips specific to that channel. If you set mode to clips but leave channelSlug blank, it will fetch global trending clips. For global clips, you can further refine the results using clipSort (by date or views), clipPeriod (past day, week, month, or all time), and clipCategory filters.

    What happens if a run fails or times out?

    Telemetry shows that in the last 30 days, 365 runs succeeded out of 365, with 0 failed runs and 0 timed out runs. This indicates a very high reliability. If a run were to fail or time out, Apify's platform would typically notify you. You would then need to review your input parameters or the run logs to identify the cause, potentially trying a smaller maxItems or a different channelSlug if you suspect the issue is with the target data.

    Can I filter subcategories by more than one top-level category?

    No. When using mode=subcategories, the subcategoryCategory input control allows you to restrict the browse list to only one of Kick's 6 top-level categories. If you need to collect subcategories from multiple top-level categories, you will need to run the Actor separately for each category you wish to filter by. Leaving subcategoryCategory blank will return subcategories across all categories.

    Where to go next

    When you are ready to run it, open Kick Channel Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the Kick Channel Scraper Actor page for the current input schema, pricing tier, and run history.

    If you are comparing approaches rather than committing to one Actor, these category pages list every option we publish:

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-25.

    • Actor last updated by its maintainers on 2026-07-14.

    • Run outcome figures cover the 30 day public window ending 2026-09-25.

    • Kick Channel Scraper on Apify

    Featured actors

    Kick Channel Scraper

    Scrape Kick.com streamer channels - profile info, follower counts, live status, VODs, clips, gift leaderboards, custom emotes, and the full category/subcategory taxonomy. No login, no proxy, public JSON API.

    Run on Apify ↗