Como consultar o telefone e o e-mail de uma pessoa pelo CPF via API
Para recuperar o contato de um cliente, atualizar um cadastro ou fazer uma cobrança, a consulta por CPF resolve em uma chamada. Veja quando ela é adequada, o que considerar na LGPD e como integrar.
Resposta curta
Envie o CPF para GET https://api.datax.plus/v1/pessoas/{cpf}/basico, com a sua chave no cabeçalho api-key. A resposta traz, em JSON, os telefones encontrados, com indicação de WhatsApp, e os e-mails. Cada chamada consome 1 requisição do limite diário. Como são dados pessoais, defina antes a finalidade e a base legal do uso.
Quando essa consulta é adequada
A consulta faz sentido quando você tem um motivo concreto para falar com aquela pessoa e o CPF já faz parte da relação. Os dados retornados são dados pessoais, então o motivo importa tanto quanto a integração.
| Uso | Exemplo | Avaliação |
|---|---|---|
| Atualização de cadastro | O cliente trocou de número e a sua base ficou desatualizada | Adequado, com base legal definida |
| Cobrança | Recuperar o contato de quem tem uma dívida com a sua empresa | Adequado, com base legal definida |
| Escolha do canal | Ver quais números do cliente têm WhatsApp antes de escrever | Adequado, com base legal definida |
| Disparo em massa | Comprar uma lista de CPFs e mandar mensagens para todos | Evite |
| Curiosidade | Procurar o telefone de um conhecido ou de alguém que você não conhece | Não use |
Finalidade e base legal
A LGPD exige uma base legal para cada tratamento de dados pessoais, e quem decide como os dados serão usados responde por essa escolha. O artigo 7º da lei lista as hipóteses. Estas costumam aparecer nesses casos:
| Base legal | Artigo | Situação típica |
|---|---|---|
| Consentimento | 7º, I | A pessoa autorizou o uso do dado para aquela finalidade |
| Execução de contrato | 7º, V | O contato é necessário para cumprir um contrato com a pessoa, a pedido dela |
| Legítimo interesse | 7º, IX, e art. 10 | Há um interesse concreto da empresa, que não se sobrepõe aos direitos da pessoa e vem com transparência |
| Proteção do crédito | 7º, X | Consultas ligadas à concessão ou à recuperação de crédito |
A tabela é um ponto de partida, não um parecer: a base correta depende do seu caso, e o seu jurídico é quem deve definir. Registre a decisão e esteja pronto para atender a pessoa que pedir a correção dos dados ou se opuser ao uso (art. 18).
Passo a passo
- Crie a conta e gere a chave. Cadastre-se no portal para o teste grátis de 24 horas, sem cartão, e gere a chave de API. Guarde a chave numa variável de ambiente.
- Limpe e valide o CPF. Deixe só os 11 dígitos e confira os dígitos verificadores, para não fazer chamadas com um número digitado errado.
- Faça a chamada. Um
GETem/v1/pessoas/{cpf}/basico, com o cabeçalhoapi-key. - Trate a resposta. As listas podem vir vazias, e um mesmo CPF pode ter vários telefones.
- Grave a origem e a data. Contatos mudam: saber quando foram consultados ajuda a decidir quando atualizar.
A chamada e a resposta
curl https://api.datax.plus/v1/pessoas/12345678909/basico \ -H "api-key: $DATAX_KEY"
{
"cpf": "12345678909",
"telefones": [
{
"ddd": "11",
"numero": "9...",
"numeroCompleto": "+55119...",
"whatsapp": true
}
],
"emails": ["maria.o@..."]
}
| Campo | O que traz |
|---|---|
cpf | CPF consultado |
telefones | Lista de telefones, com DDD, número, número completo, tipo, operadora e se tem WhatsApp |
emails | Lista de e-mails |
Exemplo em Python
O exemplo valida o CPF antes de chamar a API e separa os números com WhatsApp dos demais.
import os
import requests
KEY = os.environ["DATAX_KEY"]
def cpf_valido(cpf):
if len(cpf) != 11 or not cpf.isdigit() or cpf == cpf[0] * 11:
return False
for n in (9, 10):
soma = sum(int(cpf[i]) * (n + 1 - i) for i in range(n))
if soma * 10 % 11 % 10 != int(cpf[n]):
return False
return True
def contatos(cpf):
cpf = "".join(c for c in cpf if c.isdigit())
if not cpf_valido(cpf):
raise ValueError(f"CPF inválido: {cpf}")
r = requests.get(
f"https://api.datax.plus/v1/pessoas/{cpf}/basico",
headers={"api-key": KEY},
timeout=30,
)
r.raise_for_status()
dados = r.json()
telefones = dados.get("telefones") or []
return {
"whatsapp": [t["numeroCompleto"] for t in telefones if t.get("whatsapp")],
"outros": [t["numeroCompleto"] for t in telefones if not t.get("whatsapp")],
"emails": dados.get("emails") or [],
}
print(contatos("123.456.789-09"))
Qual consulta usar
| Você tem | Quer | Consulta |
|---|---|---|
| CPF | Só o contato | Telefone e e-mail por CPF |
| CPF | Contato e cadastro: nome, nascimento, situação na Receita, óbito e endereços | Ficha do CPF |
| Só o nome | Encontrar o CPF | Busca por nome |
| Telefone | Saber de quem é o número | Reverso de telefone |
| Saber de quem é o endereço | Reverso de e-mail | |
| CNPJ | O contato dos sócios | Sócios de um CNPJ |
As consultas por CPF consomem 1 requisição cada uma. Se você vai usar também o cadastro, prefira a ficha, que traz tudo na mesma chamada.
Erros mais comuns
| Resposta | O que significa | O que fazer |
|---|---|---|
401 | Chave ausente, inválida ou com formato errado | Confira o cabeçalho api-key |
403 | A consulta não está no seu plano. Não consome requisições | Veja os planos |
422 | Parâmetros faltando ou inválidos | Confira se o CPF tem 11 dígitos, só números |
| Listas vazias | Não há contato encontrado para aquele CPF | Trate como resultado normal, não como erro |
A documentação mostra o formato completo dos erros.
Boas práticas
- Peça só o que vai usar: se precisa apenas do contato, não consulte a ficha inteira.
- Guarde o resultado e não consulte o mesmo CPF de novo sem motivo.
- Mantenha a chave no servidor, nunca no navegador ou no aplicativo.
- Limite quem pode ver os dados na sua empresa e registre quem consultou o quê.
- Ofereça uma forma simples de a pessoa pedir para não ser mais contatada, e respeite o pedido.