Pular para o conteúdo
Entrar Cadastre-se

IP Info (API gratuita de geolocalização de IP)

IP Info é uma API gratuita de geolocalização de IP e ASN mantida pela Shifter. Uma requisição GET retorna o país, região, cidade, coordenadas, fuso horário, ISP, ASN e tipo de conexão de um endereço IP em formato JSON. Não há cadastro, chave de API ou assinatura.

Ela roda sobre o mesmo banco de dados de localização de IP e rede que a Shifter usa para seus próprios pools de proxy, então, ao verificar um IP de saída da Shifter com o IP Info, você vê a localização da forma como a nossa rede a vê.

RequisiçãoRetorna
GET http://ip-info.com/jsonO IP que fez a requisição (seu servidor, ou sua saída de proxy quando enviado através de um proxy)
GET http://ip-info.com/json?ip=8.8.8.8Um endereço IPv4 ou IPv6 público específico
GET http://ip-info.com/8.8.8.8/jsonA mesma consulta, em formato de caminho

HTTP (http://ip-info.com/json) também funciona e não é redirecionado. Use HTTPS a partir de páginas web para evitar bloqueios de conteúdo misto. As respostas permitem GET entre origens, então código de navegador pode chamar a API diretamente.

Terminal window
curl --max-time 10 "http://ip-info.com/json?ip=94.204.59.232"
{
"ip": "94.204.59.232",
"city": "Motor City",
"region": "Dubai",
"region_code": "DU",
"country": "AE",
"country_name": "United Arab Emirates",
"continent": "AS",
"loc": "25.0459,55.241",
"latitude": 25.0459,
"longitude": 55.241,
"postal": null,
"timezone": "Asia/Dubai",
"asn": 15802,
"as_name": "Emirates Integrated Telecommunications Company PJSC",
"isp": "Emirates Integrated Telecommunications Company PJSC",
"org": "Emirates Integrated Telecommunications Company",
"connection_type": "Corporate",
"user_type": "business",
"is_anycast": false
}

A resposta em produção tem 29 campos; o exemplo acima mostra os que a maioria das integrações lê. Todo campo está sempre presente, e um valor que o banco de dados não possui retorna como null.

Envie a requisição sem argumentos através do seu proxy. A resposta do IP Info descreve o IP de saída, então você pode confirmar que o país, cidade ou ASN que você definiu como alvo é o que você obteve.

Terminal window
curl --max-time 15 \
--proxy http://p.shifter.io:443 \
--proxy-user "customer-USERNAME-country-us-city-new_york:PASSWORD" \
http://ip-info.com/json

Compare country (código de duas letras ISO 3166) com o país que você solicitou e asn (um número simples, sem o prefixo AS) com a rede que você definiu como alvo. Veja Geo-targeting para as flags de nome de usuário.

O IP Info não requer nenhum fluxo de autenticação, então um agente pode chamá-lo como qualquer outro endpoint HTTP. Ele publica descrições legíveis por máquina que agentes e criadores de ferramentas podem carregar diretamente:

Nenhum servidor MCP é necessário. Se seu framework aceita definições de função ou ferramenta, esta é suficiente:

{
"name": "ip_lookup",
"description": "Approximate geolocation and network (ASN, ISP) for a public IP address. Omit ip to look up the agent's own network exit.",
"input_schema": {
"type": "object",
"properties": {
"ip": { "type": "string", "description": "Public IPv4 or IPv6 literal. Leave empty for the caller's exit IP." }
}
}
}

Implemente como GET http://ip-info.com/json quando ip estiver vazio, e GET http://ip-info.com/json?ip=<URL-encoded ip> nos demais casos.

Forneça ao agente estas regras junto com a ferramenta:

  1. Uma chamada sem ip descreve o próprio servidor do agente ou a saída de proxy, não o usuário humano. Para consultar o IP de um usuário, o agente deve receber esse IP explicitamente.
  2. Use country para comparações de país e asn para verificações de rede.
  3. Trate null como desconhecido. Nunca preencha um campo ausente.
  4. A localização é aproximada, e o IP Info não é uma ferramenta de detecção de VPN ou proxy.

Usos típicos para agentes: confirmar que o proxy de um agente de navegação está no país correto antes de fazer scraping de uma página localizada, marcar dados coletados com a localização de saída de onde foram obtidos, e enriquecer IPs de log ou cadastro com país e ASN.

Os erros retornam em JSON com um código estável:

{ "error": { "code": "invalid_ip", "message": "Supply a literal IPv4 or IPv6 address." } }
StatusCódigoSignificado
400invalid_ipEntrada malformada, privada, reservada ou de outra forma não pública, ou parâmetros conflitantes
404ip_not_foundNenhum registro para este IP no banco de dados ativo
405method_not_allowedUse GET
503database_unavailableTemporário; tente novamente com backoff
504timeoutTemporário; tente novamente com backoff

Corrija entradas 4xx antes de tentar novamente. Para 503, 504 e erros de conexão, tente novamente com um backoff curto e limitado (por exemplo, 1, 2 e 4 segundos), e depois desista e relate a falha.

  • Gratuito, sem cota. Não há cota por chave ou por aplicação e não há chave de API. É um serviço compartilhado com capacidade finita: faça as requisições que sua aplicação precisa e siga os termos. Uso automatizado e comercial é permitido.
  • Aproximado por design. As coordenadas apontam para uma área, não para um endereço, e nunca identificam uma pessoa.
  • Não é um detector de proxy ou VPN. connection_type, user_type e is_anycast são classificações do banco de dados, não prova de como um IP é usado.
  • Privacidade. A API não mantém histórico de consultas. Veja a política de privacidade.

Dúvidas ou divergências de dados: envie um e-mail para hi@shifter.io com o IP e a localização esperada.