API

API de Reputación IP — REST API v1

Puntuación de abuso, listas negras, tipo VPN/proxy/Tor/hosting, ASN y ubicación de cualquier IPv4/IPv6 en una respuesta JSON; denuncie IP maliciosas y lleve la blocklist completa a su cortafuegos. Autenticación por clave, 1.000 solicitudes al día gratis.

curl -H "Key: YOUR_API_KEY" https://ip-db.com/api/v1/check/8.8.8.8
  • Sin tarjeta
  • IPv4 e IPv6
  • Autenticación por clave
Gratis / día 1.000 10.000 con correo verificado
Endpoints 4 check · report · blacklist · feed
Formatos 4 plain · cidr · json · csv
Fuentes 46 detrás de la puntuación

Qué devuelve la API

Reputación IP y puntuación de abuso

Puntuación de 0 a 100 con desglose: 46 feeds de amenazas, denuncias, DNSBL, historial y vecindario /24.

API de listas negras y blocklists

Cada lista coincidente por nombre; el conjunto completo como JSON paginado o texto plano para cortafuegos (EDL, Threat Feed).

Detección de proxy, VPN y Tor

networkType: residential, datacenter, vpn, tor, para controles de fraude en registros y pagos.

Plan gratuito

1.000 solicitudes al día, 10.000 con correo verificado. Sin tarjeta.

OpenAPI 3.1

/openapi.json, para Postman, generadores de código y agentes de IA como GPT Actions.

MCP

Servidor MCP remoto para Claude, ChatGPT y otros clientes MCP: https://ip-db.com/mcp

Autenticación

Genere una clave de API en su panel y envíela en cada solicitud mediante el encabezado Key (o el parámetro ?key=). Solo verá la clave al crearla — guárdela en un lugar seguro.

curl https://ip-db.com/api/v1/check/8.8.8.8 \ -H "Key: YOUR_API_KEY"

Si la clave falta o no es válida, todos los endpoints devuelven 401.

Límites

El límite es por cuenta, no por clave: todas sus claves comparten la misma cuota. Las cuentas sin verificar tienen 1.000 solicitudes diarias y las verificadas 10.000; /check y /report se cuentan por separado.

Las cuotas diarias se reinician cada día a las 00:00 (hora de Turquía, UTC+3), el mismo día que el contador «hoy» del panel. Los reportes (POST /report) tienen su propio contador y no consumen la cuota de consultas.

Endpoint Limit
GET /api/v1/check/<ip>1.000 – 10.000 / día
POST /api/v1/report1.000 – 10.000 / día (contador aparte)
GET /api/v1/blacklist60 /hora
GET /api/v1/feed.txt60 /hora

Atribución (opcional)

IP-DB es gratuito y lo seguirá siendo. Si muestra nuestros datos en un producto, panel o proyecto de código abierto, un enlace a ip-db.com en su documentación ayuda a sostener el servicio y a que llegue a más gente. Si su integración es pública, escríbanos y la incluiremos con gusto en la página de integraciones.

Consultar IP

GET/api/v1/check/<ip>

Devuelve el informe completo para la IP indicada: puntuación de confianza, ubicación, ASN, coincidencias en listas negras, resultados DNSBL y reportes de la comunidad.

curl
curl https://ip-db.com/api/v1/check/185.220.101.45 \ -H "Key: YOUR_API_KEY"
Python
import requests r = requests.get( "https://ip-db.com/api/v1/check/185.220.101.45", headers={"Key": "YOUR_API_KEY"}, ) data = r.json() print(data["abuseConfidenceScore"])
JavaScript
const res = await fetch("https://ip-db.com/api/v1/check/185.220.101.45", { headers: { Key: "YOUR_API_KEY" }, }); const data = await res.json(); console.log(data.abuseConfidenceScore);
Respuesta de Ejemplo— 200 OK
{ "ipAddress": "185.220.101.45", "ipVersion": 4, "isPrivate": false, "abuseConfidenceScore": 35, "scoreLabel": "low", "scoreBreakdown": { "feeds": 15, "reports": 20, "dnsbl": 0, "liftedListing": 0, "neighbourhood": 0 }, "liftedListing": null, "prefixNeighbourhood": { "block": "185.220.101.0/24", "listed": 3, "blockSize": 256, "percent": 1.2 }, "countryCode": "DE", "countryName": "Germany", "city": "Berlin", "asn": 208091, "asnOrg": "TOR-EXIT", "isp": "Contabo GmbH", "abuseContact": { "email": "abuse@contabo.de", "name": "Abuse Contact", "handle": "MNTR-CONTABO" }, "reportUrl": "https://ip-db.com/en/ip/185.220.101.1", "totalReports": 2, "distinctReporters": 2, "lastReportedAt": "2026-08-20T09:14:00+00:00", "blacklistSources": ["Tor Exit Nodes"], "dnsbl": [] }
FieldTypeDescription
ipAddressstringThe queried IP address
ipVersioninteger4or6
isPrivatebooleantrue for private/reserved ranges — other fields are not computed in that case
abuseConfidenceScoreinteger0–100confidence score
scoreLabelstringclean · low · suspicious · critical
scoreBreakdownobjectWhich evidence the score rests on: feeds, reports, dnsbl (live lookup), liftedListing (residual of a listing since lifted) and neighbourhood (state of the surrounding /24). Their sum is capped at 100.
liftedListingobject | nullPresent when the address left the lists within the last 60 days: delistedAt, priorScore, cycles, daysSince. null once the address is listed again — live matches govern then.
prefixNeighbourhoodobject | nullHow much of the surrounding /24 is listed; null for IPv6. A small share contributes nothing to the score.
countryCode / countryName / citystring | nullGeolocation; null when it cannot be resolved
asn / asnOrg / ispinteger/string | nullAutonomous system and network owner
abuseContactobject | nullThe network's abuse mailbox from its RDAP record (email, name, handle). null when the record names no contact in the "abuse" role.
totalReports / distinctReportersintegerCommunity report counts
lastReportedAtstring | nullISO 8601 UTC
blacklistSourcesstring[]Names of the automated threat feeds that matched
reportUrlstringEl informe público de IP-DB de esta dirección (en el idioma del titular de la clave). Enlazado en alertas o paneles, lleva a su equipo a la evidencia con un clic.
dnsblobject[]Only the DNSBL zones that returned a listing (zone, label, listed)

Reportar IP

POST/api/v1/report

Reporta una dirección IP por abuso. Los reportes repetidos de la misma cuenta contribuyen más a la puntuación de confianza.

curl
curl -X POST https://ip-db.com/api/v1/report \ -H "Key: YOUR_API_KEY" -H "Content-Type: application/json" \ -d '{"ip":"1.2.3.4","categories":["ssh_abuse","brute_force"],"comment":"Repeated SSH login attempts"}'
Example response— 201 Created
{ "success": true, "reportId": 4821 }

Reporte automáticamente las IP que bloquea

Si usa un WAF, fail2ban o un SIEM, puede reportar cada dirección que bloquea con una sola línea. Los reportes no consumen su cuota de consultas y mejoran la puntuación para todos los que ven al mismo atacante. Acción de ejemplo para fail2ban:

/etc/fail2ban/action.d/ipdb.conf
[Definition] actionban = curl -s -X POST https://ip-db.com/api/v1/report \ -H "Key: YOUR_API_KEY" \ -d "ip=<ip>" -d "categories=brute_force" \ -d "comment=fail2ban"

Después, añada ipdb junto a %(action_)s en la action del jail. Se aceptan igual campos de formulario y JSON.

FieldRequiredDescription
ipYesA public, non-private IPv4/IPv6 address
categoriesYesArray or comma-separated string; at least one valid category key(↓)
commentNoFree text — log excerpt, timestamps, etc.

Claves de categoría válidas:brute_force, port_scan, web_attack, ssh_abuse, spam, ddos, malware, fraud, phishing, exploit, vuln_scan, credential_stuffing, iot_abuse, web_spam, ransomware, cryptomining_abuse, bad_bot, open_proxy

