Volver al blog

Cómo raspar perfiles de TikTok con Python y Scrapeless

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

01-Sep-2026

TL;DR:

  • Una búsqueda de perfil comienza con el nombre de usuario. Pasa unique_id sin @ a scraper.tiktok.user.detail.
  • La respuesta contiene campos de identidad y de cuenta pública. Puede incluir account_id, sec_uid, apodo, URL del perfil, biografía, avatar, estadísticas, campos de localización y banderas del estado de la cuenta.
  • sec_uid desbloquea el siguiente paso. Guárdalo cuando un flujo de trabajo solicite las publicaciones públicas de la cuenta.
  • Los identificadores deben permanecer como cadenas. Los grandes ID numéricos pueden perder precisión cuando los sistemas posteriores los coercionan a números.
  • Los datos de perfil no son datos de audiencia. El actor no expone listas de seguidores ni demografías de la audiencia.
  • Gratis para empezar. Las nuevas cuentas de Scrapeless incluyen crédito gratuito a través del Panel de Control de Scrapeless.

Introducción: resolver una cuenta pública en un registro estable

Un nombre de usuario es conveniente para la entrada, pero es solo una parte de un registro de creador útil. Un trabajo de investigación o monitoreo también necesita un identificador de cuenta estable, el sec_uid requerido por el actor de la publicación, estadísticas públicas y suficiente contexto para distinguir cuentas con nombres de exhibición similares.

El scraper de perfil de TikTok de Scrapeless empaqueta esa búsqueda como una solicitud JSON. Python puede luego validar la respuesta, elegir los campos necesarios y almacenar un registro compacto sin analizar HTML renderizado. Para el mapa de actores más amplio, consulta la guía de la API del Scraper de Scrapeless.

Lo que devuelve el Actor del Perfil

scraper.tiktok.user.detail acepta unique_id, el nombre de usuario visible sin el @ inicial. Una respuesta exitosa puede incluir:

  • account_id, unique_id, y sec_uid
  • apodo, URL del perfil, biografía y avatar
  • estadísticas de seguidores, seguidos, amigos, me gusta, videos y videos que me gustan
  • tiempo de creación de la cuenta, idioma y país
  • banderas de verificación, privacidad y vendedor

Los campos pueden estar ausentes o vacíos. Una bandera de cuenta privada es un estado de cuenta, no un permiso para acceder a contenido privado. Esta guía usa solo la respuesta del perfil público documentada.

Por qué usar la API de Scraping de Scrapeless

Scrapeless ejecuta el actor de perfil de TikTok detrás de un solo endpoint HTTP y devuelve JSON estructurado. Eso proporciona a los trabajos de Python un sobre de solicitud consistente y elimina el código de selección de página de la aplicación.

La superficie de la API está documentada en la referencia de detalles del usuario de TikTok. Scrapeless agrupa el actor bajo API de Scraping; consulta los precios actuales antes de establecer un horario de colección en producción.

Requisitos previos

  • Python con la biblioteca estándar
  • Una cuenta de Scrapeless y token de API del Panel de Control de Scrapeless
  • Un nombre de usuario público de TikTok relevante para el proyecto
  • Una lista de campos, propósito y período de retención definidos

El ejemplo requiere un token activo en SCRAPELESS_API_KEY. Proporciona el nombre de usuario a través de TIKTOK_USERNAME sin @.

Solicitar un Perfil de TikTok en Python

El código utiliza los módulos HTTP y JSON incorporados de Python. La documentación de urllib.request cubre el objeto de solicitud, mientras que la documentación del módulo JSON define el codificador y decodificador utilizados a continuación.

python Copy
import json
import os
from urllib.error import HTTPError
from urllib.request import Request, urlopen

ENDPOINT = "https://api.scrapeless.com/api/v1/scraper/request"


def get_profile(unique_id):
    payload = {
        "actor": "scraper.tiktok.user.detail",
        "input": {"unique_id": unique_id.lstrip("@")},
    }
    request = Request(
        ENDPOINT,
        data=json.dumps(payload).encode(),
        headers={
            "x-api-token": os.environ["SCRAPELESS_API_KEY"],
            "content-type": "application/json",
        },
        method="POST",
    )
    try:
        with urlopen(request, timeout=60) as response:
            return json.load(response)
    except HTTPError as exc:
        detail = exc.read().decode("utf-8", errors="replace")
        raise RuntimeError(f"profile request failed: {exc.code} {detail}") from exc


profile = get_profile(os.environ["TIKTOK_USERNAME"])
normalized = {
    "account_id": str(profile.get("account_id", "")),
    "unique_id": profile.get("unique_id"),
    "sec_uid": profile.get("sec_uid"),
    "nickname": profile.get("nickname"),
    "profile_url": profile.get("profile_url"),
    "bio": profile.get("bio"),
    "statistics": profile.get("statistics") or {},
    "language": profile.get("language"),
    "country": profile.get("country"),
    "is_verified": profile.get("is_verified"),
    "is_private": profile.get("is_private"),
    "is_seller": profile.get("is_seller"),
}
print(json.dumps(normalized, ensure_ascii=False, indent=2))

Comienza a Scrappear con Scrapeless

