Cómo recibir datos de los vídeos de YouTube a través de su API y PHP

PHP es una tecnología extremadamente versátil. En mi caso, más allá de usarlo para manejar lógica de negocio o persistir datos, lo he utilizado muchas veces para conectarme a servicios externos y consumir APIs, y una de las más útiles es la YouTube Data API.

En esta guía voy a mostrarte cómo recibir datos de los vídeos de YouTube a través de su API usando PHP, procesarlos y mostrarlos en tu sitio web. Es un enfoque muy común cuando necesitas listar vídeos de un canal, mostrar miniaturas, títulos o incluso reproducirlos embebidos, algo que he implementado especialmente en proyectos de música donde los vídeos se reproducen ocultos dejando solo el audio de fondo.

¿Por qué usar la API oficial de YouTube y no scraping?

Antes de entrar en código, conviene aclarar algo importante.

YouTube ofrece una API pública, legal y documentada para acceder a la información de sus vídeos. Usarla tiene varias ventajas claras:

  • Cumples con las políticas de Google y YouTube
  • Obtienes datos estructurados y actualizados
  • Evitas bloqueos, captchas o cambios en el HTML
  • Tienes control sobre resultados, filtros y paginación

Aunque técnicamente podrías hacer scraping, en mi experiencia no es recomendable cuando existe una API oficial, especialmente para proyectos a largo plazo.

Requisitos previos

Para seguir este tutorial necesitas:

  • PHP 7.x o superior
  • Extensión curl habilitada (opcional, pero recomendable)
  • Un servidor local o hosting
  • Una cuenta de Google

No es necesario usar frameworks; el ejemplo funciona perfectamente en PHP puro, aunque luego puedes adaptarlo fácilmente a Laravel, CodeIgniter o cualquier otro framework.

Cómo obtener tu API Key de YouTube

Este es un paso clave que muchos tutoriales dan por sentado.

  • Crear un proyecto en Google API Console
    • Accede a Google Cloud Console
    • Crea un nuevo proyecto
    • Asigna un nombre identificativo
  • Habilitar YouTube Data API v3
    • Dentro del proyecto:
    • Ve a “APIs y servicios”
    • Busca YouTube Data API v3
    • Haz clic en Habilitar
  • Crear credenciales (API Key)
    • Ve a “Credenciales”
    • Crear credenciales → Clave de API
    • Copia la key generada (la usarás en PHP)

Estructura de una petición a YouTube Data API, clave para realizar las peticiones CURL

Antes que nada debemos entender cómo está compuesta la URL de YouTube que emplearemos desde PHP para realizar las peticiones y esto es el corazón de nuestro experimento o ejemplo que vamos a realizar un poco más adelante; la URL de YouTube para realizar las consultas del detalle de los video de un canal es como la siguiente:

https://www.googleapis.com/youtube/v3/search
https://www.googleapis.com/youtube/v3/search?key=$key&channelId=$channel&part=snippet,id&order=date&maxResults=50

Realizando una acotación vemos que empleamos la web de google Apis también conocida como la Google Developers y no la de YouTube; la web de google Apis provee información sobre otras APIS de Google que puedes consultar.

Parámetros principales

Volviendo a la explicación de la URL mostrada anteriormente, vemos que está compuesta por varios parámetros que por su naturaleza son pasados por HTTP GET:

  • key: tu API Key
  • channelId: Para indicar el id de channel/canal que contiene el o grupo de videos a mostrar en un listado.
  • part: qué datos quieres obtener (snippet, id, etc.)
  • order: El orden de traída de los videos el cual puede ser fecha, rating, alfabéticamente, etc; en el siguiente enlace puede obtener más información al respecto. (date, rating, relevance…)
  • maxResults: Para indicar el resultado máximo de videos esperados cuyo límite es de 50.

Realizar la petición a la API desde PHP

Teniendo lo anterior explicado lo que nos queda por hacer es realmente poco. Ahora solo tenemos que generar la petición y procesarla mediante PHP; para eso empleamos la siguiente función que internamente emplea una petición CURL:

function get_videos() {
    $key = 'TU_API_KEY';
    $channel = 'ID_DEL_CANAL';

    $url = "https://www.googleapis.com/youtube/v3/search?key=$key&channelId=$channel&part=snippet,id&order=date&maxResults=50";

    $json = file_get_contents($url);
    $data = json_decode($json, true);

    return $data;
}

