Realizar solicitudes

Clasificar una dirección IP concreta como VPN, proxy, punto de salida de Tor, alojamiento/CDN o proxy residencial/móvil.

Endpoint de la API

GET https://vpn-proxy-detection.whoisxmlapi.com/api/v1?apiKey=YOUR_API_KEY&ipAddress=185.220.101.1
La activación de su cuenta tarda hasta un minuto tras el registro.

Colección Postman

Postman es una aplicación de escritorio y web que le permite realizar solicitudes a una API desde una interfaz gráfica de usuario . Recomendamos utilizar Postman con los puntos de conexión de las API de WhoisXML tanto a la hora de explorar las funcionalidades de las API, como a la hora de resolver problemas con su aplicación.

La colección de Postman de WhoisXML API está disponible en los siguientes enlaces:

La colección incluye un entorno preconfigurado. Tendrá que configurar la variableapi_key para enviar cada solicitud. Obtenga su clave API personal en la página Mis productos. Si tiene alguna duda relacionada con la API, contáctenos.

Parámetros de entrada

apiKey

Obligatorio. Obtenga su clave API personal en la página Mis productos.

ipAddress

Obligatorio. La dirección IPv4 que se va a clasificar; por ejemplo: /api/v1?apiKey=TU_CLAVE_API&ipAddress=185.220.101.1.

Las claves API secundarias de una cuenta principal-secundaria funcionan de la misma manera: una llamada con una clave secundaria obtiene los campos del plan de la suscripción principal.

Ejemplo de respuesta

{
    "ip": "185.220.101.1",
    "network": "185.220.101.0\/24",
    "classification": "tor",
    "provider": null,
    "confidence": 1.0,
    "source": "port_scan",
    "detection_method": "port_scan",
    "first_seen": "2024-01-15T08:30:00Z",
    "last_seen": "2026-06-08T08:59:09Z",
    "observation_count": 127,
    "hits_days_pct": 47.78,
    "providers_num": 0,
    "confidence_decay": 0.6650,
    "freshness_class": "current",
    "is_vpn": false,
    "is_proxy": false,
    "is_tor": true,
    "is_relay": false,
    "is_hosting": false,
    "is_cdn": false,
    "is_residential_proxy": false,
    "is_residential_proxy_high_confidence": false,
    "is_residential_proxy_mobile": false,
    "is_open_proxy": false,
    "is_corporate_vpn": false,
    "risk_score": 100,
    "asn": 60729,
    "asn_org": "TORSERVERS-NET - Stiftung Erneuerbare Freiheit, DE",
    "cdn_operator": null,
    "asn_abuse": {
        "abuse_score": 88,
        "abuse_level": "high",
        "flagged_ratio": 0.62,
        "flagged_ip_count": 1240,
        "total_announced_ips": 2000
    },
    "metadata": {
        "raw_score": null,
        "signals": null,
        "dns_enrichment": null,
        "tls_enrichment": null
    },
    "observed_location": null
}

Code: 200 OK.

Parámetros de salida

ip

La dirección IPv4 consultada, devuelta.

network

Cadena o nulo. El rango CIDR al que pertenece la dirección IP, si se conoce.

clasificación

Cadena. El tipo de detección de la IP.

Valores permitidos: vpn, corporate_vpn, proxy, hosting, cdn, tor, relay, residential_proxy, residential_proxy_likely, residential_proxy_mobile, datacenter_proxy, mobile_proxy, suspected_vpn, suspected_proxy, unknown.

provider

Cadena de caracteres o nulo. Proveedor asociado a la dirección IP (por ejemplo, una marca de VPN, una red de proxies residenciales o una empresa de alojamiento web). Nulo cuando no hay información disponible.

confidence

Número flotante en el intervalo [0, 1] o nulo. Confianza en la clasificación: los valores más altos indican una evidencia más sólida. Se devuelve en el plan Pro; nulo en los planes Intro y Starter.

source

Cadena. El método de detección que generó el registro (por ejemplo, partner_feed, port_scan, proxy_enum, netflow_analysis, asn_classification).