Grupo de Lista Negra

GET/api/v1/blacklist

Devuelve el grupo de lista negra actual, agregado desde nuestras fuentes automáticas, de forma paginada.

ParamDefaultDescription
page11-indexed page number
limit100Rows per page (max 1000)
category—Filter to a single category (optional)

Valores válidos de category:hijacked_network, botnet_c2, malware_c2, malicious_activity, attack_source, aggregated_high_confidence, aggregated_medium_confidence, compromised_host, tor_exit

curl
curl "https://ip-db.com/api/v1/blacklist?limit=50&category=botnet_c2" \ -H "Key: YOUR_API_KEY"
Example response— 200 OK
{ "page": 1, "limit": 50, "total": 74268, "data": [ { "cidr": "185.220.101.0/24", "category": "tor_exit", "source": "Tor Exit Nodes", "lastSeen": "2026-08-23T13:47:00+00:00" } ] }

Feed de Texto Plano

GET/api/v1/feed.txt

Para dispositivos que esperan texto plano en lugar de JSON: una IP por línea. Las direcciones de mayor puntuación, redistribuibles y confirmadas por al menos dos fuentes; limitado por cuenta (más gratis a petición) y cuenta para su uso diario. La lista completa en bloque en /datasets. Se puede pegar directamente en el campo de URL de origen de Palo Alto External Dynamic Lists, FortiGate Threat Feed y similares. Autenticación mediante ?key= en la URL, ya que esas interfaces no permiten encabezados personalizados.

curl "https://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEY&category=tor_exit"
Example response— text/plain
152.32.225.117 160.250.132.238 190.171.189.85

Admite category, min_score y limit. Vea Integraciones para los pasos de configuración de Palo Alto y FortiGate.

OpenAPI & MCP

Toda la API está descrita como OpenAPI 3.1 en /openapi.json: impórtela en Postman, genere código cliente o añádala como GPT Action. Para Claude, ChatGPT, Cursor y otros clientes MCP hay un servidor MCP remoto sin clave en https://ip-db.com/mcp, con las herramientas check_ip, check_blacklists y domain_whois para dominios.

Preguntas frecuentes

¿La API de reputación IP es gratuita?

Sí. Con una clave gratuita, 1.000 solicitudes al día, y 10.000 tras verificar su correo. Sin tarjeta de crédito.

¿Qué devuelve la API?

Una puntuación de abuso de 0 a 100 con su desglose, las fuentes de listas negras que coinciden, entradas DNSBL, el tipo de red (residencial, hosting, VPN, Tor), ASN, ISP, geolocalización, el contacto de abuso de RDAP y el número de denuncias de la comunidad.

¿Sirve para detectar fraude?

Sí. networkType y abuseConfidenceScore bastan para decidir permitir, verificar o bloquear en registros, inicios de sesión y pagos; los umbrales se explican en la página de puntuación de fraude IP.

¿Cómo bloqueo IP en mi cortafuegos con ella?

/api/v1/feed.txt devuelve una blocklist en texto plano con una IP por línea; Palo Alto EDL, FortiGate Threat Feed, pfSense, OPNsense y MikroTik leen la URL directamente.

¿De dónde salen los datos?

De 46 fuentes abiertas de inteligencia de amenazas (cada una con su licencia en Fuentes de datos), denuncias de la comunidad y consultas DNSBL en directo. El conjunto se renueva cada 30 minutos.

¿Hay especificación OpenAPI y la pueden usar agentes de IA?

Sí. La especificación legible por máquina está en /openapi.json. Los agentes basados en ChatGPT, Claude o Gemini pueden llamar a la API con ella, y para clientes compatibles con MCP hay un servidor MCP en /mcp.

Códigos de Error

StatusMeaningResponse body
400Invalid IP, category, or missing field{"error": "Invalid IP address."}
401Key missing, invalid, or revoked{"error": "Invalid or revoked API key."}
429Daily/hourly limit exceeded{"error": "ratelimit exceeded", "limit": "1000 per 1 day", "resetsAt": "…"}