Waarom YouTube scrapen niet meer werkt (en wat je eraan kunt doen)

Waarom YouTube scrapen niet meer werkt (en wat je eraan kunt doen)

Jul 10, 2026 web scraping youtube api dynamic content developer tools python

Waarom "Bron bekijken" niet werkt bij moderne websites

Stel je voor: je klikt met de rechtermuisknop op een YouTube-video, kiest "Paginabron weergeven", en verwacht netjes de videotitel, beschrijving en alle andere informatie te zien. In plaats daarvan krijg je een muur van geminificeerde JavaScript-code waar geen enkele videotitel tussen staat.

Dit is geen foutje—het is volkomen begrijpelijk als je eenmaal doorhebt hoe zulke websites werken.

Moderne apps werken anders

YouTube, Twitter en Netflix maken gebruik van Single Page Applications (SPA). In plaats dat de server kant-en-klare HTML terugstuurt, krijg je een kaal HTML-skeletje en een flinke JavaScript-bundel. Die JavaScript draait vervolgens in je browser en haalt de échte content op een later moment binnen.

Het gevolg? Als je de bron bekijkt, zie je het recept—niet de taart.

Waarom platforms dit doen

YouTube's frontend is gebouwd op Polymer (een framework van Google) en praat via APIs met de achterliggende diensten. Deze aanpak heeft flinke voordelen:

  • Snellere laadtijden - De basis verschijnt direct, content volgt daarna
  • Efficiënter cachen - De JavaScript-bundel verandert minder vaak dan content
  • Makkelijker schalen - Frontend en backend kunnen apart van elkaar groeien
  • Personaliseren - Content kan per gebruiker worden aangepast zonder de pagina te verversen

Voor ontwikkelaars die data willen ophalen? Niet zo fijn.

Zo pak je het wél aan

Weg met het scrapen, hier zijn de échte oplossingen:

1. Officiële APIs

YouTube biedt de YouTube Data API v3 voor gestructureerde toegang tot:

  • Videometadata (titel, beschrijving, thumbnails)
  • Kanaalinformatie
  • Zoekresultaten
  • Afspeellijsten
  • Statistieken (views, likes, reacties)

Je hebt een Google-account en API-sleutel nodig uit de Google Cloud Console, maar de quota-limits zijn ruim genoeg voor de meeste persoonlijke en zelfs kleinere commerciële projecten.

import requests

API_KEY = "jouw_api_sleutel_hier"
VIDEO_ID = "zdJ9Tbm8ALg"

url = f"https://www.googleapis.com/youtube/v3/videos"
params = {
    "part": "snippet,statistics",
    "id": VIDEO_ID,
    "key": API_KEY
}

response = requests.get(url, params=params)
data = response.json()

titel = data["items"][0]["snippet"]["title"]
views = data["items"][0]["statistics"]["viewCount"]
print(f"'{titel}' heeft {views} views")

2. Handige libraries

Te complex allemaal? Projecten als pytube (voor video's downloaden) en youtube-transcript-api (voor ondertitels) bestaan precies omdat ontwikkelaars makkelijkere toegang nodig hebben. Deze libraries verstoppen veel ingewikkelde details achter de schermen.

3. RSS-feeds ( serieus! )

YouTube ondersteunt nog steeds RSS-feeds per kanaal—de oude vertrouwde manier om content te volgen zonder API. Niet alle metadata is beschikbaar, maar voor basis monitoring werkt het verrassend goed.

Wanneer scrapen wél nodig is

Soms geeft de API niet wat je nodig hebt, of zijn de rate limits te beperkend. In die gevallen kun je échte pagina's renderen.

De moderne oplossing is een headless browser—een browser zonder venster die JavaScript kan uitvoeren en de volledig gerenderde HTML teruggeeft.

Playwright en Puppeteer zijn de standaardkeuzes:

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch();
  const page = await browser.newPage();
  
  await page.goto('https://www.youtube.com/watch?v=zdJ9Tbm8ALg');
  
  // Wacht tot de content daadwerkelijk is geladen
  await page.waitForSelector('h1.ytd-video-primary-info-renderer');
  
  const titel = await page.textContent('h1.ytd-video-primary-info-renderer');
  console.log('Video titel:', titel);
  
  await browser.close();
})();

Dit werkt, maar er zijn flinke nadelen:

  • Het is trager dan API-aanroepen
  • Je kunt anti-bot-bescherming tegenkomen
  • Je bent afhankelijk van hoe YouTube zijn frontend inricht
  • Het kost meer resources

De conclusie

De volgende keer dat je "Bron bekijken" gebruikt op een moderne webapp en alleen maar onleesbare code ziet: de content wáár, die wordt alleen dynamisch geladen door JavaScript. Platforms als YouTube hebben flink geïnvesteerd in hun architectuur—en daar zijn goede redenen voor.

Als ontwikkelaars hoeven we deze systemen niet te bestrijden, maar ermee te werken. Gebruik APIs waar mogelijk, weet wanneer scrapen zinvol is, en respecteer altijd de rate limits en gebruiksvoorwaarden. Het web is een stuk samenwerkender dan het van buitenaf misschien lijkt.

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB HU IT FR ES DE DA ZH-HANS EN