detection_method

Cadena. Igual que en source (campo heredado, que se mantiene por motivos de compatibilidad con versiones anteriores).

first_seen

Cadena (ISO-8601) o nulo. Fecha en la que se detectó por primera vez la dirección IP.

last_seen

Cadena (ISO-8601) o nulo. Fecha y hora de la última vez que se detectó la dirección IP.

observation_count

Número entero. Número total de veces que se ha detectado la dirección IP (accesos).

hits_days_pct

Valor flotante o nulo. Persistencia: porcentaje de días, dentro de una ventana móvil de observación de 90 días, en los que la IP se observó como un proxy activo o un nodo de salida de VPN (días de observación distintos ÷ 90 × 100).

High (>50) indicates a consistently active exit; low (<5) indicates sporadic or one-shot activity. Null when the result comes from a network-range detection with no per-IP observation history.

providers_num

Número entero. Número de redes proxy o VPN distintas a través de las cuales se ha observado que la dirección IP actúa como punto de salida. Un valor igual o superior a 2 indica que la dirección IP se comparte o se revende a través de varias redes comerciales, lo que constituye una señal clara de que se trata de un proxy. El valor 0 significa que no hay historial de enumeración por dirección IP (solo detección a nivel de rango).

confidence_decay

Valor entre [0, 1,5]. Puntuación compuesta de solidez de la evidencia: factor de actualidad × consistencia × refuerzo por múltiples proveedores. Los valores superiores a 1,0 indican IP activos a diario y con múltiples proveedores; 0,0 significa que nunca se ha observado a nivel de punto. Para obtener una puntuación normalizada entre 0 y 1, utilice em>min(confidence_decay, 1.0).

freshness_class

Cadena. El grupo de antigüedad de las observaciones se calcula a partir de last_seen, así que puede filtrar sin tener que hacer cálculos con fechas.

Valores permitidos: current (observado en el último día), recent (la última semana), stale (los últimos 90 días), frozen (hace más de 90 días o nunca se ha observado).

is_vpn

Boolean. True if the classification is in {vpn, vpn_concentrator, corporate_vpn, commercial_vpn, vpn_hosting} (confirmed VPN endpoints). Does not include tor, relay, suspected_vpn, or vpn_suspect — tor/relay have dedicated booleans; suspected_vpn/vpn_suspect are corroboration-only signals that do not set is_vpn. This asymmetry with is_proxy is deliberate: suspected_proxy does set is_proxy, but suspected_vpn/vpn_suspect never set is_vpn.

is_proxy

Booleano. Es verdadero si la clasificación está en {proxy, datacenter_proxy, mobile_proxy, suspected_proxy}. No incluye los proxies residenciales (véase is_residential_proxy). Para buscar cualquier tipo de proxy, combine con is_proxy O is_residential_proxy.

is_tor

Booleano. Es True si la dirección IP es un nodo de salida de Tor (clasificación tor).

is_relay

Booleano. Es True si la clasificación es relay: un servicio de retransmisión que preserva la privacidad (por ejemplo, Apple Private Relay). Se diferencia de is_vpn: los servicios de retransmisión dirigen el tráfico de los usuarios a través de una salida gestionada por el proveedor, sin que el usuario pueda seleccionar el punto final.

is_hosting

Booleano. Es True si la dirección IP pertenece a un centro de datos o a un proveedor de alojamiento web.

is_cdn

Booleano. Es True si la dirección IP pertenece a una red de distribución de contenidos.

is_residential_proxy

Boolean. True if the classification is in {residential_proxy, residential_proxy_likely, residential_proxy_mobile}. Mutually exclusive with is_proxy; use the more specific booleans below to filter further.

is_residential_proxy_high_confidence

Booleano. Es verdadero si classification == residential_proxy (el nivel de precisión ≥85 %). Subconjunto de is_residential_proxy.

is_residential_proxy_mobile

Booleano. Verdadero si classification == residential_proxy_mobile: se han detectado direcciones IP de operadores de telefonía móvil como proxies. Subconjunto de is_residential_proxy.

