Tutoriales
SoundCloud profile en Python
Una llamada autenticada a /api/v1/soundcloud/profile?handle=edsheeran, la respuesta que devolvió, y la línea que saca un campo de ella.
Lo que necesitas
Solo biblioteca estándar — urllib y json vienen con Python 3. No hay nada que instalar con pip.
La llamada
import json
import os
import urllib.request
url = "https://honesthook.com/api/v1/soundcloud/profile?handle=edsheeran"
request = urllib.request.Request(
url,
headers={"Authorization": "Bearer " + os.environ["HH_KEY"]},
)
with urllib.request.urlopen(request, timeout=30) as response:
envelope = json.load(response)
print(envelope["success"], envelope["platform"], envelope["endpoint"])
Lo que volvió
{
"success": true,
"platform": "soundcloud",
"endpoint": "soundcloud/profile",
"data": {
"author": {
"id": "3685019",
"handle": "edsheeran",
"name": "Ed Sheeran",
"followers": 2977786,
"following": 0,
"posts_count": 466,
"verified": true,
"is_private": null
}
},
"error": null,
"cached": false
}
Respuesta registrada, capturada el 27 Sep 2026. Una llamada en vivo devuelve el valor del momento en que preguntas, no este.
Todos los campos de esa captura
| En Python | Tipo en esta captura |
|---|
envelope["success"] | boolean |
envelope["platform"] | string |
envelope["endpoint"] | string |
envelope["data"]["author"]["id"] | string |
envelope["data"]["author"]["handle"] | string |
envelope["data"]["author"]["name"] | string |
envelope["data"]["author"]["followers"] | number |
envelope["data"]["author"]["following"] | number |
envelope["data"]["author"]["posts_count"] | number |
envelope["data"]["author"]["verified"] | boolean |
envelope["data"]["author"]["is_private"] | null |
envelope["error"] | null |
envelope["cached"] | boolean |
Un campo que no podemos leer vuelve null, nunca 0. Un cero sería una afirmación sobre la cuenta; null es un hecho sobre nuestra recolección.
Leer un campo
print(envelope["data"]["author"]["followers"])
envelope es el dict del bloque de arriba. os.environ lanza un error si la clave no está definida, lo que es mejor que enviar la palabra None como bearer token.
SoundCloud incrusta JSON de verdad en su página, lo que suena al caso fácil. No lo es, porque ese bloque contiene varios contadores y dos de ellos se diferencian en una letra: followers_count y followings_count.
En la cuenta usada para la captura de abajo, el equivocado de esos dos vale cero. Elígelo y publicas que un artista conocido no tiene seguidores — JSON válido, ningún error, un número simplemente falso.
Por qué eso te importa aunque solo hagas una llamada
Tú no tocas el bloque de hidratación. Envías una petición. Pero la razón de delegar esto es precisamente esa clase de fallo: no se anuncia. La respuesta parsea, el tipo es correcto, el campo existe, y el valor está mal. Nada en tu código puede notarlo.
Este endpoint toma el campo cuyo nombre coincide con la cosa que se está contando.
Qué estás llamando
Un GET autenticado a nuestro endpoint, con tu clave en una cabecera Authorization. El handle del ejemplo es el que produjo la respuesta registrada más abajo.
Antes de copiar el bloque
Guarda la clave en una variable de entorno — los tres ejemplos leen HH_KEY.
Las reproducciones y los "me gusta" son por pista, no por perfil, y este endpoint responde sobre el perfil.
← Tutoriales · soundcloud-api · Precios