Explicando el código para realizar la consulta CURL a la API de YouTube

Vemos que además del resto de los parámetros especificados anteriormente, existe un parámetro key el cual no es más que el generado en la Consola de desarrolladores de Google cuando creamos el proyecto y habilitamos la API de YouTube; 

El método file_get_contents permite obtener el código fuente (un string) de una página web a través de una URL, en nuestro caso la página web es texto plano en formato JSON el cual decodificamos con el método json_decode y luego podemos procesar e iterar perfectamente.

Entendiendo la respuesta JSON de YouTube

La API devuelve un objeto JSON estructurado. Los campos más importantes están en:

$data['items']

Cada elemento contiene:

  • id.videoId → ID del vídeo
  • snippet.title → título
  • snippet.description → descripción
  • snippet.thumbnails → miniaturas
  • snippet.publishedAt → fecha de publicación

Comprender esta estructura te permite personalizar completamente cómo mostrar los vídeos.

Mostrar el detalle de los videos YouTube con PHP y HTML

Si queremos pintar los videos en nuestro HTML que vendría siendo lo básico que queremos hacer, mostrar un listado de los videos obtenidos, podemos hacerlo con el siguiente código PHP:

<?php foreach ($videos['items'] as $video): ?>
    <?php if (isset($video['id']['videoId'])): ?>
        <iframe 
            width="560" 
            height="315"
            src="https://www.youtube.com/embed/<?php echo $video['id']['videoId']; ?>"
            frameborder="0"
            allowfullscreen>
        </iframe>
    <?php endif; ?>
<?php endforeach; ?>

Obtenemos un listado de videos como el de la siguiente imagen:

listado videos youtube

Manejo de errores y límites de cuota

La API de YouTube funciona con un sistema de cuotas. Algunos errores comunes son:

  • 403: cuota excedida
  • 400: parámetro incorrecto
  • 404: canal inexistente

Recomendaciones prácticas:

  • Implementar caché (archivo o base de datos)
  • No llamar a la API en cada carga de página
  • Registrar errores para depuración

Buenas prácticas al usar YouTube Data API con PHP

A lo largo del tiempo, estas son las prácticas que mejor resultado me han dado:

  • Separar la lógica de API en una función o clase
  • Cachear resultados al menos 10–30 minutos
  • Validar siempre videoId
  • No asumir que todos los items son vídeos (hay playlists)

Este tipo de enfoque facilita llevar el código a frameworks PHP sin problemas.

 

FAQs – Preguntas frecuentes

  • ¿Puedo obtener más de 50 vídeos?
    • Sí, usando el parámetro pageToken para paginación.
  • ¿Necesito OAuth2 para datos públicos?
    • No. Para vídeos públicos basta con una API Key.
  • ¿Puedo obtener solo títulos y miniaturas?
    • Sí, leyendo únicamente snippet.title y snippet.thumbnails.

Conclusiones

Y esto es todo, con dos sencillos pasos podemos obtener los videos de YouTube, que lo hacemos realizando una consulta CURL a la API de YouTube que es perfectamente pública y legal.

YouTube nos ofrece esta herramienta para potenciar nuestros sitios y de esta manera que sean dinámicos, mostrando contenido en tiempo real y perfectamente actualizados, y el siguiente y último de los pasos, es que ya que tenemos nuestro vídeo, pues simplemente los retornamos y los pintamos en un listado.

Este es un script que fácilmente podemos llevar a los framework PHP mediante un helper o una librería y de esta forma traer los vídeos de un canal de YouTube.

Recibir datos de los vídeos de YouTube a través de su API usando PHP es un proceso sencillo, potente y totalmente legal. Con solo una API Key y una petición bien construida puedes listar vídeos, mostrar información detallada y mantener tu sitio siempre actualizado.

Es un script que puedes reutilizar, extender y adaptar fácilmente, tanto en proyectos pequeños como en aplicaciones más grandes.

Acepto recibir anuncios de interes sobre este Blog.

Veremos cómo obtener el detalle de los vídeos de un canal con PHP empleando las peticiones CURL de PHP y a posterior procesarlos y realizar alguna acción como por ejemplo mostrarlos en un listados.

| 👤 Andrés Cruz

🇺🇸 In english