Skip to content
scrapeatlas.Dashboard

Get a Twitch clip

Try in Playground

Retrieve public Twitch clip and playback metadata. Numeric keys group clip information, related clips and viewer data.

GET/v1/twitch/clipx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
1
urlstringrequiredquery

Required HTTPS clips.twitch.tv/<slug> or twitch.tv/<channel>/clip/<slug>. Tracking queries/fragments are removed; credentials, ports and embedded URLs are rejected.

max 2048 chars

Examplehttps://clips.twitch.tv/SyntheticClip
Response fields
104

Primary GraphQL response at 0.data.clip, including extensions and videoURL.

Always included.

Always included.

0.data.clip.idstring

Public clip ID.

min 1 chars

0.data.clip.slugstring

Clip slug verified against the requested URL.

0.data.clip.urlstring

Always included.

0.data.clip.embedURLstring

Always included.

0.data.clip.titlestring

Always included.

0.data.clip.viewCountinteger

Current source views.

≥ 0

0.data.clip.languagestring

Always included.

0.data.clip.isFeaturedboolean

Always included.

All selected source assets, render states, thumbnail URLs, quality variants and portrait metadata.

up to 20 items

0.data.clip.assets.idstring

Always included.

min 1 chars

0.data.clip.assets.aspectRationumber

Always included.

0.data.clip.assets.typestring

Always included.

0.data.clip.assets.createdAtstring

Always included.

0.data.clip.assets.creationStatestring

Always included.

0.data.clip.assets.curatorobject

Always included.

0.data.clip.assets.thumbnailURLstring

Always included.

0.data.clip.assets.videoQualitiesobject[]

Always included.

up to 20 items

0.data.clip.assets.portraitMetadataJSON

Always included.

0.data.clip.assets.__typenamestring

Always included.

Public clip creator, or null.

0.data.clip.curator.idstring

Always included.

min 1 chars

0.data.clip.curator.loginstring

Always included.

0.data.clip.curator.displayNamestring

Always included.

0.data.clip.curator.__typenamestring

Always included.

0.data.clip.curator.profileImageURLstringnullable

Always included.

Public game metadata, or null.

0.data.clip.game.idstring

Always included.

min 1 chars

0.data.clip.game.slugstring

Always included.

0.data.clip.game.namestring

Always included.

0.data.clip.game.__typenamestring

Always included.

0.data.clip.game.displayNamestring

Always included.

0.data.clip.game.boxArtURLstring

Always included.

Associated broadcast ID and title, or null.

0.data.clip.broadcast.idstring

Always included.

min 1 chars

0.data.clip.broadcast.titlestringnullable

Always included.

0.data.clip.broadcast.__typenamestring

Always included.

Owner profile, partner flag, follower total, stream, last broadcast and logged-out self metadata.

0.data.clip.broadcaster.idstring

Always included.

min 1 chars

0.data.clip.broadcaster.loginstring

Always included.

0.data.clip.broadcaster.displayNamestring

Always included.

0.data.clip.broadcaster.__typenamestring

Always included.

0.data.clip.broadcaster.profileImageURLstringnullable

Always included.

0.data.clip.broadcaster.primaryColorHexstringnullable

Always included.

0.data.clip.broadcaster.isPartnerboolean

Always included.

0.data.clip.broadcaster.followersobject

Always included.

0.data.clip.broadcaster.streamJSON

Always included.

0.data.clip.broadcaster.lastBroadcastJSON

Always included.

0.data.clip.broadcaster.selfJSON

Always included.

0.data.clip.thumbnailURLstring

Always included.

0.data.clip.createdAtstring

Always included.

0.data.clip.isPublishedboolean

Must be true for successful retrieval.

0.data.clip.durationSecondsnumber

Clip duration in seconds.

≥ 0

0.data.clip.champBadgeJSON

Source badge metadata or null.

Expiring public playback signature and JSON value returned by Twitch. They vary by request and are not logged or cached.

0.data.clip.playbackAccessToken.signaturestring

Always included.

min 1 chars

0.data.clip.playbackAccessToken.valuestring

Always included.

min 1 chars

0.data.clip.playbackAccessToken.__typenamestring

Always included.

0.data.clip.videoJSON

Associated video ID/type/title, or null.

0.data.clip.videoOffsetSecondsnumbernullable

Source video offset or null.

Published source media URLs; never downloaded by this worker.

up to 20 items

0.data.clip.videoQualities.sourceURLstring

Always included.

0.data.clip.videoQualities.__typenamestring

Always included.

0.data.clip.isViewerEditRestrictedboolean

Logged-out edit restriction flag. It does not imply that public viewing is restricted.

0.data.clip.suggestedCroppingJSON

Source crop metadata or null.

0.data.clip.__typenamestring

Original GraphQL source type.

0.data.clip.videoURLstring

First video-quality source URL signed with the current public playback signature/token. Expires with that token; request a fresh clip response when needed.

absolute HTTPS URL

Optional.

up to 100 items

0.errors.messagestring

Always included.

Optional.

0.extensions.operationNamestringoptional

Optional.

0.extensions.durationMillisecondsnumberoptional

Optional.

0.extensions.requestIDstringoptional

Optional.

Related-clips GraphQL response. Source errors are retained and produce partial coverage.

1.dataobjectoptional

Optional.

Optional.

up to 100 items

1.errors.messagestring

Always included.

Optional.

1.extensions.operationNamestringoptional

Optional.

1.extensions.durationMillisecondsnumberoptional

Optional.

1.extensions.requestIDstringoptional

Optional.

Logged-out viewer response; data.user is null. No Twitch account session is used.

2.dataobjectoptional

Optional.

Optional.

up to 100 items

2.errors.messagestring

Always included.

Optional.

2.extensions.operationNamestringoptional

Optional.

2.extensions.durationMillisecondsnumberoptional

Optional.

2.extensions.requestIDstringoptional

Optional.

requestIdstring

Operation identifier for correlation.

HTTP attempts initiated by this operation, decoded response bytes and elapsed milliseconds. A shared client bootstrap is counted by its initiating operation.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

successboolean

True when the primary requested data is usable.

statusenum

success, partial, failed or challenged. Inspect coverage on HTTP 200.

one of: success, partial

sourceUrlstring

Canonical public Twitch page URL.

absolute HTTPS URL

fetchedAtstring

UTC retrieval timestamp.

Public GraphQL coverage. Clip auxiliary query errors produce partial with auxiliary_graphql_error; missing required primary fields fail.

coverage.sourcestring

Always included.

coverage.completeboolean

Always included.

coverage.warningsenum[]

Always included.

up to 2 items

HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.

Error codes
12
HTTPfailure.codeMeaning
200partialPrimary clip data is usable but a related-clips or viewer GraphQL query returned source errors.
400invalid_requestMissing or unsafe input, unknown parameters, invalid filter/sort, or duplicate parameters.
401unauthorizedMissing or invalid dedicated worker API key.
403restricted_pageUnpublished clip, denied or expired playback token, or unexpected authenticated viewer.
404not_foundThe requested channel, video or clip is missing, or the route is unknown.
429upstream_rate_limitedTwitch rate limited retrieval.
502upstream_challenged public_client_unavailableTwitch challenged the request or its public client identifier could not be determined.
502upstream_graphql_error unsupported_pagePrimary query failure or incomplete, unexpected or mismatched data.
502response_too_large payload_too_complexByte, depth or JSON node limit exceeded.
502unsafe_redirect request_limit upstream_errorBounded transport could not complete.
503busyAll worker admission slots are occupied.
504timeoutThe total request deadline expired.