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ê.
Endpoints
Seção intitulada “Endpoints”| Requisição | Retorna |
|---|---|
GET http://ip-info.com/json | O 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.8 | Um endereço IPv4 ou IPv6 público específico |
GET http://ip-info.com/8.8.8.8/json | A 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.
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.
Verificando uma saída de proxy da Shifter
Seção intitulada “Verificando uma saída de proxy da Shifter”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.
curl --max-time 15 \ --proxy http://p.shifter.io:443 \ --proxy-user "customer-USERNAME-country-us-city-new_york:PASSWORD" \ http://ip-info.com/jsonimport requests
proxy = "http://customer-USERNAME-country-us:PASSWORD@p.shifter.io:443"r = requests.get( "http://ip-info.com/json", proxies={"http": proxy, "https": proxy}, timeout=15,)r.raise_for_status()exit_ip = r.json()print(exit_ip["ip"], exit_ip["country"], exit_ip["city"], exit_ip["asn"])assert exit_ip["country"] == "US", f"expected US, got {exit_ip['country']}"import { HttpsProxyAgent } from "https-proxy-agent";import fetch from "node-fetch";
const agent = new HttpsProxyAgent( "http://customer-USERNAME-country-de:PASSWORD@p.shifter.io:443");const res = await fetch("http://ip-info.com/json", { agent });const exit = await res.json();console.log(exit.ip, exit.country, exit.city, `AS${exit.asn}`);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.
Usando com agentes de IA
Seção intitulada “Usando com agentes de IA”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:
https://ip-info.com/llms.txt: uma breve introdução escrita para LLMshttps://ip-info.com/llms-full.txt: a referência completa em texto simpleshttps://ip-info.com/openapi.json: o contrato OpenAPI 3.1 (security está vazio, nenhuma chave é necessária)
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:
- Uma chamada sem
ipdescreve 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. - Use
countrypara comparações de país easnpara verificações de rede. - Trate
nullcomo desconhecido. Nunca preencha um campo ausente. - 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.
Erros e novas tentativas
Seção intitulada “Erros e novas tentativas”Os erros retornam em JSON com um código estável:
{ "error": { "code": "invalid_ip", "message": "Supply a literal IPv4 or IPv6 address." } }| Status | Código | Significado |
|---|---|---|
| 400 | invalid_ip | Entrada malformada, privada, reservada ou de outra forma não pública, ou parâmetros conflitantes |
| 404 | ip_not_found | Nenhum registro para este IP no banco de dados ativo |
| 405 | method_not_allowed | Use GET |
| 503 | database_unavailable | Temporário; tente novamente com backoff |
| 504 | timeout | Temporá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.
Dados e limites
Seção intitulada “Dados e limites”- 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_typeeis_anycastsã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.