Mejora tu scraping web y flujo de trabajo de automatización con Scrapeless!
Regístrate hoy y obtén $5 en crédito gratuitosin necesidad de tarjeta de crédito.

Reclama tu crédito gratuito ahora en el Panel de Control de Scrapeless.

Mapea la Respuesta a Tu Modelo de Datos

Mantén tres campos de identidad

unique_id es el manejador de cuenta legible por humanos. account_id es un identificador de cuenta. sec_uid es la entrada necesaria por scraper.tiktok.user.work. Mantén los tres en lugar de elegir una clave universal.

Preserva el objeto de estadísticas

Los conteos públicos son valores en un punto en el tiempo. Una tabla de análisis normalizada puede extraer conteos seleccionados, pero el objeto de estadísticas en bruto debe permanecer disponible para que un cambio de esquema no borre el contexto de origen.

Trata las banderas de cuenta como anulables

La verificación, la privacidad y las banderas de vendedor son útiles cuando están presentes. Si un campo está ausente, almacena desconocido en lugar de falso. La misma regla se aplica a idioma, país, biografía y avatar.

Adjunta tu propia marca temporal de colección

La respuesta del perfil describe la cuenta cuando actuó el actor. Agrega una marca de tiempo de observación en UTC en la aplicación que llama y mantenla separada de cualquier tiempo de creación de cuenta devuelto por TikTok.

Obtén sec_uid de un nombre de usuario

La solicitud de perfil es el puente documentado de nombre de usuario a colección de publicaciones. Después de almacenar sec_uid, una segunda solicitud puede usar scraper.tiktok.user.work con cursor y count. La referencia de actor de trabajo de usuario describe esos insumos.

Evita derivar sec_uid de una URL de perfil o tratarlo como intercambiable con el nombre de usuario. Usa el campo devuelto. Si está ausente, mantiene el registro del perfil y marca la colección de publicaciones como no disponible para esa observación.

Valida antes de exportar

Un pequeño conjunto de verificaciones evita filas engañosas:

  1. Confirma que unique_id coincide con la cuenta prevista después de la normalización de mayúsculas y de @ inicial.
  2. Mantén account_id como una cadena.
  3. Acepta valores vacíos para biografía, locale o avatar.
  4. Requiere sec_uid solo cuando el siguiente trabajo necesite publicaciones.
  5. Registra el estado HTTP y un cuerpo de error redactado cuando una solicitud falla.

El punto final utiliza semántica HTTP normal; RFC 9110 es la referencia principal para el significado del código de estado. Los registros de la aplicación nunca deben incluir el token de la API.

Maneja los datos del perfil público de manera responsable

Recoge el conjunto de campos más pequeño que responda a la pregunta de investigación. Restringe el acceso a los registros de perfil almacenados, elimina los datos cuando termine el periodo de retención y evita usar cuentas públicas para inferir rasgos sensibles. El Marco de Privacidad de NIST proporciona un vocabulario práctico para mapear el procesamiento de datos al riesgo de privacidad.

Una respuesta de perfil apoya la investigación a nivel de cuenta. No proporciona la identidad de los seguidores, la demografía de la audiencia, publicaciones privadas o permisos para perfiles no relacionados.

Conclusión: usa el perfil como la capa de identidad

Un scraper de perfil de TikTok debería producir un registro de cuenta estable y mínimo a partir de un nombre de usuario. Guarda account_id, unique_id y sec_uid, preserva campos anulables, marca temporal la observación y pasa sec_uid hacia adelante solo cuando un flujo de trabajo de publicación lo necesite.

¿Listo para construir tu conjunto de datos de perfil de TikTok?

Únete al Discord de Scrapeless o a la comunidad de Telegram para discutir la implementación. Crea una cuenta en el Tablero de Scrapeless cuando la lista de campos y la política de almacenamiento estén listas.

FAQ

Q: ¿Qué entrada necesita el scraper de perfil de TikTok?

Necesita unique_id, que es el nombre de usuario público sin el @ inicial.

Q: ¿Para qué se usa sec_uid?

sec_uid es el identificador de cuenta requerido por el actor de trabajo de usuario documentado que devuelve publicaciones públicas.

Q: ¿Puede el actor del perfil devolver la demografía de los seguidores?

No. Devuelve campos de perfil públicos y estadísticas de cuenta, no la demografía de la audiencia ni listas de seguidores.

Q: ¿Deben los ID de cuentas de TikTok almacenarse como números?

No. Almacena los identificadores que parecen numéricos como cadenas para preservar cada dígito a través de bases de datos y herramientas de análisis.

Q: ¿Es legal raspar un perfil público de TikTok?

La legalidad depende de la jurisdicción, propósito, método de acceso, datos y términos aplicables. Usa solo campos públicos, minimiza la colección y obtén asesoría legal para el uso planeado.

Q: ¿Necesita el flujo de trabajo un proxy o un parser DOM?

No aparece ningún parser DOM en el código de la aplicación porque el actor gestionado devuelve datos estructurados. Scrapeless maneja la superficie de colección subyacente.

Q: ¿Puede esto funcionar sin un agente de IA?

Sí. El ejemplo de Python es un cliente HTTP directo y funciona independientemente de un agente.

En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.

Artículos más populares

Catalogar