Primeros pasos
Documentación de la API de IPScanner
Endpoints REST para IP Detection, Agentscan y Provenance, con SDKs en seis lenguajes.
URL base
https://ipscanner.io/v1
Autenticación
Authorization: Bearer <key>
Formato
JSON sobre HTTPS
Inicio rápido
- 1Crea una clave de API gratis.
- 2Envíala en la cabecera Authorization.
- 3Llama a un endpoint o instala un SDK.
curl -X POST https://ipscanner.io/v1/ip/lookup \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"target":"8.8.8.8"}'Pruébalo sin clave
Prueba:
Parámetros
- ipstringrutaObligatorio
Dirección IPv4 o IPv6.
Campos de la respuesta
- target.kindstring
ipv4, ipv6, cidr o hostname.
- target.ipstring
Dirección comprobada. Para un hostname, la dirección a la que resolvió.
- reserved.reservedboolean
True para rangos privados, reservados y de documentación.
- verdict.classificationstring
residential_clean, mobile, hosting, datacenter, vpn, residential_proxy, tor, relay o unknown.
- verdict.anonymizedboolean
True cuando la red oculta a la persona que hay detrás. El hosting cuenta, salvo la infraestructura conocida.
- verdict.confidencenumber
Confianza de 0 a 1.
- verdict.methodstring
Qué señal decidió el veredicto.
- verdict.evidencestring[]
Opcional. En qué se basa la clase, por ejemplo vpn_server_list, relay_range o known_infra.
- purityobject | null
Desglose de la puntuación: score, grade, verdict y deductions. En todos los planes.
- purity.scoreinteger
Puntuación de limpieza de 0 a 100.
- purity.gradestring
S+, S, A, B o C.
- purity.verdictstring
clean, suspect o dirty.
- purity.deductionsarray
Puntos restados a la puntuación, cada uno con su motivo.
- deductionCountinteger
Solo en respuestas bloqueadas (Free): cuántas deducciones tiene la pureza oculta, nada más sobre ellas.
- networkClassstring
residential_clean, mobile, hosting, datacenter, vpn, residential_proxy, tor, relay o unknown.
- isVpnboolean
True solo para vpn, residential_proxy y tor, nunca para hosting o relay.
- isProxyboolean
True para proxies, incluidos los residenciales.
- isTorboolean
True para nodos de salida de Tor.
- providerstring | null
Propietario de la red, si se conoce.
- vpnProviderstring | null
Servicio VPN de una dirección vpn (NordVPN, Mullvad...), si se conoce. Desde Starter, null en Free.
- riskScoreinteger
Riesgo de 0 a 100.
- geoobject
Misma forma que la respuesta de geolocalización.
- asnobject
Misma forma que la respuesta de consulta ASN.
- whoisobject
Registro WHOIS, para destinos hostname.
- degradedstring[]
Partes de la consulta que fallaron y se omitieron.
- atstring
Cuándo se hizo la consulta.
- lockedstring[]
Rutas con puntos de los campos enviados como null en este plan. Ausente desde Starter.
- planRequiredstring
Plan que incluye los campos bloqueados. Ausente desde Starter.
curl https://ipscanner.io/v1/demo/185.220.101.1{
"target": {
"raw": "185.220.101.1",
"kind": "ipv4",
"ip": "185.220.101.1"
},
"reserved": {
"reserved": false
},
"verdict": {
"classification": "tor",
"anonymized": true,
"confidence": 0.95,
"method": "tor_set",
"evidence": [
"tor_exit_list"
]
},
"networkClass": "tor",
"isVpn": true,
"isProxy": true,
"isTor": true,
"riskScore": 100,
"asn": {
"ip": "185.220.101.1",
"asn": "AS60729",
"name": "Stiftung Erneuerbare Freiheit",
"type": "unknown",
"country": "DE"
},
"at": "2026-10-08T21:55:08.590700162Z",
"purity": null,
"provider": null,
"vpnProvider": null,
"geo": {
"ip": "185.220.101.1",
"country": "Germany",
"countryCode": "DE",
"city": "Brandenburg",
"region": "Brandenburg",
"timezone": "Europe/Berlin",
"latitude": null,
"longitude": null,
"postalCode": null,
"accuracyRadius": null
},
"locked": [
"purity",
"provider",
"vpnProvider",
"geo.latitude",
"geo.longitude",
"geo.postalCode",
"geo.accuracyRadius"
],
"planRequired": "Starter"
}