is_open_proxy

Booleano. Es True cuando la dirección IP aparece en una lista pública de proxies abiertos. Se diferencia de «is_proxy»: todo proxy abierto es también un proxy, pero la mayoría de los proxies no figuran en las listas públicas.

is_corporate_vpn

Boolean. Es True si la IP corresponde a una VPN de tipo dispositivo (Fortinet, Pulse Secure, Cisco AnyConnect, etc.). Subindicador de is_vpn.

risk_score

Número entero comprendido entre [0, 100]. Se calcula como confidence × 100, con un aumento de +10 para los tipos de clasificación de alto riesgo.

asn

Número entero o nulo. Número del sistema autónomo que anuncia la dirección IP.

asn_org

Cadena de caracteres o valor nulo. Nombre de la organización registrada para el ASN.

cdn_operator

Cadena o nulo. Marca normalizada del operador de CDN (en minúsculas), p. ej., akamai, fastly, cloudflare, aws_cloudfront. Solo puede ser distinto de nulo cuando classification == cdn.

asn_abuse

Objeto o nulo. Puntuación de abusos a nivel de ASN. Disponible en todos los planes; los planes Pro y superiores incluyen el desglose completo:

abuse_score — número entero de 0 a 100, nivel de abuso para este ASN (todos los niveles).

abuse_level — cadena: low, moderate, high, critical(todos los niveles).

flagged_ratio — número real entre 0,0 y 1,0; proporción de direcciones IP marcadas en el ASN (plan Pro y superiores).

flagged_ip_count — número entero, número de direcciones IP marcadas (versiones Pro y superiores).

total_announced_ips — número entero, total de direcciones IP anunciadas por este ASN (plan Pro y superiores).

metadata

Objeto. Señales de detección adicionales y datos de enriquecimiento (todas las claves son opcionales):

raw_score — reservado; valor nulo en todos los planes actuales.

señales: reservadas; sin disponibilidad en ningún plan actualmente.

dns_enrichment — objeto, registros PTR de DNS e historial de RDNS.

tls_enrichment — objeto, análisis de certificados TLS.

observed_location

Objeto o nulo. Datos geográficos, solo en la versión Enterprise; nulo cuando no hay datos de ubicación observada disponibles. Claves:

exit_country — cadena o nulo; código de país ISO 3166-1 alfa-2 de la IP de salida.

user_countries — matriz de cadenas o valor nulo; países en los que se han detectado usuarios con esta dirección IP.

user_country_count — número entero o nulo; número de países distintos de los usuarios.

observed_lat / observed_lon — número o nulo, coordenadas del punto de salida observado.

observed_countries — matriz de cadenas de caracteres; países en los que se ha observado este concentrador.

observation_readings — cadena de texto o nulo, metadatos sobre las observaciones.

Acceso gratuito

Tras registrarte, obtendrás automáticamente un plan de suscripción gratuito limitado a 1.000 consultas.

Límite de solicitudes

Las solicitudes a la API están sujetas a un límite de frecuencia por clave de API en una ventana móvil de 60 segundos. El límite depende de su plan de suscripción:

Introducción y búsquedas gratuitas tras el registro

120 solicitudes/min

Starter

120 solicitudes/min

Pro

150 solicitudes/min

Escala

250 solicitudes/min.

Business

500 solicitudes/min.

Enterprise

10 000 solicitudes por minuto (el mismo límite fijo para todas las claves Enterprise)


Los créditos mensuales para consultas son independientes y se indican en la página de tarifas.

Si supera su límite, la API devuelve un código de estado HTTP 429 con la información de error estándar y los encabezados Retry-After y X-RateLimit-Reset; espere unos segundos a Retry-After antes de volver a intentarlo.

{"error": {"code": "rate_limited", ...}}

Esta API también está disponible con un equilibrador de carga específico y un punto final premium para permitir consultas más rápidas como parte de nuestros servicios Premium API y paquetes API Enterprise.