YouTube Sponsor Segment Detector avatar

YouTube Sponsor Segment Detector

Pricing

from $0.99 / 1,000 results

Go to Apify Store
YouTube Sponsor Segment Detector

YouTube Sponsor Segment Detector

Detect sponsor segments, promo codes, and brand deals in any YouTube video. Returns exact ad timestamps with community vote scores, plus discount codes and percentages pulled from the description, and channel, views, and publish date. No login.

Pricing

from $0.99 / 1,000 results

Rating

0.0

(0)

Developer

Farhan Febrian Nauval

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

Detect sponsor segments, promo codes, and brand deals in any YouTube video. For each video you get the exact start and end time of every paid read and self-promotion, with community vote scores, plus the discount codes, percentages, and sponsor links pulled straight from the description — all in clean structured JSON.

Why use this actor

  • No account, no login, no API key required — just paste video URLs or a channel and hit Run.
  • Exact ad timestamps — know precisely where each sponsor read starts and ends (down to the second), so you can measure ad load, skip past it, or audit brand placements.
  • Promo codes and discounts, extracted for you — the description is scanned for coupon codes (e.g. LTT), percentage discounts (e.g. 15% off), and every sponsor link with its brand domain.
  • Community-verified quality — each segment carries an up/down vote score and a "locked" flag so you can trust the well-reviewed ones and filter out noise.
  • Analyze one video, a list, or a whole channel — point it at a channel and it pulls the most recent uploads automatically.
  • Stable JSON output suitable for pipelines, spreadsheets, and databases — every row carries _input, _source, and _scrapedAt fields so you can join results back to your input.
  • Automatic retries; export to JSON, CSV, or Excel.

