Consulta de IPv4
Localização, fuso horário e detalhes de rede de um endereço IPv4. Omita o endereço para consultar quem faz a chamada.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
ipopcional | string | Endereço IPv4 em notação decimal com pontos. Padrão: o endereço de onde veio a requisição. |
ipsopcional | string | Endereços separados por vírgula, até 100, para um lote. Retorna um array results na mesma ordem. Cada endereço conta como uma requisição. |
langopcional | string | Código ISO 639-1 para nomes de países, regiões e cidades. Padrão en. |
keyopcional | string | Chave de API, se não for enviada como cabeçalho. |
Exemplo
$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/ipv4?ip=1.1.1.1"// In a browser, with no ip parameter, this returns the visitor's own address
const geo = await (await fetch("https://api.mygeocode.com/v1/ipv4", { headers: { "X-API-Key": "YOUR_KEY" } })).json();
console.log(geo.country_code, geo.timezone);import requests
geo = requests.get("https://api.mygeocode.com/v1/ipv4", params={"ip": "1.1.1.1"}, headers={"X-API-Key": "YOUR_KEY"}, timeout=5).json()
print(geo["country_code"], geo["org"], geo["is_datacenter"]){
"status": "ok",
"ip": "1.0.164.165",
"version": 4,
"found": true,
"prefix": "1.0.164.0/24",
"country": "Thailand",
"country_code": "TH",
"continent": "Asia",
"continent_code": "AS",
"region": "Krung Thep Maha Nakhon",
"region_code": null,
"city": "Bangkok",
"postcode": "10200",
"lat": 13.749976,
"lon": 100.516819,
"timezone": "Asia/Bangkok",
"utc_offset": "+07:00",
"utc_offset_seconds": 25200,
"is_eu": false,
"asn": 23969,
"as_name": "TOT Public Company Limited",
"org": "TOT Public Company Limited",
"usage_type": "Eyeball",
"registry": "apnic",
"allocated": "2008-10-22",
"tags": ["dsl"],
"is_anycast": false,
"is_satellite": false,
"is_datacenter": false,
"is_proxy": false,
"is_vpn_provider": false,
"is_tor": false,
"is_private": false,
"abuse_email": "abuse@totisp.net",
"threat": {
"listed": true,
"score": 90,
"source_count": 2,
"categories": ["abuse", "attacker"],
"is_tor": false,
"is_tor_exit": false,
"is_bogon": false,
"listings": [
{ "category": "abuse", "confidence": 100, "recency_days": 1 },
{ "category": "attacker", "confidence": null, "recency_days": null }
]
},
"updated_at": "2026-09-18 06:53:39"
}Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
ip, version | string, inteiro | O endereço consultado, na forma canônica, e 4 ou 6. |
found | booleano | False quando nenhuma rede cobre o endereço; os campos de localização ficam então null. |
prefix | string | A rede mais específica que contém o endereço, em notação CIDR. |
country, country_code | string | Nome do país e código ISO 3166-1 alfa-2 em maiúsculas. |
continent, continent_code | string | Nome do continente e código de duas letras. |
region, region_code | string | Divisão de primeiro nível e o seu código curto. O código é preenchido para Estados Unidos, Canadá e Austrália; nos demais países, só aparece quando o conjunto de dados o traz. |
city, postcode | string | Melhor estimativa; null quando desconhecido. |
lat, lon | número | Centro da área conhecida mais específica. |
elevation_m | número ou null | Altura acima do nível médio do mar nesse ponto, em metros, da mesma grade de 15 segundos de arco do endpoint de altitude. Negativa sobre o fundo do mar. |
timezone, utc_offset, utc_offset_seconds | string, string, número | Zona IANA, o deslocamento em vigor agora no formato +HH:MM e o mesmo deslocamento em segundos. A zona é definida pelas coordenadas e pelos limites dos fusos horários, então sempre concorda com lat e lon. |
is_eu | booleano | O país faz parte da União Europeia. |
asn, as_name, org | inteiro, string | Número do sistema autônomo, o seu nome e a organização por trás dele. |
usage_type | string | O que o operador é: Eyeball (provedor de internet residencial), Carrier, Content, Hosting, Enterprise, Education, NSP ou unknown. |
registry, allocated | string | Registro regional que alocou o ASN e a data da alocação. |
tags | array | Marcadores em nível de operador, como dsl, cdn, vpsh (hospedagem VPS), vpn, satnet. Eles descrevem o operador da rede, não o endereço individual. |
is_anycast, is_satellite | booleano | O prefixo é anycast; o operador é uma rede via satélite. |
is_datacenter | booleano | Rede de hospedagem ou de conteúdo. Considere a cidade pouco confiável e leve em conta que o tráfego pode ser automatizado. |
is_proxy, is_tor | booleano | Evidência, por endereço, de que ele é um relay ou nó de saída do Tor, ou de que está listado como endpoint de proxy ou VPN. |
is_vpn_provider | booleano | O operador oferece serviços de VPN ou proxy em algum ponto da sua rede (um indício em nível de operador, mais fraco que is_proxy). |
is_private | booleano | Endereço reservado, privado ou não roteável por outro motivo. Quando true, a resposta traz apenas ip, version, is_private e reason. |
abuse_email | string | Contato de abuso registrado para a rede. |
threat | objeto | Reputação: listed, um score de 0 a 100 (o peso da pior denúncia, com desconto para as antigas), source_count (quantas denúncias independentes o listam), categories, indicadores de Tor e bogon, e as listings individuais com categoria, confiança e há quantos dias cada uma foi feita. |
updated_at | string | Quando o registro desta rede foi atualizado pela última vez. |
Qualquer versão numa única chamada
GET /v1/ip aceita um endereço IPv4 ou IPv6 (ou nenhum, para quem faz a chamada) e retorna o mesmo registro que os endpoints específicos de cada versão. Use-o quando você não souber de antemão que tipo de endereço vai receber.
Observações
- Endereços anycast como
1.1.1.1e8.8.8.8são atendidos a partir de muitos lugares ao mesmo tempo. A localização retornada é a registrada, e é por isso queis_datacenteré true para eles. - Chame a partir do seu servidor com o endereço do visitante em
ip. Chamar semipretorna o endereço de onde veio a requisição, que, atrás de um proxy ou CDN, é o proxy. - Os dados de IP são atualizados semanalmente. Um tempo de cache de um dia é razoável.
A mesma consulta nos formatos de outros provedores
Se você já tem código escrito para um desses provedores, mantenha-o: o host compatível aceita o mesmo caminho e os mesmos parâmetros e responde no formato de resposta desse provedor, com este endpoint por trás. Veja como funcionam os hosts compatíveis.
| Provedor | Host | Caminho |
|---|---|---|
| Geoapify | geoapify.mygeocode.com | /v1/ipinfo?ip=... |
| ip-api.com | ipapi.mygeocode.com | /json/{ip}/json//batch (POST, JSON array) |
| ipinfo.io | ipinfo.mygeocode.com | /{ip}/json/{ip}/json/{ip}/{field} |
| ipstack | ipstack.mygeocode.com | /{ip}/check/{ip},{ip},{ip} |
Erros
400 invalid_request quando ip não é um endereço IPv4 válido, quando um endereço IPv6 é enviado a este endpoint (use /v1/ipv6) ou quando ips tem mais de 100 entradas.