API de TikTok
La API de TikTok te permite consultar perfiles de usuarios, listar videos, leer comentarios y respuestas, buscar videos y usuarios, explorar hashtags y recorrer el grafo social (seguidores / seguidos). Once endpoints, todos a 1 credito por solicitud.
Endpoints
| Endpoint | Descripcion |
|---|---|
POST /api/v1/tiktok/profile | Obtener un perfil de usuario por username o sec_user_id |
POST /api/v1/tiktok/user/posts | Listar los videos de un usuario (paginado, ordenable) |
POST /api/v1/tiktok/video | Obtener detalles completos de un video |
POST /api/v1/tiktok/video/comments | Listar comentarios de un video |
POST /api/v1/tiktok/video/comments/replies | Listar respuestas a un comentario especifico |
POST /api/v1/tiktok/search/videos | Buscar videos de TikTok por palabra clave |
POST /api/v1/tiktok/search/users | Buscar usuarios de TikTok por palabra clave |
POST /api/v1/tiktok/hashtag | Obtener detalles y estadisticas de un hashtag |
POST /api/v1/tiktok/hashtag/videos | Listar videos de un hashtag |
POST /api/v1/tiktok/user/followers | Listar los seguidores de un usuario |
POST /api/v1/tiktok/user/followings | Listar las cuentas que sigue un usuario |
Autenticacion
| Encabezado | Valor | Requerido |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | Si |
Content-Type | application/json | Si |
Cada respuesta exitosa incluye campos de seguimiento de creditos: credits_used, credits_remaining y response_time (ms).
Obtener un sec_user_id
La mayoria de los endpoints requieren un sec_user_id en lugar de un username. Llama primero al endpoint de Perfil con un username y luego usa data.user.sec_uid para las solicitudes posteriores.
Perfil de Usuario
POST https://api.scavio.dev/api/v1/tiktok/profileObtener el perfil de un usuario de TikTok. Pasa uno de los dos: username o sec_user_id.
Cuerpo de la Solicitud
| Parametro | Tipo | Predeterminado | Descripcion |
|---|---|---|---|
username | string | -- | Nombre de usuario de TikTok (sin @). Se requiere username o sec_user_id. |
sec_user_id | string | -- | ID seguro del usuario. Se requiere username o sec_user_id. |
Ejemplo de Solicitud
curl -X POST 'https://api.scavio.dev/api/v1/tiktok/profile' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"username": "tiktok"}'Campos de Respuesta (data.user)
| Campo | Tipo | Descripcion |
|---|---|---|
unique_id | string | Nombre de usuario (handle) |
nickname | string | Nombre visible |
sec_uid | string | ID seguro del usuario (usar para otros endpoints) |
uid | string | ID numerico del usuario |
signature | string | Texto de la biografia |
bio_url | string | Enlace en la biografia |
follower_count | number | Seguidores |
following_count | number | Seguidos |
aweme_count | number | Total de videos publicados |
total_favorited | number | Total de likes recibidos |
avatar_larger | object | Imagen de avatar (.url_list[0] para la URL) |
Ejemplo de Respuesta
{
"data": {
"user": {
"unique_id": "tiktok",
"nickname": "TikTok",
"sec_uid": "MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM",
"uid": "107955",
"signature": "One TikTok can make a big impact",
"bio_url": "linktr.ee/tiktok",
"follower_count": 94015018,
"following_count": 1,
"aweme_count": 1510,
"total_favorited": 457945663
}
},
"response_time": 1245,
"credits_used": 1,
"credits_remaining": 11753
}Publicaciones del Usuario
POST https://api.scavio.dev/api/v1/tiktok/user/postsListar los videos de un usuario. Requiere sec_user_id (obtenlo desde el endpoint de perfil).
Cuerpo de la Solicitud
| Parametro | Tipo | Predeterminado | Descripcion |
|---|---|---|---|
sec_user_id | string | -- | Requerido. ID seguro del usuario desde el endpoint de perfil. |
cursor | string | "0" | Cursor de paginacion. Usa data.max_cursor de la respuesta anterior. |
count | number | 20 | Resultados por pagina (1-30). |
sort_type | string | "0" | "0" = mas recientes, "1" = populares. |
Paginacion
Usa data.max_cursor como cursor en la siguiente solicitud. Detente cuando data.has_more sea 0.
Campos de Video (data.aweme_list[])
| Campo | Tipo | Descripcion |
|---|---|---|
aweme_id | string | ID del video |
desc | string | Descripcion del video |
create_time | number | Marca de tiempo Unix (segundos) |
statistics.digg_count | number | Likes |
statistics.comment_count | number | Comentarios |
statistics.play_count | number | Reproducciones |
statistics.share_count | number | Compartidos |
statistics.collect_count | number | Guardados |
author | object | Informacion del autor (subconjunto del perfil) |
music | object | Sonido utilizado |
video | object | URLs del video, dimensiones, duracion |
Detalle de Video
POST https://api.scavio.dev/api/v1/tiktok/videoObtener detalles completos de un video.
Cuerpo de la Solicitud
| Parametro | Tipo | Predeterminado | Descripcion |
|---|---|---|---|
video_id | string | -- | Requerido. ID del video de TikTok. |
Ejemplo de Solicitud
curl -X POST 'https://api.scavio.dev/api/v1/tiktok/video' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"video_id": "7350810998023949599"}'Campos Adicionales (data.aweme_detail)
Incluye todos los campos de video listados arriba, mas:
| Campo | Tipo | Descripcion |
|---|---|---|
video.play_addr | object | URL de reproduccion del video (.url_list[0]) |
video.download_addr | object | URL de descarga (sin marca de agua) |
video.cover | object | Imagen de portada |
video.duration | number | Duracion en ms |
cha_list | array | Hashtags utilizados |
text_extra | array | Menciones y hashtags en la descripcion |
Ejemplo de Respuesta
{
"data": {
"aweme_detail": {
"aweme_id": "7350810998023949599",
"desc": "im so sick of being tired im so tired of being sick",
"create_time": 1711494099,
"statistics": {
"digg_count": 2002382,
"comment_count": 8119,
"play_count": 12171757,
"share_count": 274978,
"collect_count": 211332
}
}
},
"response_time": 1605,
"credits_used": 1,
"credits_remaining": 11752
}Comentarios de Video
POST https://api.scavio.dev/api/v1/tiktok/video/commentsObtener comentarios de un video.
Cuerpo de la Solicitud
| Parametro | Tipo | Predeterminado | Descripcion |
|---|---|---|---|
video_id | string | -- | Requerido. ID del video. |
cursor | string | "0" | Cursor de paginacion. |
count | number | 20 | Resultados por pagina (1-50). |
Paginacion
Usa data.cursor como el siguiente cursor. Detente cuando data.has_more sea 0.
Campos de Comentario (data.comments[])
| Campo | Tipo | Descripcion |
|---|---|---|
cid | string | ID del comentario (usar para el endpoint de respuestas) |
text | string | Texto del comentario |
create_time | number | Marca de tiempo Unix (segundos) |
digg_count | number | Likes en este comentario |
reply_comment_total | number | Cantidad de respuestas |
user | object | Informacion del autor del comentario (nickname, avatar, etc.) |
is_author_digged | number | 1 si el autor del video dio like a este comentario |
Respuestas a Comentarios
POST https://api.scavio.dev/api/v1/tiktok/video/comments/repliesObtener respuestas a un comentario especifico.
Cuerpo de la Solicitud
| Parametro | Tipo | Predeterminado | Descripcion |
|---|---|---|---|
video_id | string | -- | Requerido. ID del video. |
comment_id | string | -- | Requerido. ID del comentario (cid del endpoint de comentarios). |
cursor | string | "0" | Cursor de paginacion. |
count | number | 20 | Resultados por pagina (1-50). |
Paginacion
Igual que comentarios: usa data.cursor, detente cuando data.has_more sea 0. Cada respuesta tiene los mismos campos que un objeto de comentario.
Buscar Videos
POST https://api.scavio.dev/api/v1/tiktok/search/videosBuscar videos de TikTok por palabra clave.
Cuerpo de la Solicitud
| Parametro | Tipo | Predeterminado | Descripcion |
|---|---|---|---|
keyword | string | -- | Requerido. Consulta de busqueda (1-500 caracteres). |
cursor | string | "0" | Desplazamiento de paginacion. |
count | number | 20 | Resultados por pagina (1-30). |
sort_type | string | "0" | "0" = relevancia, "1" = mas likes. |
publish_time | string | "0" | "0" = todo el tiempo, "1" = ultimo dia, "7" = semana, "30" = mes, "90" = 3 meses, "180" = 6 meses. |
Ejemplo de Solicitud
curl -X POST 'https://api.scavio.dev/api/v1/tiktok/search/videos' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"keyword": "cooking recipe", "count": 10, "publish_time": "7"}'Paginacion
Usa data.cursor como el siguiente cursor. Detente cuando data.has_more sea 0. Cada elemento en data.aweme_list tiene la misma estructura que un detalle de video.
Buscar Usuarios
POST https://api.scavio.dev/api/v1/tiktok/search/usersBuscar usuarios de TikTok por palabra clave.
Cuerpo de la Solicitud
| Parametro | Tipo | Predeterminado | Descripcion |
|---|---|---|---|
keyword | string | -- | Requerido. Consulta de busqueda (1-500 caracteres). |
cursor | string | "0" | Desplazamiento de paginacion. |
count | number | 20 | Resultados por pagina (1-30). |
Campos de Respuesta (data.user_list[].user_info)
| Campo | Tipo | Descripcion |
|---|---|---|
uid | string | ID del usuario |
unique_id | string | Nombre de usuario |
nickname | string | Nombre visible |
sec_uid | string | ID seguro del usuario |
follower_count | number | Seguidores |
signature | string | Biografia |
Informacion de Hashtag
POST https://api.scavio.dev/api/v1/tiktok/hashtagObtener detalles y estadisticas de un hashtag. Pasa uno de los dos: hashtag_name o hashtag_id.
Cuerpo de la Solicitud
| Parametro | Tipo | Predeterminado | Descripcion |
|---|---|---|---|
hashtag_name | string | -- | Texto del hashtag (sin #). Se requiere hashtag_name o hashtag_id. |
hashtag_id | string | -- | ID numerico del hashtag. Se requiere hashtag_name o hashtag_id. |
Campos de Respuesta
| Campo | Tipo | Descripcion |
|---|---|---|
data.challengeInfo.challenge.id | string | ID del hashtag (usar para videos de hashtag) |
data.challengeInfo.challenge.title | string | Nombre del hashtag |
data.challengeInfo.challenge.desc | string | Descripcion |
data.challengeInfo.stats.videoCount | number | Cantidad de videos |
data.challengeInfo.stats.viewCount | number | Reproducciones totales |
Ejemplo de Respuesta
{
"data": {
"challengeInfo": {
"challenge": {
"id": "229207",
"title": "fyp",
"desc": "",
"stats": {
"videoCount": 0,
"viewCount": 118798000000000
}
}
}
},
"response_time": 892,
"credits_used": 1,
"credits_remaining": 11751
}Videos de Hashtag
POST https://api.scavio.dev/api/v1/tiktok/hashtag/videosListar videos de un hashtag. Requiere hashtag_id (obtenlo desde el endpoint de informacion de hashtag).
Cuerpo de la Solicitud
| Parametro | Tipo | Predeterminado | Descripcion |
|---|---|---|---|
hashtag_id | string | -- | Requerido. Desde el endpoint de informacion de hashtag. |
cursor | string | "0" | Cursor de paginacion. |
count | number | 20 | Resultados por pagina (1-30). |
Paginacion
Usa data.cursor como el siguiente cursor. Detente cuando data.has_more sea 0. La respuesta contiene data.aweme_list[] con la misma estructura de video que busqueda y publicaciones de usuario.
Seguidores del Usuario
POST https://api.scavio.dev/api/v1/tiktok/user/followersObtener la lista de seguidores de un usuario.
Cuerpo de la Solicitud
| Parametro | Tipo | Predeterminado | Descripcion |
|---|---|---|---|
sec_user_id | string | -- | Requerido. Desde el endpoint de perfil. |
count | number | 20 | Resultados por pagina (1-20). |
page_token | string | -- | Desde la respuesta anterior data.next_page_token. |
min_time | number | -- | Desde la respuesta anterior data.min_time. |
Paginacion
Pasa tanto page_token como min_time de la respuesta anterior. Detente cuando data.has_more sea false.
Campos de Seguidor (data.followers[])
| Campo | Tipo | Descripcion |
|---|---|---|
unique_id | string | Nombre de usuario |
nickname | string | Nombre visible |
sec_uid | string | ID seguro del usuario |
uid | string | ID del usuario |
follower_count | number | Su cantidad de seguidores |
aweme_count | number | Su cantidad de videos |
signature | string | Su biografia |
avatar_thumb | object | Avatar (.url_list[0]) |
Seguidos del Usuario
POST https://api.scavio.dev/api/v1/tiktok/user/followingsObtener las cuentas que sigue un usuario. Misma estructura de solicitud y parametros que seguidores. La respuesta usa data.followings[] en lugar de data.followers[].
Referencia de Paginacion
| Estilo | Endpoints | Pagina siguiente | Condicion de parada |
|---|---|---|---|
| Cursor (string) | user/posts | cursor = data.max_cursor | data.has_more === 0 |
| Offset (number) | search/*, hashtag/videos, video/comments, video/comments/replies | cursor = data.cursor | data.has_more === 0 |
| Token + tiempo | user/followers, user/followings | page_token + min_time | data.has_more === false |
Notas
- Todos los campos
create_timeson marcas de tiempo Unix en segundos. Multiplica por 1000 para JavaScriptDate. - Los campos de avatar e imagen devuelven un objeto con un array
url_list. Usa.url_list[0]para obtener la URL. - Consulta Errores para el manejo de
401,429y502.