YouTube Data API Integration with Website
YouTube Data API v3 enables displaying channel videos on your website, retrieving statistics, and embedding players. Used for corporate websites, blogs, educational platforms.
Retrieving Channel Videos
$apiKey = config('services.youtube.api_key');
$channelId = 'UCxxxxxx';
// Get the uploads playlist ID for the channel
$channelResp = Http::get('https://www.googleapis.com/youtube/v3/channels', [
'part' => 'contentDetails',
'id' => $channelId,
'key' => $apiKey,
])->json();
$uploadsPlaylistId = $channelResp['items'][0]['contentDetails']['relatedPlaylists']['uploads'];
// Get the list of videos
$videosResp = Http::get('https://www.googleapis.com/youtube/v3/playlistItems', [
'part' => 'snippet,contentDetails',
'playlistId' => $uploadsPlaylistId,
'maxResults' => 12,
'key' => $apiKey,
])->json();
$videos = array_map(fn($item) => [
'id' => $item['contentDetails']['videoId'],
'title' => $item['snippet']['title'],
'description' => $item['snippet']['description'],
'thumbnail' => $item['snippet']['thumbnails']['high']['url'],
'published' => $item['snippet']['publishedAt'],
'embed_url' => "https://www.youtube.com/embed/{$item['contentDetails']['videoId']}",
], $videosResp['items']);
Caching
API quota: 10,000 units per day. Video list retrieval costs 1 unit per request. Cache for one hour:
$videos = Cache::remember('youtube_videos', 3600, function () use (...) {
// ... API request
});
Embedding via Facade API
<iframe
src="https://www.youtube-nocookie.com/embed/VIDEO_ID?rel=0&modestbranding=1"
frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
loading="lazy">
</iframe>
youtube-nocookie.com does not set cookies until playback begins — important for GDPR compliance.
Implementation time: 1 business day.







