Recherche groupée

Classez jusqu'à 100 adresses IPv4 en une seule opération. Destiné aux pipelines de lutte contre la fraude, de gestion des risques et de modération de contenu traitant des pics de trafic.

API endpoint

PUBLICATION https://vpn-proxy-detection.whoisxmlapi.com/api/v1/ip/batch

L'API attend que les paramètres soient encodés au format JSON dans le corps de chaque requête.

Exemple de requête CURL

curl https://vpn-proxy-detection.whoisxmlapi.com/api/v1/ip/batch -X POST -H "Content-Type: application/json" -d '{"apiKey": "YOUR_API_KEY", "ips": ["8.8.8.8", "1.1.1.1", "185.220.101.1"]}'

Exemple de corps de requête POST

{
    "apiKey": "YOUR_API_KEY",
    "ips": [
        "8.8.8.8",
        "1.1.1.1",
        "185.220.101.1"
    ],
    "min_confidence": 0.5
}

L'activation de votre compte peut prendre jusqu'à une minute après votre inscription.

Paramètres d'entrée

apiKey

Obligatoire. Récupérez votre clé API personnelle sur la page « Mes produits ».

ips

Obligatoire. Tableau de chaînes de caractères.

Liste des adresses IPv4 à classer. 100 entrées maximum par requête.

min_confidence

Facultatif. Flottant.

Seules les attributions dont le niveau de confiance du signal est supérieur ou égal à cette valeur sont renvoyées.

Valeurs autorisées : [0, 1].

Valeur par défaut : 0.

Les clés API « enfant » d'un compte parent-enfant fonctionnent de la même manière : un appel effectué avec une clé « enfant » permet d'obtenir les champs du forfait de l'abonnement parent.

Exemple de résultat

{
    "results": [
        {
            "ip": "1.1.1.1",
            "network": "1.1.1.0\/24",
            "classification": "cdn",
            "provider": "Cloudflare",
            "confidence": 0.97,
            "source": "asn_classification",
            "detection_method": "asn_classification",
            "first_seen": "2024-01-15T08:30:00Z",
            "last_seen": "2026-05-20T11:04:00Z",
            "observation_count": 412,
            "hits_days_pct": null,
            "providers_num": 0,
            "confidence_decay": 0.0,
            "freshness_class": "current",
            "is_vpn": false,
            "is_proxy": false,
            "is_tor": false,
            "is_relay": false,
            "is_hosting": false,
            "is_cdn": true,
            "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": 97,
            "asn": 13335,
            "asn_org": "CLOUDFLARENET",
            "cdn_operator": "cloudflare",
            "asn_abuse": {
                "abuse_score": 4,
                "abuse_level": "low"
            },
            "metadata": {
                "raw_score": null,
                "signals": null,
                "dns_enrichment": null,
                "tls_enrichment": null
            },
            "observed_location": null
        },
        {
            "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-05-21T08: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": "ZWIEBELFREUNDE",
            "cdn_operator": null,
            "asn_abuse": {
                "abuse_score": 88,
                "abuse_level": "high"
            },
            "metadata": {
                "raw_score": null,
                "signals": null,
                "dns_enrichment": null,
                "tls_enrichment": null
            },
            "observed_location": null
        }
    ],
    "count": 2
}

Code: 200 OK.

Paramètres de sortie

results

Tableau. Un objet de classification par adresse IP d'entrée, dans le même ordre que la requête.

Chaque élément a la même structure que la réponse « single-IP ». Consultez la section « Envoi de requêtes » pour obtenir des descriptions champ par champ.

count

Entier. Nombre de classifications renvoyées. Correspond à la longueur du tableau ips d'entrée en cas de réussite.

Accès gratuit

Une fois votre inscription effectuée, vous bénéficiez automatiquement d'un abonnement gratuit limité à 1 000 requêtes.

Limites de débit

Les requêtes API sont soumises à une limitation de débit par clé API sur une fenêtre glissante de 60 secondes. Cette limite dépend de votre formule d'abonnement :

Présentation et recherches gratuites lors de l'inscription

120 requêtes/min

Starter

120 requêtes/min

Pro

150 requêtes/min

Échelle

250 requêtes/min

Entreprises

500 requêtes/min

Entreprise

10 000 requêtes/min (la même limite fixe pour chaque clé Enterprise)


Les crédits de requêtes mensuels sont facturés séparément et indiqués sur la page des tarifs.

Si vous dépassez votre limite, l'API renvoie un code d'erreur HTTP 429 accompagné de l'enveloppe d'erreur standard et des en-têtes Retry-After / X-RateLimit-Reset — veuillez patienter Retry-After secondes avant de réessayer.

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

Cette API est également disponible avec un équilibreur de charge dédié et un point de terminaison premium afin de permettre des requêtes plus rapides dans le cadre de nos services API Premium et de nos offres API Entreprise.