Obtenha dados públicos de perfil do X com Python para enriquecimento de leads

Consulte número de seguidores, bio e verificação de um perfil público do X com uma requisição e sem conta de desenvolvedor, mais exatamente o que o endpoint não cobre. Testado em agosto de 2026.

Antes de mandar e-mail para um criador ou adicionar um lead a uma lista, você quer o básico: quantos seguidores a conta realmente tem, se a conta é verificada, o que diz a bio, quando foi criada. Isso é uma consulta de perfil público, não um projeto de pesquisa, e o /v1/x responde exatamente isso com uma requisição.

A própria plataforma de desenvolvedores do X pode responder a mesma pergunta, mas só depois de você registrar um app, ser aprovado, e escolher um tier pago, um custo de configuração real se tudo que você precisa é a contagem de seguidores de alguns leads por semana. Esse endpoint pula isso: é uma chamada REST normal sobre dados de perfil público, cobrada por consulta em vez de por assinatura.

Um parâmetro: profileId

O único parâmetro é profileId, em camelCase, e é o username sem o @. Passe elonmusk, não @elonmusk e não uma URL de perfil. Se a sua lista de origem tem usernames copiados direto do X ou de um link de perfil, remova o @ e qualquer URL ao redor antes de montar a requisição, já que profileId é documentado como o handle puro.

import requests

API_KEY = "faf_live_..."  # sua chave FastAF

resp = requests.get(
    "https://api.fastaf.co/v1/x",
    params={"profileId": "elonmusk"},
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=60,
)
resp.raise_for_status()

profile = resp.json()["profile"]
stats = profile["stats"]

print(f'{profile["name"]} ({profile["username"]})')
print(f'verified: {profile["is_blue_verified"]}')
print(f'followers: {stats["followers"]:,}  following: {stats["following"]:,}  tweets: {stats["tweets"]:,}')
print(f'bio: {profile["description"]}')
print(f'created: {profile["created_at"]}')

Isso é 5 créditos. Tudo aninha primeiro dentro de um objeto profile, e os contadores aninham de novo um nível mais fundo dentro de profile["stats"], que é a parte que as pessoas chutam errado antes de checar: followers não é de nível superior.

O que você realmente recebe

Rodar a chamada acima contra uma conta real e conhecida retornou um objeto profile com: name, username (esse vem com o @ incluso, mesmo o parâmetro da requisição não recebendo ele), user_id, description (a bio), location, website, created_at, is_blue_verified, verified_type, protected, possibly_sensitive, e campos de imagem (profile_image, profile_banner). Aninhados sob stats: followers, following, tweets, e creator_subscriptions. Para essa conta em particular os números foram uma contagem de followers acima de 241 milhões, following em 1.396, e tweets em 107.673, todos inteiros puros, sem formatação para remover. Isso já é o suficiente para construir uma regra de triagem de verdade, por exemplo rejeitar qualquer coisa abaixo de um piso de seguidores, ou uma checagem de idade de conta calculada a partir de created_at.

location voltou null nessa conta, o que é um lembrete de que os campos de perfil só são tão completos quanto o que a pessoa preencheu no X: trate todo campo, exceto o básico de identidade (name, username, user_id), como opcional quando você escrever o código que consome isso.

O que ele não faz

Seja claro consigo mesmo sobre o escopo antes de construir um pipeline em cima disso: /v1/x retorna um perfil, uma vez, por chamada. Ele não retorna os posts daquela conta, não retorna uma lista de seguidores dela ou de quem ela segue, e não é uma busca: você já precisa do username exato, vindo de um formulário de lead, um CSV, uma menção, de onde quer que a sua lista venha. Se o seu fluxo precisa de “achar contas falando sobre X” em vez de “me conte sobre essa conta específica”, esse endpoint é a ferramenta errada para essa etapa.

Também é um snapshot, não uma assinatura: nada te empurra uma atualização quando uma contagem de seguidores cruza um limite ou uma bio muda. Se você precisa disso, chame de novo no seu próprio cronograma e compare o stats que voltar com o que você guardou da última vez, do mesmo jeito que você acompanharia qualquer outro número que muda com o tempo.

Triagem e enriquecimento, na prática

O padrão comum é um job em lote: entra uma lista de usernames, sai uma lista pontuada ou filtrada. Mantenha o filtro em si simples e específico para o que você realmente precisa, um piso de seguidores, uma checagem de verificação, um corte de idade de conta, em vez de tentar calcular um único “influencer score” a partir de campos que nunca foram desenhados para se combinar em um só.

def enrich(usernames, min_followers=10_000):
    qualified = []
    for handle in usernames:
        resp = requests.get(
            "https://api.fastaf.co/v1/x",
            params={"profileId": handle},
            headers={"Authorization": f"Bearer {API_KEY}"},
            timeout=60,
        )
        resp.raise_for_status()
        p = resp.json()["profile"]
        if p["stats"]["followers"] >= min_followers:
            qualified.append({
                "username": p["username"],
                "followers": p["stats"]["followers"],
                "verified": p["is_blue_verified"],
                "bio": p["description"],
            })
    return qualified

Envolva cada chamada num try/except em produção: uma conta desativada ou suspensa é uma possibilidade real em qualquer lista que você não gerou você mesmo, e você quer que isso pule uma linha, não pare o lote.

Quanto isso custa

Volume Créditos Pacote que cobre Custo
500 leads, triagem única 2.500 Growth, $29 ~$0,97 do pacote
5.000 perfis enriquecidos em 30 dias 25.000 Growth, $29 ~$9,67 do pacote
50.000 perfis enriquecidos em 30 dias 250.000 Scale, $99 ~$82,50 do pacote

Requisições com falha nunca são cobradas: os créditos são reservados quando a requisição começa e devolvidos se ela não voltar com um resultado. O plano gratuito é de 500 créditos sem cartão, o que cobre 100 consultas de perfil, de sobra para checar a cobertura de campos na sua própria lista antes de se comprometer com um cronograma.