Social media · Marketing
YouTube Shorts Sponsorship Signals Scraper
Detect brand deals in any creator's YouTube Shorts — one row per Short with a transparent sponsorship_score from spoken transcript signals ('sponsored by', 'use code'), caption hashtags and brand mentions, plus engagement counters. Influencer-intel data at 1/100th of SaaS pricing.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
Influencer-intel SaaS dashboards charge $200–2 000/mo to tell agencies which creators run paid placements. This Actor surfaces the same signal from public data for a fraction of the cost. For every recent Short on a channel it pulls the title, view count, duration, tags, description, and — crucially — the spoken transcript, then scores how likely the Short is sponsored and lists the exact phrases that fired.
Shorts descriptions are mostly empty, so caption-only scrapers miss most deals. We read what the creator actually *says*, which is where Shorts sponsorships live.
What we handle for you
- 🛡️ Browser fingerprint impersonation —
curl-cffimimics a real Chrome TLS + HTTP/2 handshake, so YouTube sees a browser, not a bot. - 🍪 Consent-gate handling — we send the consent cookie YouTube requires before it will list a channel's Shorts. Skip it and you get zero results; we don't skip it.
- 🗣️ Transcript-first detection — spoken sponsor language is the primary signal, caught even when the description is blank.
- 🌐 Optional proxy rotation via Apify Proxy — datacenter is fine at low volume; residential scales it up.
- 🧱 Graceful degradation — a Short with no captions still emits a row (
has_transcript: false) instead of crashing the run. - 💰 Pay-Per-Event pricing — you only pay for Shorts that land in your dataset.
Use cases
- Influencer-agency intel — see which creators run brand deals and which brands keep coming back.
- Competitive brand monitoring — track where a competitor's products show up across creators' Shorts.
- Sponsorship benchmarking — measure how often a niche's top channels run paid placements.
- Disclosure compliance audits — flag Shorts with spoken sponsorships but no
#addisclosure. - Creator vetting — gauge a channel's commercial density before signing a deal.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
channels | array | yes | One or more YouTube channel handles or URLs. Accepts @mkbhd, mkbhd, or https://youtube.com/@mkbhd — all normalised to @handle. |
maxShortsPerChannel | integer | no | Maximum number of Shorts to inspect per channel. |
language | string | no | Preferred transcript language code (ISO-639-1). Falls back to any available track. |
minSponsorshipScore | number | no | Only emit rows scoring at or above this value. 0 emits every Short; 0.5 keeps only likely-sponsored ones. |
{
"channels": [
"@mkbhd"
],
"maxShortsPerChannel": 20,
"language": "en",
"minSponsorshipScore": 0.0,
"proxyConfiguration": {
"useApifyProxy": false
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
channelvideo_idurltitleview_countlength_secondshas_transcripthashtagsmentionsdetected_brandssponsorship_signalssponsorship_scoreis_likely_sponsored
{
"channel": "@mkbhd",
"video_id": "n3V3LZh_r40",
"url": "https://www.youtube.com/shorts/n3V3LZh_r40",
"title": "My everyday carry, sponsored",
"published_text": null,
"view_count": 2805352,
"length_seconds": 58,
"description": "#ad",
"tags": [
"tech",
"edc"
],
"has_transcript": true,
"transcript_chars": 712,
"hashtags": [
"#ad"
],
"mentions": [],
"detected_brands": [
"Surfshark",
"MARQUES"
],
"sponsorship_signals": [
"this video is sponsored",
"use code",
"#ad"
],
"sponsorship_score": 1.0,
"is_likely_sponsored": true,
"scraped_at": "2026-06-13T10:00:00+00:00"
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result emitted | $0.0040 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
FAQ
Why transcripts instead of captions/descriptions?
What handle formats are accepted?
@mkbhd, mkbhd, youtube.com/@mkbhd, and full https://…/@mkbhd/shorts URLs all normalise to @mkbhd.Do I need a proxy or API key?
Can I keep only the sponsored Shorts?
minSponsorshipScore to 0.5 and only likely-sponsored Shorts are emitted (and billed).Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors