Agentscan
API de Agentscan
Clasifica una solicitud como humano, bot conocido, agente de IA o automatización maliciosa.
Clasificar una solicitud
Parámetros
- ipstringObligatorio
IP del cliente vista en tu edge.
- user_agentstring
Cabecera User-Agent de la solicitud.
- ja4string
Huella TLS JA4 del cliente.
- headersobject
Cabeceras de la solicitud, para la comprobación de coherencia.
- headless_flagsobject
Indicios de automatización recogidos en el navegador, como webdriver.
- request_idstring
Tu propio id para la solicitud, guardado con el veredicto.
Campos de la respuesta
- classstring
human, known_bot, ai_agent o malicious_automation.
- confidencenumber
Confianza de 0 a 1.
- actionstring
Acción recomendada: allow, flag o block.
- signalsobject
Las pruebas del veredicto, por señal.
curl -X POST https://ipscanner.io/v1/agentscan/check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ip": "203.0.113.7",
"user_agent": "Mozilla/5.0 (X11; Linux x86_64) HeadlessChrome/126.0.0.0",
"ja4": "t13d1516h2_8daaf6152771_02713d6af862",
"headers": {
"accept-language": "en-US"
}
}'{
"class": "malicious_automation",
"confidence": 0.91,
"action": "block",
"signals": {
"network_origin": "datacenter",
"anonymized": false,
"headless": true,
"header_consistency": "mismatch",
"allowlist_verified": false,
"ja4": "t13d1516h2_8daaf6152771_02713d6af862"
}
}Clasificar líneas de log
Parámetros
- linesobject[]Obligatorio
Hasta 25.000 líneas de log analizadas, cada una con número de línea e ip.
Campos de la respuesta
- submittedinteger
Elementos recibidos.
- processedinteger
Líneas clasificadas.
- failedinteger
Líneas que no se pudieron clasificar.
- truncatedboolean
True cuando la ejecución se detuvo antes del final.
- byClassobject
Número de resultados por clase.
- resultsarray
Un veredicto o error por línea.
curl -X POST https://ipscanner.io/v1/agentscan/batch \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"lines": [
{
"line": 1,
"ip": "66.249.66.1",
"user_agent": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
},
{
"line": 2,
"ip": "203.0.113.7",
"user_agent": "python-requests/2.32.3"
}
]
}'{
"submitted": 2,
"processed": 2,
"failed": 0,
"truncated": false,
"reason": "",
"byClass": {
"known_bot": 1,
"malicious_automation": 1
},
"results": [
{
"line": 1,
"ip": "66.249.66.1",
"class": "known_bot",
"confidence": 0.99,
"action": "allow"
},
{
"line": 2,
"ip": "203.0.113.7",
"class": "malicious_automation",
"confidence": 0.84,
"action": "block"
}
],
"asOf": "2026-10-06T14:05:00Z"
}Verificar un crawler
Parámetros
- ipstringObligatorio
IP de la que vino la solicitud del crawler.
- botstring
Slug del crawler a verificar, como googlebot.
- user_agentstring
User-Agent a verificar en lugar de un slug de bot.
Campos de la respuesta
- outcomestring
verified, spoofed o unverifiable.
- methodstring
Cómo se verifica el crawler, como ip-list+reverse-dns.
- crawlerstring
Nombre visible del crawler.
- summarystring
Resultado de la comprobación en una frase.
- checksarray
Cada comprobación ejecutada, con su estado.
- hostnamestring
Nombre DNS inverso de la IP.
- checkedAtstring
Cuándo se hizo la comprobación.
curl -X POST https://ipscanner.io/v1/agentscan/verify \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ip":"66.249.66.1","bot":"googlebot"}'{
"ip": "66.249.66.1",
"slug": "googlebot",
"crawler": "Googlebot",
"outcome": "verified",
"method": "ip-list+reverse-dns",
"summary": "Address is in Google's published Googlebot ranges and reverse DNS confirms it.",
"checks": [
{
"name": "published_range",
"status": "pass",
"detail": "66.249.66.0/27"
},
{
"name": "reverse_dns",
"status": "pass",
"detail": "crawl-66-249-66-1.googlebot.com"
}
],
"networkOrigin": "hosting",
"anonymized": false,
"asn": "AS15169",
"asnName": "GOOGLE",
"country": "US",
"hostname": "crawl-66-249-66-1.googlebot.com",
"docs": "https://developers.google.com/search/docs/crawling-indexing/verifying-googlebot",
"checkedAt": "2026-10-06T14:05:00Z"
}Listar los permitidos
Campos de la respuesta
- agents[].identstring
Identificador del crawler o agente.
- agents[].typestring
search, ai_crawler o partner.
- agents[].verificationMethodstring
Cómo se asocia una solicitud a esta entrada.
- agents[].customerIdinteger | null
Id de tu cuenta en entradas que añadiste; null en las globales.
curl https://ipscanner.io/v1/agentscan/allowlist \
-H "Authorization: Bearer YOUR_API_KEY"{
"agents": [
{
"id": 1,
"ident": "googlebot",
"type": "search",
"verificationMethod": "reverse_dns:googlebot.com,google.com",
"customerId": null,
"createdAt": "2026-03-01T00:00:00Z"
},
{
"id": 42,
"ident": "partnerbot",
"type": "partner",
"verificationMethod": "ua_match",
"customerId": 17,
"createdAt": "2026-09-12T08:30:00Z"
}
]
}Clasificar tu propia conexión
Parámetros
- ipstring
Sustituye la IP. Por defecto, la de quien llama.
- user_agentstring
Cabecera User-Agent de la solicitud.
- headersobject
Cabeceras de la solicitud, para la comprobación de coherencia.
- ja4string
Huella TLS JA4 del cliente.
Campos de la respuesta
- ipstring
Dirección IP comprobada.
- ja4Sourcestring
Origen de la huella: edge, client o unavailable.
- classstring
human, known_bot, ai_agent o malicious_automation.
- confidencenumber
Confianza de 0 a 1.
- actionstring
Acción recomendada: allow, flag o block.
- signalsobject
Las pruebas del veredicto, por señal.
- meteredboolean
Siempre false: las consultas sobre tu propia cuenta no gastan créditos.
curl -X POST https://ipscanner.io/v1/agentscan/self \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'{
"ip": "203.0.113.42",
"userAgent": "curl/8.7.1",
"ja4": "t13d4907h2_0d8feac7bc37_7395dae3b2f3",
"ja4Source": "edge",
"class": "ai_agent",
"confidence": 0.62,
"action": "flag",
"signals": {
"network_origin": "residential_clean",
"headless": false,
"ai_ident": false
},
"metered": false,
"asOf": "2026-10-06T14:05:00Z"
}