Twitch Video Details Scraper
Pricing
from $1.00 / 1,000 results
Twitch Video Details Scraper
Extract public Twitch video metadata including titles, descriptions, creators, categories, dates, durations, view counts, and preview images.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
ScrapingMonkey
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract public Twitch video metadata from URLs or video IDs. Twitch Video Details Scraper returns title, available description, owner channel, category, dates, views, duration and broadcast type in one row per video.
Enrich selected video references without collecting an entire channel history or requiring the channel name separately.
| At a glance | Details |
|---|---|
| ๐ฅ Input | Enter Twitch video IDs or official /videos/ URLs. Supported tracking and video timestamp parameters are accepted. |
| ๐ค Output | One video per success row, with source input retained |
| ๐ Pagination | Each video is an individual lookup. There is no result-page setting. |
| ๐ Login required | No |
| โก Processing | Up to 5 HTTP requests concurrently with automatic retries |
| ๐พ Delivery | One Apify dataset view, useful flat columns and complete nested JSON |
What the Twitch Video Details scraper collects ๐ฆ
The Actor resolves each selected video and its owner, then collects the available public metadata for that exact video.
Data can include:
- Video ID, canonical URL, title and nullable description
- Owner channel identity and category
- Creation and publication dates when supplied
- Views, duration in seconds and broadcast type
- Available preview thumbnail reference
How to collect video details from Twitch ๐
- Enter one or more supported inputs in
inputList. - Review the supported input format.
- Start the Actor.
- Open the Video details dataset view and review the individual records.
- Export the dataset or retrieve it from your application.
{"inputList": ["https://www.twitch.tv/videos/2870437527"]}
Each video is an individual lookup. There is no result-page setting.
Twitch video details data and complete output ๐ฆ
| Field | Type | Meaning |
|---|---|---|
input | string | Original submitted input. |
status | string | Result status: success or failed. |
type | string or null | Normalized result entity type. |
id | string or null | Identifier of this object, preserved as a string. |
url | string or null | Public source URL for this object. |
title | string or null | Public title supplied for this object. |
description | string or null | Available public description; null when not supplied. |
created_at | string or null | Creation time in an ISO-formatted date string when supplied. |
published_at | string or null | Publication time in an ISO-formatted date string when supplied. |
duration_seconds | integer or null | Duration in seconds, retaining fractional values when supplied. |
view_count | integer or null | Visible view count at collection time; not a unique-viewer estimate. |
broadcast_type | string or null | Source broadcast type for the selected video. |
preview_thumbnail_url | string or null | Available video preview-thumbnail URL. |
owner | object or null | Public channel that owns the selected video. |
owner.id | string or null | Identifier of this object, preserved as a string. |
owner.login | string or null | Twitch channel login used in its public URL. |
owner.display_name | string or null | Public display name, preserving the source capitalization. |
owner.url | string or null | Public source URL for this object. |
owner.profile_image_url | string or null | Available public channel profile-image URL. |
owner.primary_color_hex | string or null | Public channel theme color in hexadecimal form. |
owner.is_partner | boolean or null | Public Twitch Partner flag when supplied. |
game | object or null | Available game or category metadata for the parent object. |
game.id | string or null | Identifier of this object, preserved as a string. |
game.slug | string or null | Public identifier used in this objectโs URL. |
game.name | string or null | Public name of this blog or nested object. |
game.display_name | string or null | Public display name, preserving the source capitalization. |
game.url | string or null | Public source URL for this object. |
game.box_art_url | string or null | Available category or game cover-image URL. |
Every top-level output field appears in these complete examples. The success example is normalized from a public response; its values are a snapshot and can change. Nested arrays remain inside their parent result.
Complete representative success result:
{"input": "https://www.twitch.tv/videos/2870437527","status": "success","type": "video","id": "2870437527","url": "https://www.twitch.tv/videos/2870437527","title": "the dog is back to save us all. lock in were flying, shooting, driving and building..","description": null,"created_at": "2026-09-10T15:34:11Z","published_at": "2026-09-10T15:34:11Z","duration_seconds": 57024,"view_count": 1365886,"broadcast_type": "ARCHIVE","preview_thumbnail_url": "https://static-cdn.jtvnw.net/cf_vods/d2vi6trrdongqn/1e4c7287531e453d643e_shroud_320267692764_1789054446//thumb/thumb0-90x60.jpg","owner": {"id": "37402112","login": "shroud","display_name": "shroud","url": "https://www.twitch.tv/shroud","profile_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/c754eebf-745b-4e0a-814a-10bcaecaabbc-profile_image-70x70.png","primary_color_hex": "00ADFF","is_partner": null},"game": {"id": "743893402","slug": "wardogs","name": "WARDOGS","display_name": "WARDOGS","url": "https://www.twitch.tv/directory/category/wardogs","box_art_url": "https://static-cdn.jtvnw.net/ttv-boxart/743893402_IGDB-{width}x{height}.jpg"}}
Complete failed result:
{"input": "https://www.twitch.tv/videos/2870437527","status": "failed","type": null,"id": null,"url": null,"title": null,"description": null,"created_at": null,"published_at": null,"duration_seconds": null,"view_count": null,"broadcast_type": null,"preview_thumbnail_url": null,"owner": null,"game": null}
A failed row preserves input, sets status to failed, and sets every other top-level field to null. The run log records the reason. Optional successful fields can be null or empty when Twitch does not supply them. Object fields are exposed through useful columns in the single Video details view; arrays are not expanded into extra result rows.
Input requirements and pagination settings โ๏ธ
| Parameter | Type | Required | Default | Rules |
|---|---|---|---|---|
inputList | array of strings | Yes | None | Enter Twitch video IDs or official /videos/ URLs. Supported tracking and video timestamp parameters are accepted. At least 1 item. |
Enter supported Twitch /videos/ URLs or positive video IDs. The owner channel is resolved from the video; a separate channel input is unnecessary.
Enter a positive numeric video ID such as 2870437527 or a /videos/2870437527 URL on a supported Twitch host. A valid t playback-time query is accepted but does not restrict the returned metadata to part of the video.
Duplicate normalized inputs are processed once. Within the collection for one source input, repeated records are removed while distinct interactions or objects remain separate. The same object returned for different source inputs retains its source relationship.
There is no result-page setting. Each unique target is looked up individually, and nested fields remain within that result row.
Twitch video details use cases ๐ฏ
Known-video enrichment
Add structured metadata to selected video IDs and URLs.
Event reference records
Preserve the title, owner, category and dates of a known event recording.
Video inventory maintenance
Compare metadata snapshots for your selected video references in an external database.
Pricing and saved-result behavior ๐ฐ
Check the Actorโs Pricing tab for the active pricing model and current rate. Store settings can change, so this README does not claim a fixed price or runtime.
Under dataset-item pricing:
- Each successful result represents one video for its source input.
- An invalid or unavailable input, an input with no accessible results, or an exhausted request can produce a
failedrow. - Retry attempts and supporting requests do not create extra dataset rows by themselves.
- Nested media, profile information and other arrays remain part of their parent row.
- A normal empty continuation after earlier successes creates no additional row.
- Saved failed rows are not assumed to be free; check their treatment in the active pricing configuration.
More inputs can produce more saved rows. Start with a small run and check actual usage before increasing the workload.
Twitch video details API ๐
Replace $ACTOR_ID with the identifier shown in this Actorโs API tab and $APIFY_TOKEN with your Apify token.
curl -X POST "https://api.apify.com/v2/acts/$ACTOR_ID/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"inputList":["https://www.twitch.tv/videos/2870437527"]}'
Download the dataset in JSON, CSV, Excel or other formats available in the Console, or retrieve it through the Apify API. Use schedules, webhooks and Apify integrations to connect results to Google Sheets, Make, Zapier, cloud storage or your own application. These connections are configured separately by the user.
Reliability, retries, and public-data limits โ ๏ธ
Collection uses pure HTTP with up to five concurrent requests. Invalid syntax and confirmed missing, removed or unavailable targets stop without unnecessary retries. Temporary network or proxy failures, timeouts, blocking responses, malformed data, throttling and server errors allow up to five total attempts per request.
Successful earlier pages remain saved if a later request fails. A normal end after saved results is not retried. An input with no accessible results can receive a failed row; that alone does not prove that its underlying source does not exist. An exhausted later request can add a failed row while preserving previous output.
The Actor collects public metadata, not video files, chat history or protected playback. Descriptions can be null. Filled chapter lists are not a promised field set.
Twitch controls public availability, ranking and optional fields. Result counts can be affected by duplicates, removed content and changes during a run. A page budget is a collection limit, not a promise of exhaustive coverage.
An invalid string within a valid input list does not stop other inputs. Invalid overall configuration, such as a non-string list item or a wrong page-count type, exits before source requests. Startup failures, unavailable dataset storage or an unrecoverable result-save error can still stop the whole run. A failed save is not retried as a new scraping request.
Frequently asked questions โ
Do I need to know the owner channel?
No. Supply the video URL or ID; the Actor resolves the owner from the video.
Can it download subscriber-only recordings?
No. It collects public metadata and does not retrieve protected video content.
Why is the description null?
The public video response may not include a description. The Actor leaves it null instead of inventing text.
Does it require a Twitch account or personal cookies?
No. You do not need to provide a Twitch account, password or personal session cookie. Collection uses HTTP without opening a browser.
What happens to invalid or unavailable inputs?
Invalid individual inputs are recorded as failed without a source request. Confirmed missing or unavailable targets stop without unnecessary retries. Temporary failures allow up to five total attempts per request; other inputs and earlier saved results remain available.
Can I export results or run the same input again?
Yes. Export the default dataset or retrieve it through the Apify API. You can create an Apify schedule and connect completed runs to your own workflow.
Support, responsible use, and related actors ๐
For a reproducible issue, use the Actorโs Issues tab and provide the run ID, approximate time, a safe public input, expected behavior and actual result. Include the mode or page budget when relevant. Never share access tokens, personal cookies or proxy credentials.
Use public data responsibly and follow applicable privacy, copyright, contractual and platform requirements before storing, analyzing or redistributing collected information.