API ipcheckerpro
API JSON gratuite et sans clé : géolocalisation IP, données ASN, indicateurs, listes noires, WHOIS et enregistrements DNS. 60 requêtes/minute, CORS, exemples.
Points d’accès
/api/v1/ipLimite: 60/minYour own address: location, network, type and flags (never cached).
curl -s https://ipcheckerpro.com/api/v1/ip/api/v1/ip/{ip}Limite: 60/minAny public IPv4/IPv6 address. Add whois=1 (RDAP record) and blacklists=1 (DNSBL checks, IPv4).
curl -s "https://ipcheckerpro.com/api/v1/ip/1.1.1.1?whois=1&blacklists=1"/api/v1/asn/{asn}Limite: 60/minAutonomous system details: name, country, type, prefix counts; whois=1 adds the registry record.
curl -s "https://ipcheckerpro.com/api/v1/asn/13335?whois=1"/api/v1/dns?name=&type=Limite: 30/minDNS records of a hostname (A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR).
curl -s "https://ipcheckerpro.com/api/v1/dns?name=example.com&type=MX"/api/v1/bulkNouveauLimite: 5/minUp to 100 addresses in one JSON array: country, city, ASN, type, Tor/hosting/DROP flags and risk score.
curl -s -X POST https://ipcheckerpro.com/api/v1/bulk -H "Content-Type: application/json" -d '["1.1.1.1","8.8.8.8"]'/api/v1/stats/liveNouveauLimite: 60/minAnonymous aggregates: checks in the last 24 h, countries seen, top networks, dataset versions.
curl -s https://ipcheckerpro.com/api/v1/stats/live/api/v1/stats/weeklyNouveauLimite: 60/minWeekly operating aggregates (last 7 days vs the 7 before): checks, languages, tools, countries, dataset freshness, cron and health history.
curl -s https://ipcheckerpro.com/api/v1/stats/weeklyObtenez une clé API gratuite
Les points d’accès sans clé autorisent 60 requêtes par minute et par IP. Une clé gratuite porte cette limite à 1 000 requêtes par jour et 300 par minute, comptées par clé et non par IP — assez pour une petite application, une tâche planifiée ou un tableau de bord. La clé vous est envoyée par e-mail et affichée une seule fois ci-dessous.
Nous stockons un hachage de la clé et votre e-mail afin que vous puissiez en demander la révocation. Pas de newsletter.
Utiliser la clé
Envoyez la clé dans l’en-tête X-API-Key (recommandé) ou comme paramètre de requête key sur tout point d’accès /api/v1/. Chaque réponse porte les en-têtes X-RateLimit-Limit et X-RateLimit-Remaining pour le quota journalier ; GET /api/v1/key renvoie la consommation du jour pour la clé présentée.
Quotas
| Sans clé | Avec une clé gratuite | |
|---|---|---|
| requêtes par minute et par IP | 60 (DNS: 30) | — |
| requêtes par minute et par clé | — | 300 |
| requêtes par jour et par clé | — | 1,000 |
| POST /api/v1/bulk | 5 batches/min · 100 IPs | 5 batches/min · 100 IPs |
Exemples
curl -s -H "X-API-Key: YOUR_KEY" \
"https://ipcheckerpro.com/api/v1/ip/1.1.1.1?checks=native,risk"
# usage of the key
curl -s -H "X-API-Key: YOUR_KEY" https://ipcheckerpro.com/api/v1/keyconst res = await fetch('https://ipcheckerpro.com/api/v1/ip/1.1.1.1', {
headers: { 'X-API-Key': 'YOUR_KEY' }
});
const data = await res.json();
console.log(data.location.country, data.network.name, res.headers.get('X-RateLimit-Remaining'));import requests
r = requests.get('https://ipcheckerpro.com/api/v1/ip/1.1.1.1',
headers={'X-API-Key': 'YOUR_KEY'}, timeout=10)
r.raise_for_status()
data = r.json()
print(data['location']['country'], data['classification'], r.headers['X-RateLimit-Remaining'])$ctx = stream_context_create(['http' => ['header' => "X-API-Key: YOUR_KEY\r\n"]]);
$json = file_get_contents('https://ipcheckerpro.com/api/v1/ip/1.1.1.1', false, $ctx);
$data = json_decode($json, true);
echo $data['location']['country'], ' ', $data['network']['name'];Vue d’ensemble
Description lisible par machine : /api/v1/openapi.json (OpenAPI 3.1).
L’API renvoie les mêmes données que le site web, au format JSON : la localisation, le réseau et la classification de n’importe quelle adresse IP, l’enregistrement de registre qui la concerne, le statut en liste noire, les détails de l’ASN et les enregistrements DNS. Elle ne nécessite ni clé ni inscription.
- URL de base :
https://ipcheckerpro.com/api/v1 - Format : JSON, UTF-8,
GETuniquement - Limites : 60 requêtes par minute et par adresse IP pour les points de terminaison IP et ASN, 30 par minute pour le point de terminaison DNS
- CORS : chaque réponse porte
Access-Control-Allow-Origin: *, les navigateurs peuvent donc l’appeler directement - Attribution : si vous affichez les données, indiquez « IP geolocation by DB-IP » avec un lien vers db-ip.com (voir Attribution ci-dessous)
Points de terminaison
GET /api/v1/ip
Renvoie le profil de l’adresse de l’appelant. La réponse est marquée Cache-Control: private, no-store, elle est donc toujours à jour.
curl -s https://ipcheckerpro.com/api/v1/ip
GET /api/v1/ip/{ip}
Renvoie le profil de n’importe quelle adresse IPv4 ou IPv6 publique. Paramètres de requête facultatifs :
whois=1ajoute un objetwhoiscontenant l’enregistrement de registre récupéré via RDAP.blacklists=1exécute les huit vérifications de listes noires DNS (IPv4 uniquement) et remplit l’objetblacklists.
Les réponses peuvent être mises en cache pendant 300 secondes. Les résultats de listes noires sont mis en cache de notre côté pendant une heure et les enregistrements de registre pendant 24 heures.
curl -s "https://ipcheckerpro.com/api/v1/ip/1.1.1.1?whois=1&blacklists=1"
GET /api/v1/asn/{asn}
Renvoie les détails d’un système autonome. Le numéro peut être donné avec ou sans le préfixe AS. Ajoutez whois=1 pour inclure l’enregistrement de registre dans un objet registry. Les réponses peuvent être mises en cache pendant une heure.
curl -s "https://ipcheckerpro.com/api/v1/asn/13335?whois=1"
GET /api/v1/dns?name=&type=
Renvoie les enregistrements DNS d’un nom d’hôte. type vaut A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA ou PTR ; la valeur par défaut est A. Les réponses peuvent être mises en cache pendant 60 secondes.
curl -s "https://ipcheckerpro.com/api/v1/dns?name=example.com&type=MX"
Structure de la réponse
Une requête IP réussie renvoie un objet avec les champs suivants. Les valeurs inconnues sont null. Les valeurs ci-dessous sont données à titre d’illustration ; exécutez la requête pour voir les données actuelles d’une adresse.
{
"ip": "1.1.1.1",
"version": 4,
"private": false,
"hostname": "one.one.one.one",
"location": {
"country_code": "AU",
"country": "Australia",
"region": "Queensland",
"city": "Brisbane",
"latitude": -27.4679,
"longitude": 153.028,
"timezone": "Australia/Brisbane",
"continent": "OC",
"eu": false
},
"network": {
"asn": 13335,
"name": "CLOUDFLARENET",
"prefix": "1.1.1.0/24",
"country_code": "US",
"type": "hosting"
},
"classification": "hosting",
"flags": {
"hosting": true,
"tor": false,
"vpn_provider": false,
"spamhaus_drop": null,
"datacenter": "Cloudflare",
"mobile": false
},
"blacklists": { "checked": 8, "listed": 0 },
"sources": {
"geolocation": "DB-IP Lite (CC BY 4.0)",
"asn": "iptoasn.com / DB-IP Lite"
}
}
Notes sur les champs :
versionvaut4ou6.privatevauttruepour les plages de bouclage, lien local et privées ; ces adresses n’ont nilocationninetwork.hostnameest l’enregistrement PTR (DNS inverse), ounull.network.typeest la classification du réseau déduite du nom de l’ASN et des listes publiques :isp,mobile,hosting,education,government,businessouunknown.classificationest le verdict global :residential,mobile,hosting,vpn,tor,education,government,business,privateouunknown.flags.spamhaus_dropest la plage DROP correspondante sous forme de chaîne, ounull.flags.datacenterest le nom du fournisseur correspondant dans la liste des centres de données, ounull.blacklistsvautnullsauf siblacklists=1a été fourni.whois(avecwhois=1) contienthandle,name,type,start,end,cidr,country,parent,status,entities,events,remarks,linksetregistry.
Une requête ASN renvoie asn, name, country_code, type, ipv4_prefixes, ipv4_addresses, ipv6_prefixes, prefixes_sample (jusqu’à 20 chaînes CIDR), registry (avec whois=1, sinon null) et source.
Une requête DNS renvoie name, type et records, un tableau d’objets { "name", "ttl", "value" }.
Erreurs
Les erreurs sont des objets JSON avec un code error et, en général, un message :
| Statut | error |
Signification |
|---|---|---|
| 400 | invalid_ip |
Le segment de chemin n’est pas une adresse IPv4 ou IPv6 valide |
| 400 | invalid_asn |
L’ASN n’est pas un nombre |
| 400 | invalid_query |
name n’est pas un nom d’hôte ou type n’est pas pris en charge |
| 404 | not_found |
Aucun préfixe annoncé n’est connu pour cet ASN |
| 429 | rate_limited |
Limite dépassée ; patientez puis réessayez |
Exemples
JavaScript (navigateur ou Node)
const res = await fetch("https://ipcheckerpro.com/api/v1/ip/8.8.8.8?whois=1");
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data.location.country, data.network.name, data.classification);
Python
import requests
r = requests.get("https://ipcheckerpro.com/api/v1/ip/8.8.8.8", params={"blacklists": 1}, timeout=10)
r.raise_for_status()
data = r.json()
print(data["location"]["country"], data["network"]["name"], data["blacklists"])
curl avec l’adresse de l’appelant
curl -s https://ipcheckerpro.com/api/v1/ip | jq '{ip, country: .location.country, type: .network.type}'
Attribution
Les données de géolocalisation proviennent de DB-IP Lite, sous licence Creative Commons Attribution 4.0. Si vous présentez des données de cette API à des utilisateurs, affichez le texte « IP geolocation by DB-IP » avec un lien vers https://db-ip.com à proximité des données. Les données ASN proviennent d’iptoasn.com (domaine public) et de DB-IP Lite. Les résultats de listes noires et de registre appartiennent à leurs opérateurs respectifs et sont renvoyés pour votre propre usage, non pour être redistribués sous forme de jeu de données.
Usage raisonnable
Les limites ci-dessus s’appliquent par adresse IP appelante. Si vous avez besoin de plus, mettez les réponses en cache de votre côté ; les données de localisation et de réseau d’une adresse changent rarement au cours d’une journée. N’utilisez pas l’API pour reconstituer une copie des bases de données sous-jacentes. Consultez les conditions d’utilisation pour l’ensemble des règles d’usage acceptable.
Évolutions
L’API est versionnée dans le chemin. Des champs peuvent être ajoutés aux réponses sans préavis ; les champs existants ne sont ni renommés ni supprimés au sein de v1. Les changements de limites, de points de terminaison ou de comportement sont annoncés sur cette page avant leur entrée en vigueur.