Primeros pasos con la API de SoundCloud con JavaScript usando el Widget oficial

- 👤 Andrés Cruz

🇺🇸 In english

Primeros pasos con la API de SoundCloud con JavaScript usando el Widget oficial

Soundcloud es una plataforma de distribución de música de manera legal que ha cobrado bastante fuerza en los últimos años; Soundcloud cuenta con muchas características que parecen más de redes sociales como sección de comentarios, usuarios, favoritos, compartir, etc; ademas dispone de una API que podemos integrar en nuestras aplicaciones; puedes consultar el siguiente enlace Soundcloud Widget API y ver todo lo que ofrece.

Lo interesante para nosotros como desarrolladores es que SoundCloud ofrece una API que podemos integrar fácilmente en nuestras aplicaciones web. En mi caso, cuando empecé a trabajar con ella, lo que más me llamó la atención fue la posibilidad de usar su enorme biblioteca musical sin preocuparme por temas legales, algo que suele ser un quebradero de cabeza cuando trabajamos con música en proyectos web.

En este artículo vamos a trabajar con la API que está provista para JavaScript, lo más interesante o importante de esta API es emplear su inmensa biblioteca de canciones en nuestra aplicación sin necesidad de preocuparnos por temas legales a través de widgets, que es la opción más práctica si quieres reproducir música sin lidiar con OAuth, tokens o backends complejos.

Qué es SoundCloud y por qué usar su API en JavaScript

La API de SoundCloud permite a los desarrolladores acceder a pistas, usuarios, playlists y reproductores oficiales desde aplicaciones externas. Esto abre la puerta a:

  • Crear reproductores personalizados
  • Mostrar canciones o listas dinámicamente
  • Reaccionar a eventos de reproducción
  • Integrar música de forma legal en una web

SoundCloud es especialmente útil cuando el objetivo es mostrar y reproducir música directamente en el frontend, sin necesidad de gestionar sistemas de autenticación complejos.

API de SoundCloud vs Widget API: diferencias clave

Aquí es donde mucha gente se lía (y Reddit está lleno de ejemplos ).

API / SDK de SoundCloud

  • Requiere client_id
  • En muchos casos necesita OAuth
  • Permite acceder a datos detallados (usuarios, álbumes, tracks)
  • Puede devolver errores 401 / 403 si no se configura bien

Widget API de SoundCloud (la que usamos aquí)

  • No necesita OAuth
  • Funciona mediante un iframe oficial
  • Reproducción 100% legal
  • Controlable desde JavaScript con eventos

En mi caso, opté por el Widget API porque quería integrar música rápidamente en una web sin logins ni tokens, y fue la decisión correcta.

Cómo integrar SoundCloud en una web con JavaScript

Lo primero que debemos hacer es incluir la API JavaScript de Soundcloud:

<script src="https://w.soundcloud.com/player/api.js"></script>

Crear el iframe del reproductor

El reproductor de SoundCloud funciona sobre un iframe. Podemos crearlo dinámicamente o definirlo en el HTML:

<iframe class="iframe" width="100%" height="166" scrolling="no" frameborder="no"></iframe>

Ahora podemos emplear el método SC.Widget provisto por la API de JavaScript para integrar los widgets de la siguiente manera:

var widgetUrl = "http://api.soundcloud.com/users/1539950/favorites";
var iframe = document.querySelector('.iframe');
iframe.src = location.protocol + "//w.soundcloud.com/player/?url=" + widgetUrl;
var widget = SC.Widget(iframe);

Inicializar SC.Widget correctamente

Una vez tenemos el iframe, inicializamos el widget:

var widget = SC.Widget(iframe);

A partir de aquí, podemos controlar la reproducción y escuchar eventos desde JavaScript.

Controlar el reproductor de SoundCloud desde JavaScript + Ejemplos

La API de Soundcloud en JavaScript cuenta con una gran cantidad de eventos como podemos ver a continuación:

  • SC.Widget.Events.LOAD_PROGRESS Se ejecuta periódicamente mientras la canción está siendo cargada.
  • SC.Widget.Events.PLAY_PROGRESS Se ejecuta periódicamente mientras la canción está siendo reproducida.
  • SC.Widget.Events.PLAY Se ejecuta cuando la canción se reproduce.
  • SC.Widget.Events.PAUSE Se ejecuta cuando la canción se coloca en pausa.
  • SC.Widget.Events.FINISH Se ejecuta cuando la canción finaliza su reproducción.
  • SC.Widget.Events.READY Suando el widget está listo

A mi criterio el más interesante o útil de todos podría ser el que determina cuando finalizó la canción, ya que a raíz de esto podemos establecer una serie de acciones como cargar otras canciones, mostrar un anuncio publicitario etc:

