Skip to content
scrapeatlas.Dashboard

Infer a video's sponsors

Try in Playground

Experimental. Reads the watch page and, when available, the transcript, reports YouTube's paid-promotion disclosure and infers suspected sponsors from sponsorship phrases, promotional description links, promo codes and transcript mentions. Every suspected sponsor carries its evidence and a confidence; this is inference, not a YouTube field.

GET/v1/youtube/video/sponsorsx-api-key
x-api-keystringrequiredheader

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

Query parameters
2
urlstringrequiredquery

YouTube video or Short URL (youtube.com/watch?v=…, youtu.be/…, /shorts/…, /embed/…, /live/…; www, m and music subdomains) or a bare 11-character video ID.

max 2048 chars

Examplehttps://www.youtube.com/watch?v=Vid0000001a
languagestringquery

Language code used to select the transcript track (default en).

Response fields
37
requestIdstring

Operation identifier for correlation.

Upstream HTTP attempts, decoded bytes and duration.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

successboolean

True when usable data was returned; inspect status and coverage.

statusenum

success, partial (coverage.warnings names the omission), failed or challenged.

one of: success, partial

id, url, title, channel {id, url, handle, title, thumbnail} and isPaidPromotion (YouTube's disclosure).

video.idstring

Always included.

video.urlstring

Always included.

absolute HTTPS URL

video.titlestring

Always included.

Always included.

video.channel.idstringnullable

Always included.

video.channel.urlstringnullable

Always included.

video.channel.handlestringnullable

Always included.

video.channel.titlestringnullable

Always included.

video.channel.thumbnailstringnullable

Always included.

video.isPaidPromotionboolean

Always included.

Inferred sponsors: name (the brand named in a sponsorship phrase, else the link's domain label), website (domain or null), confidence (high: sponsorship phrase plus link or several signals; medium: one promotional signal; low: transcript mention only) and evidence [{source: paid_promotion_badge | description | description_link | promo_code | transcript, text}]. Creator-owned hosts (YouTube, social networks, link aggregators, stores) are never sponsors.

up to 20 items

suspectedSponsors.namestring

Always included.

suspectedSponsors.websitestringnullable

Always included.

suspectedSponsors.confidenceenum

Always included.

one of: high, medium, low

Always included.

up to 20 items

suspectedSponsors.evidence.sourceenum

Always included.

one of: paid_promotion_badge, description, description_link, promo_code, transcript

suspectedSponsors.evidence.textstring

Always included.

status found or not_found, methods applied (paid promotion badge, description, description links, transcript when read), transcriptChecked, transcriptAvailable and a fixed note.

sponsorDetection.statusenum

Always included.

one of: found, not_found

sponsorDetection.methodsstring[]

Always included.

up to 10 items

sponsorDetection.transcriptCheckedboolean

Always included.

sponsorDetection.transcriptAvailableboolean

Always included.

sponsorDetection.notestring

Always included.

sourceUrlstring

Public YouTube URL the operation represents (page or API route).

absolute HTTPS URL

fetchedAtstring

UTC retrieval timestamp.

source is public_page. Warning transcript_unavailable when the transcript could not be read (inference then uses the description only).

coverage.sourceenum

Always included.

one of: public_page, public_api

coverage.completeboolean

Always included.

coverage.warningsenum[]

Always included.

up to 8 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
13
HTTPfailure.codeMeaning
400invalid_requestMissing, malformed, duplicate or conflicting parameters, unsupported parameters or an unsafe URL.
400invalid_continuationYouTube rejected the supplied continuation token.
401unauthorizedMissing or invalid worker API key.
403restricted_pageThe channel, video, playlist or post is terminated, private, members-only or otherwise unavailable.
403age_restrictedThe video is age restricted and cannot be read logged out.
404not_foundYouTube reports no channel, video, playlist or post for the identifier.
429upstream_rate_limitedYouTube rate limited the request; no automatic retry.
502upstream_challengedYouTube rejected or challenged the request.
502unsupported_pageThe response lacks the embedded data, the data is malformed, or the resolved identity does not match the request.
502response_too_large payload_too_complexThe response exceeded byte, depth or node limits.
502unsafe_redirect request_limit upstream_errorThe bounded request could not complete.
503busyAll worker slots are in use.
504timeoutThe total retrieval deadline expired.