How it works

  1. You provide a list of YouTube videos (IDs or URLs) and/or a channel, and choose which segment types to detect (sponsor, self-promotion, intro, outro, and more).
  2. For each video the actor looks up the known ad and promotional segments contributed by the viewer community, then reads the video's public details — title, channel, view count, publish date, and description.
  3. The description is scanned for promo codes, discount percentages, and sponsor links.
  4. Optionally, it can attach the words spoken during each sponsor read (from the video's captions) and a best-guess brand name.
  5. Results stream into your dataset, one clean row per video, ready to download.

You do not need to manage scrapers, browsers, or blocks — it is all handled internally.

Input

{
"videoUrls": [
"https://www.youtube.com/watch?v=S82W3hWDvZA",
"https://www.youtube.com/watch?v=5xN7ndof4Xc"
],
"channelUrl": "",
"maxVideos": 10,
"categories": ["sponsor", "selfpromo"],
"includeTranscriptMatch": false,
"usePrivacyHash": false,
"maxItems": 100,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
FieldTypeDescription
videoUrlsarrayVideos to analyze. Accepts 11-character IDs, watch URLs, youtu.be/... short links, and Shorts URLs.
channelUrlstringOptional. Analyze a channel's most recent uploads. Accepts a handle (@LinusTechTips), channel URL, or channel ID (UC...).
maxVideosintegerWhen a channel is given, how many recent uploads to analyze (default 10).
categoriesarrayWhich segment types to detect: sponsor, selfpromo, interaction, intro, outro, music_offtopic, filler. Default ["sponsor", "selfpromo"].
includeTranscriptMatchbooleanAttach the spoken words for each sponsor / self-promotion segment plus a best-guess brand. Default false.
usePrivacyHashbooleanLook up segments without sending the full video ID. Same results, slightly slower. Default false.
maxItemsintegerMaximum number of videos to output across all inputs (default 100).
proxyConfigurationobjectApify Proxy settings. Residential is recommended.

Output

One row per video. A video with no known segments is still returned (with an empty segments list) so you can see it was checked.

{
"_input": "https://www.youtube.com/watch?v=S82W3hWDvZA",
"_source": "sponsorblock+innertube-ios",
"_scrapedAt": "2026-07-10T19:33:12Z",
"videoId": "S82W3hWDvZA",
"url": "https://www.youtube.com/watch?v=S82W3hWDvZA",
"title": "I Hate These...",
"channelName": "Linus Tech Tips",
"channelId": "UCXuqSBlHAE6Xw-yeJA0Tunw",
"viewCount": "1268127",
"publishDate": "2026-07-06T09:53:00-07:00",
"uploadDate": "2026-07-06T09:53:00-07:00",
"category": "Science & Technology",
"lengthSeconds": "1481",
"segments": [
{
"category": "sponsor",
"actionType": "skip",
"startSec": 133.196,
"endSec": 150.681,
"durationSec": 17.485,
"votes": 17,
"locked": 1,
"UUID": "de0a2ea01dcf3b43ff4ec9fa94d64843959d728c96be0ecfb587060fa784398a7",
"videoDuration": 1480.69
},
{
"category": "intro",
"actionType": "skip",
"startSec": 150.481,
"endSec": 159.765,
"durationSec": 9.284,
"votes": 7,
"locked": 1,
"UUID": "4de1f1defc133c347403e9f238f39bb08d7d13abb402ff7f89ef4f7b55d894007",
"videoDuration": 1480.69
},
"... 12 more"
],
"sponsorCount": 6,
"sponsorSecondsTotal": 101.09,
"description": {
"promoCodes": ["LTT"],
"discountPct": [15],
"sponsorUrls": [
{ "url": "https://saily.com/ltt", "brandHost": "saily.com" },
{ "url": "https://geni.us/1et77", "brandHost": "geni.us" },
"... 15 more"
]
}
}
FieldTypeDescription
videoIdstringThe 11-character YouTube video ID.
urlstringCanonical watch URL.
titlestringVideo title.
channelNamestringChannel / uploader name.
channelIdstringChannel ID (UC...).
viewCountstringView count at the moment of scraping.
publishDate / uploadDatestringPublish and upload dates.
categorystringYouTube category (e.g. "Science & Technology").
lengthSecondsstringVideo length in seconds.
segmentsarrayDetected segments (see below). Empty when the video has none.
sponsorCountintegerNumber of sponsor + self-promotion segments.
sponsorSecondsTotalnumberTotal seconds of sponsor + self-promotion content.
descriptionobjectExtracted promoCodes, discountPct, and sponsorUrls ({url, brandHost}).

Each item in segments:

FieldTypeDescription
categorystringsponsor, selfpromo, intro, outro, filler, etc.
actionTypestringRecommended handling: skip, mute, full, or poi (point of interest).
startSec / endSecnumberSegment start and end, in seconds.
durationSecnumberSegment length in seconds.
votesintegerCommunity vote score (higher = more trusted; negative = disputed).
lockedinteger1 if the segment is locked by a moderator.
UUIDstringStable identifier for the segment.
videoDurationnumberVideo length the segment was recorded against (may be omitted when unknown).
spokenTextstring(Only with includeTranscriptMatch) words spoken during the segment.
matchedBrandstring(Only with includeTranscriptMatch) best-guess brand mentioned.

Notes / limits

  • Coverage. Segment data comes from SponsorBlock, a community project where viewers submit ad and promotional timestamps. Popular creators (tech reviewers, large channels) have excellent coverage; a smaller or very new video may have no segments yet — it is returned with an empty segments list, not an error.
  • Vote scores. Prefer segments with positive votes and locked: 1 for the most reliable results. Negative votes indicate a disputed submission.
  • Promo codes. Codes and discounts are read from the description text; a video whose sponsor mentions the code only out loud (not in the description) will have an empty promoCodes list.
  • Spoken text. includeTranscriptMatch depends on the video having retrievable captions; when captions are unavailable, spokenText is left empty. Residential proxy improves availability.
  • Proxy. Residential proxy is recommended because YouTube rate-limits datacenter networks.

Other actors

ActorWhat it does
YouTube Video Detail ScraperFull metadata for any video.
YouTube Channel ScraperChannel stats: subscribers, video count, verified status.
YouTube Transcripts ScraperFull timed transcript / captions for a video.