widget.bind(SC.Widget.Events.FINISH, function (eventData) {    // hacer algo });

Detectar cuándo termina una canción (FINISH)

Este es el evento más útil. Cuando descubrí que podía detectar el final de una canción, pude automatizar varias acciones interesantes.

widget.bind(SC.Widget.Events.FINISH, function (eventData) {
   // hacer algo cuando termina la canción
});


Gracias a esto puedes:

  • Cargar otra canción
  • Simular una playlist
  • Mostrar anuncios
  • Lanzar animaciones o cambios en la UI

Detectando el estado Ready (listo) del reproducción de la música del widget

También Si nos interesa iniciar la reproducción apenas esté cargado y listo nuestro widget podemos emplear el siguiente código JavaScript:

 widget.bind(SC.Widget.Events.READY, function (eventData) {
    widget.play();
});

Esto es ideal para demos, landings o reproductores automáticos.

Actualizando las canciones del widget con la función load en JavaScript

Ahora, si deseamos actualizar las canción al finalizar la canción como si de una lista de reproducción se tratase:

widget.load($($('.lista_canciones li')[index]).attr("data-href"), {auto_play: true});

Y lo incluimos dentro de nuestro evento de finalizar

widget.bind(SC.Widget.Events.FINISH, function (eventData) {
    // mas codigo                

    widget.load($($('.lista_canciones li')[index]).attr("data-href"), {auto_play: true});
});

Con esto creamos el widget es nuestra aplicación con la URL proporcionada.

Crear una playlist dinámica con SoundCloud

Una vez que tienes controlados los eventos, el siguiente paso lógico es actualizar las canciones dinámicamente.

Cargar nuevas canciones al finalizar la reproducción

SoundCloud ofrece el método load, que permite cargar una nueva pista en el mismo widget:

widget.load(
 $($('.lista_canciones li')[index]).attr("data-href"),
 { auto_play: true }
);

Si lo combinamos con el evento FINISH, obtenemos un comportamiento tipo playlist:

widget.bind(SC.Widget.Events.FINISH, function () {
   widget.load(
     $($('.lista_canciones li')[index]).attr("data-href"),
     { auto_play: true }
   );
});

Esto hace que integrar contenido sea extremadamente sencillo.

Uso legal de música de SoundCloud en aplicaciones web

Uno de los mayores miedos al trabajar con música es el aspecto legal. Aquí SoundCloud lo pone fácil:

  • Usas el reproductor oficial
  • Respetas las condiciones de la plataforma
  • No descargas ni redistribuyes el audio

Problemas comunes con la API de SoundCloud y cómo evitarlos

Basándome en dudas reales de Reddit:

  • Errores 401 / 403 → suelen venir del uso incorrecto del SDK o falta de OAuth
  • “No quiero usar login” → usa el Widget API
  • Poca información de artistas → el Widget es para reproducción, no para scraping de datos
  • La API ha cambiado → muchos tutoriales antiguos están desactualizados

Si tu objetivo es reproducir música, no compliques el proyecto.

Uso de las URLs en Soundcloud

Como vemos empleamos una URL, la cual coincide con la URL de la canción a mostrar o grupo de canciones, en nuestro ejemplo especificamos las canciones favoritas de un usuario:

  • http://api.soundcloud.com/users/1539950/favorites
  • Pero también podemos especificar canciones individuales:
  • https://soundcloud.com/davidguetta/david-guetta-ft-sam-martin-dangerous-robin-schulz-remix-radio-edit


Canción individual:

  • https://soundcloud.com/davidguetta/david-guetta-ft-sam-martin-dangerous-robin-schulz-remix-radio-edit

Con todo lo que hemos visto hasta el momento es más que suficiente para crear nuestro propio reproductor básico, cargando/actualizando canciones bajo demanda o cada vez que finalice una canción, además de una serie de eventos que nos permitirán personalizar más la interacción con el usuario.

FAQs

  • ¿La API de SoundCloud necesita OAuth?
    • No siempre. El Widget API no lo necesita.
  • ¿Se puede usar SoundCloud sin login?
    • Sí, usando el reproductor oficial embebido.
  • ¿Es legal reproducir música de SoundCloud en mi web?
    • Sí, siempre que uses sus widgets oficiales.
  • ¿Puedo detectar cuándo termina una canción?
    • Sí, con el evento SC.Widget.Events.FINISH.

Conclusión

Con la API de SoundCloud en JavaScript, y especialmente usando el Widget oficial, puedes crear un reproductor musical completo, legal y funcional con muy poco código.

En mi experiencia, combinando:

  • SC.Widget
  • Eventos como READY y FINISH
  • Carga dinámica de canciones

Es más que suficiente para montar un reproductor personalizado sin backend, sin OAuth y sin dolores de cabeza.

Acepto recibir anuncios de interes sobre este Blog.

Guía práctica de la API de SoundCloud con JavaScript. Usa el Widget oficial, evita OAuth y crea un reproductor con eventos, autoplay y playlists.

| 👤 Andrés Cruz

🇺🇸 In english