Skip to content

Alt om WordPress, webutvikling — og mer til

🔍 Søke etter videoer på YouTube med Data API v3: en komplett guide

🔍 Søke etter videoer på YouTube med Data API v3: en komplett guide

Nettstedet ditt trenger en videostrøm fra YouTube, men det finnes ingen ferdig plugin for oppgaven, og du ser allerede for deg en uke med krangling med OAuth, tokens og klønete biblioteker. YouTube Data API v3 håndterer denne jobben på omtrent en time. Ingen OAuth, ingen brukertokens, ingen eksterne avhengigheter. Bare en API-nøkkel og en korrekt sammensatt URL.

Søkeendepunktet returnerer videoer, kanaler og spillelister basert på nøkkelord. Det filtrerer på dato, varighet og kanal. Det sorterer etter relevans eller antall visninger. I praksis dekker dette de fleste scenarioer, fra en spesifikk kanals videostrøm til en «wordpress tutorial»-samling fra den siste måneden.

Nedenfor følger en trinnvis gjennomgang med eksempler på direktesendte forespørsler og PHP-kode. Når du er ferdig, vil du ha en fungerende søkemodul: strukturert JSON inn, videogalleri ut, null tredjepartsbiblioteker.

💡 Rask oversikt:

  • Opprett et prosjekt i Google Cloud-konsollen, aktiver YouTube Data API v3, og skaff en API-nøkkel.
  • Bygg URL-en for søkeforespørselen: endepunkt /youtube/v3/search, obligatoriske parametere part=snippet, key og q (siden juni 2025 er q obligatorisk; uten den returnerer API-et en tom matrise).
  • Legg til filtre: type (video/channel/playlist), channelId, publishedAfter/publishedBefore, maxResults, order, videoDuration, videoEmbeddable.
  • Utfør forespørselen via cURL i PHP, tolk JSON-svaret, vis resultater, og sett opp mellomlagring via WordPress-transients.

Trinn 1: Skaffe API-nøkkelen

Uten nøkkel går ingen API-forespørsel ut. Nøkkelen er knyttet til et prosjekt i Google Cloud-konsollen og identifiserer applikasjonen din; det kreves ikke noe mer komplisert enn å logge på en Google-konto.

Dette gjør du:

  • Åpne Google Cloud-konsollen og opprett et nytt prosjekt eller velg et eksisterende.
  • Gå til API-er og tjenester → Bibliotek, søk etter «YouTube Data API v3», og klikk Aktiver.
  • Åpne API-er og tjenester → Legitimasjon, klikk Opprett legitimasjon → API-nøkkel.
  • Kopier nøkkelen. Sett umiddelbart en begrensning: Begrens nøkkel → YouTube Data API v3, slik at nøkkelen ikke kan brukes til andre Google-tjenester.

Nøkkelen ser ut som en streng som AIzaSyD-... og sendes med i hver forespørsel via parameteren key. For offentlig videosøk er dette nok; OAuth er ikke nødvendig. Men hvis du planlegger forespørsler på vegne av en bruker (videoopplasting, spillelisteadministrasjon), trenger du OAuth 2.0.

Rask test: send en GET-forespørsel til search-endepunktet med et vilkårlig søkeord. Hvis du mottar JSON med en items-matrise, fungerer nøkkelen.

Trinn 2: URL for søkeforespørsel og obligatoriske parametere

Endepunkt for søk:

1GET https://www.googleapis.com/youtube/v3/search

To parametere er alltid obligatoriske:

Parameter

Formål

part

Hvilke ressursegenskaper som skal inkluderes i svaret. For søk trenger du snippet. Snippet inneholder title, description, thumbnails og channelTitle.

key

Din API-nøkkel.

q

Søkeforespørselen. Godtar fritekst, akkurat som søkefeltet på youtube.com.

Parameteren q godtar fritekst, akkurat som søkefeltet på youtube.com. Du kan sende flere ord atskilt med mellomrom eller plusstegn: q=wordpress+speed+optimization. Store og små bokstaver har ikke noe å si.

Minimal fungerende forespørsel:

1https://www.googleapis.com/youtube/v3/search?part=snippet&q=wordpress&key=YOUR_KEY

Den vil returnere 5 resultater (standardverdien), som er det API-et returnerer når maxResults ikke overstyres.

Parameteren type avgrenser ressurstypen det søkes etter:

  • video, bare videoer;
  • channel, bare kanaler;
  • playlist, bare spillelister.

Du kan liste flere verdier atskilt med komma: type=video,channel. Hvis den utelates, søker API-et i alt. De resterende parameterne er valgfrie, men de forvandler et rått søk til et presist verktøy.

Trinn 3: Søke etter videoer med nøkkelord

Et klassisk scenario: en bruker skriver inn en søkefrase på nettstedet ditt, du sender den til YouTube API-et og viser et utvalg videoer.

Eksempelforespørsel for å søke etter videoer med ordet «swimming»:

1https://www.googleapis.com/youtube/v3/search?part=snippet&q=swimming&type=video&key=YOUR_KEY

Svaret kommer som JSON. Inne i items[] ligger en matrise med funnede ressurser. For hver video har du:

  • id.videoId, den unike identifikatoren (settes inn i https://www.youtube.com/watch?v=...);
  • snippet.title, videotittelen;
  • snippet.description, beskrivelsen;
  • snippet.thumbnails, forhåndsvisninger i flere oppløsninger (default, medium, high);
  • snippet.channelTitle, kanalnavnet.

I PHP er den enkleste måten å hente svaret på via file_get_contents. Her er minimal prosesseringskode:

1$apiKey = 'YOUR_KEY';
2$query = 'swimming';
3$url = "https://www.googleapis.com/youtube/v3/search?part=snippet&q={$query}&type=video&key={$apiKey}";
4
5$response = file_get_contents($url);
6$data = json_decode($response, true);
7
8foreach ($data['items'] as $item) {
9 echo '<h3>' . htmlspecialchars($item['snippet']['title']) . '</h3>';
10 echo '<p>' . htmlspecialchars($item['snippet']['description']) . '</p>';
11 echo '<img src="' . $item['snippet']['thumbnails']['medium']['url'] . '" alt="">';
12 echo '<a href="https://www.youtube.com/watch?v=' . $item['id']['videoId'] . '">Watch</a>';
13}

file_get_contents er greit for tester og små prosjekter. I produksjon bør du bruke cURL: det gir deg kontroll over tidsavbrudd, headere og feilhåndtering. Og ja, hvis allow_url_fopen er deaktivert på din hosting, vil ikke file_get_contents fungere for eksterne URL-er. I så fall er cURL eneste alternativ.

Trinn 4: Hente videoer fra en spesifikk kanal

For å samle alle videoer fra en kanal, send med parameteren channelId. Å finne kanalidentifikatoren er enkelt: åpne kanalsiden på YouTube og kopier verdien etter /channel/ fra adressefeltet (for eksempel UC3VyA8KN_VgCF93EurnAQXw).

Forespørsel:

1https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UC3VyA8KN_VgCF93EurnAQXw&type=video&order=date&key=YOUR_KEY

Parameteren order=date sorterer etter publiseringsdato, nyeste først. Uten den returnerer API-et de mest relevante resultatene, men for en kanalstrøm gir kronologisk rekkefølge mer mening.

Samme forespørsel i PHP med cURL og grunnleggende feilhåndtering:

1$apiKey = 'YOUR_KEY';
2$channelId = 'UC3VyA8KN_VgCF93EurnAQXw';
3$url = "https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={$channelId}&type=video&order=date&key={$apiKey}";
4
5$ch = curl_init();
6curl_setopt_array($ch, [
7 CURLOPT_URL => $url,
8 CURLOPT_RETURNTRANSFER => true,
9 CURLOPT_TIMEOUT => 15,
10 CURLOPT_SSL_VERIFYPEER => true,
11]);
12
13$response = curl_exec($ch);
14$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
15curl_close($ch);
16
17if ($httpCode !== 200) {
18 echo 'Request error. Code: ' . $httpCode;
19 exit;
20}
21
22$data = json_decode($response, true);
23
24foreach ($data['items'] as $item) {
25 printf(
26 '<div><a href="https://www.youtube.com/watch?v=%s">%s</a></div>',
27 $item['id']['videoId'],
28 htmlspecialchars($item['snippet']['title'])
29 );
30}

En kanal kan ha hundrevis av videoer, men en enkelt forespørsel returnerer ikke mer enn 50. For å hente alt, bruk feltet pageToken fra API-svaret: send verdien i neste forespørsel som pageToken=<token>. Gjenta til nextPageToken er tom.

Trinn 5: Begrensninger, sortering og kvoter

På et ekte nettsted trenger du sjelden «alle videoer for et søk». Oftere ønsker du topp 10 fra den siste måneden eller et utvalg som ekskluderer Shorts. For dette tilbyr API-et fem finjusteringsparametere.

maxResults: hvor mange elementer som skal returneres. Gyldige verdier: 1 til 50. Standard er 5. For et galleri eller en strøm, sett 20-30, men ha kvoter i tankene.

order: sorteringsfelt:

Verdi

Hva den gjør

relevance

Etter relevans for søket (standard)

date

Nyeste først

rating

Etter vurdering (likes/dislikes)

viewCount

Etter antall visninger

title

Alfabetisk etter tittel

publishedAfter** / **publishedBefore: filtrer etter publiseringsdato. Format: ISO 8601 (RFC 3339). Eksempel: publishedAfter=2026-01-01T00:00:00Z. Kutter bort arkiverte videoer når du bare trenger ferskt innhold.

videoDuration: filtrer etter lengde:

  • short, under 4 minutter;
  • medium, fra 4 til 20 minutter;
  • long, over 20 minutter;
  • ikke spesifisert, alle.

videoEmbeddable med verdien true velger bare videoer som er tillatt for innbygging på tredjeparts nettsteder. For et nettsted som bygger inn YouTube-spilleren, er dette en obligatorisk parameter.

Kombinert forespørsel: 10 innbyggbare videoer om WordPress, ikke eldre enn 2026, lengre enn 4 minutter, sortert etter antall visninger:

1https://www.googleapis.com/youtube/v3/search?part=snippet&q=wordpress+tutorial&type=video&videoEmbeddable=true&videoDuration=medium&publishedAfter=2026-01-01T00:00:00Z&maxResults=10&order=viewCount&key=YOUR_KEY

Kvoter: hvordan unngå en blank skjerm

Hvert search.list-kall koster 100 enheter av den daglige kvoten din. Som standard får et Google Cloud-prosjekt 10 000 enheter per dag gratis, omtrent 100 søkekall. For et nettsted med mer enn hundre besøkende per dag er ikke det nok.

Løsningen er å mellomlagre API-svar. I WordPress fungerer transients perfekt for dette:

1$cache_key = 'yt_search_' . md5($query);
2$videos = get_transient($cache_key);
3
4if ($videos === false) {
5 $response = wp_remote_get($url);
6 $body = json_decode(wp_remote_retrieve_body($response), true);
7 $videos = $body['items'] ?? [];
8
9 set_transient($cache_key, $videos, 6 * HOUR_IN_SECONDS);
10}
11
12// Display $videos in a gallery...

En transient på seks timer betyr maksimalt 4 API-forespørsler per dag for en enkelt søkefrase. Selv med ti forskjellige søk på tvers av sidene på nettstedet, holder du deg under 40 kall, mindre enn halvparten av den daglige kvoten. Hvis du trenger mer, be om en kvoteøkning via Google Cloud-konsollen: Kvoter → YouTube Data API v3 → Rediger.

Det levende eksempelet over viser hvordan du bygger et kanalvideogalleri via Data API v3 i PHP på 15 minutter.

⁉️🤔 Ofte stilte spørsmål

Trengs OAuth for å søke etter videoer gjennom YouTube API-et?

Nei. For søkeforespørsler til /youtube/v3/search er en API-nøkkel nok. OAuth kreves bare for operasjoner på brukernivå: opplasting av videoer, administrasjon av spillelister, abonnementer. En API-nøkkel får du i Google Cloud-konsollen på et par minutter og kan brukes umiddelbart.

Hvor mange forespørsler per dag kan gjøres gratis?

Hvert Google Cloud-prosjekt får 10 000 kvoteenheter per dag gratis. Ett search.list-kall koster 100 enheter, altså omtrent 100 søkeforespørsler per dag. Med mellomlagring via WordPress-transients er dette nok for et gjennomsnittlig nettsted. Hvis du trenger mer, be om en kvoteøkning via Google Cloud-konsollen (Kvoter-delen).

Hvordan får jeg mer enn 50 resultater fra et enkelt søk?

Via paginering. I JSON-svaret returnerer API-et et nextPageToken-felt. Send verdien som parameteren pageToken i neste forespørsel for å få neste side. Gjenta til nextPageToken er tom. En full gjennomgang av en kanal med 500 videoer tar 10 forespørsler og 1 000 kvoteenheter.

Kan jeg søke etter videoer på andre språk enn engelsk?

Ja. Parameteren q godtar alle språk, inkludert russisk. YouTubes søkealgoritme bestemmer språkrelevans automatisk. For å tvinge en innsnevring, legg til parameteren relevanceLanguage=ru; resultatene vil bli rangert til fordel for russiskspråklig innhold.

Hvorfor returnerer API-et en tom matrise selv om forespørselen er korrekt?

Den vanligste årsaken: publishedAfter er satt til en fremtidig dato eller til dagens dato med et eksakt klokkeslett. Bruk starten av dagen: T00:00:00Z. Den andre årsaken: en kombinasjon av filtre som ekskluderer alle resultater. For eksempel kan videoDuration=long og videoEmbeddable=true sammen med channelId til en liten kanal gi null treff. Forenkle forespørselen ned til part=snippet&q=...&key=... og legg til filtre ett om gangen, mens du sjekker resultatene ved hvert trinn.

Bygge søk på en time: hvilke verktøy passer til hvilken oppgave

Valget av verktøy avhenger av nøyaktig hva du bygger. Hvis du trenger et enkelt videogalleri for en kanal på et småbedriftsnettsted, grip en ferdig PHP-wrapper som madcoda/php-youtube-api: en Composer-pakke, tre linjer kode, resultat på fem minutter. Hvis du bygger et tilpasset søk med filtre, mellomlagring og paginering, skriv din egen handler med cURL pluss WordPress-transients. For et nettsted med høy trafikk og titusenvis av besøkende, legg til et Redis-mellomlagringslag oppå transients og sett opp bakgrunnssynkronisering via WP-Cron; da laster sidene på millisekunder, og API-kvoter brukes bare på ugyldiggjøring av mellomlager.

Du har allerede API-nøkkelen din. Mellomlagring er konfigurert. Alt som gjenstår er å sette sammen URL-en for oppgaven din og skrive utdatasløyfen. Resultatet er en levende videostrøm som ikke er avhengig av tredjepartstjenester og ikke treffer kvotegrensene.