Bot-Detect API

Xác minh xem IP và User-Agent có thực sự thuộc về Googlebot, Bingbot, OpenAI SearchBot, Yahoo, Seznam, Meta (Facebook), Qwant, DuckDuckGo và các crawler chính khác hay không.

Lấy API Key Mua tín dụng
Bạn có thể làm gì?
7 nhà cung cấp bot tìm kiếm

Google, Bing, OpenAI, Yandex, DuckDuckGo, Qwant & Seznam.

Kiểm tra IP dựa trên CIDR

Dải IPv4/IPv6 của nhà cung cấp được tải về và lưu bộ nhớ đệm mỗi 12 giờ.

Kiểm tra Flood vs Bot

Xác định yêu cầu là crawler hợp lệ hay flood/scraper.

Dùng thử trực tiếp
99.9 % Thời gian hoạt động
369.5ms Phản hồi
20 req/s
0.003 Tín dụng / yêu cầu

Auto Detect – Which crawler is it?

POST https://api.yeb.to/v1/bot/detect/detect
Parameter Type Required Description
api_keystringyesYour API key
ipstringyesIPv4 / IPv6 to verify (defaults to caller IP)
uastringoptUser-Agent header (defaults to caller UA)

Example

curl -X POST https://api.yeb.to/v1/bot/detect/detect \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","ip":"66.249.66.1","ua":"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"}'

Response Example

{
  "result": { "vendor": "google", "ip_match": true }
}
{
  "error": "Unknown action 'foo'",
  "code": 422
}

Mã phản hồi

Mô tả
200 SuccessYêu cầu xử lý thành công.
400 Bad RequestXác thực đầu vào thất bại.
401 UnauthorizedAPI Key thiếu hoặc sai.
403 ForbiddenKey không hoạt động hoặc không được phép.
429 Rate LimitQuá nhiều yêu cầu.
500 Server ErrorLỗi không mong đợi.

Detect (auto)

bot/detect/detect 0.0030 credits

Parameters

API Key
query · string · required
IP address
query · string
User-Agent
query · string
Verify rDNS (FCrDNS)
query · boolean

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Check Googlebot

POST https://api.yeb.to/v1/bot/detect/google
ParameterTypeRequiredDescription
api_keystringyesYour API key
ipstringyesIP to verify
uastringoptUser-Agent header

Example

curl -X POST https://api.yeb.to/v1/bot/detect/google \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","ip":"66.249.66.1","ua":"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"}'

Response

{
  "result": { "vendor": "google", "ip_match": true }
}
{
  "result": { "vendor": "google", "ip_match": false }
}

Mã phản hồi

Mô tả
200 SuccessYêu cầu xử lý thành công.
400 Bad RequestXác thực đầu vào thất bại.
401 UnauthorizedAPI Key thiếu hoặc sai.
403 ForbiddenKey không hoạt động hoặc không được phép.
429 Rate LimitQuá nhiều yêu cầu.
500 Server ErrorLỗi không mong đợi.

Is Googlebot?

bot/detect/google 0.0010 credits

Parameters

API Key
query · string · required
IP address
query · string · required
User-Agent
query · string

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Check Bingbot

POST https://api.yeb.to/v1/bot/detect/bing
ParameterTypeRequiredDescription
api_keystringyesYour API key
ipstringyesIP to verify
uastringoptUser-Agent header

Example

curl -X POST https://api.yeb.to/v1/bot/detect/bing \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","ip":"157.55.39.250","ua":"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"}'

Response

{
  "result": { "vendor": "bing", "ip_match": true }
}
{
  "result": { "vendor": "bing", "ip_match": false }
}

Mã phản hồi

Mô tả
200 SuccessYêu cầu xử lý thành công.
400 Bad RequestXác thực đầu vào thất bại.
401 UnauthorizedAPI Key thiếu hoặc sai.
403 ForbiddenKey không hoạt động hoặc không được phép.
429 Rate LimitQuá nhiều yêu cầu.
500 Server ErrorLỗi không mong đợi.

Is Bingbot?

bot/detect/bing 0.0010 credits

Parameters

API Key
query · string · required
IP address
query · string · required
User-Agent
query · string

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Check OpenAI Search Bot

POST https://api.yeb.to/v1/bot/detect/openai
ParameterTypeRequiredDescription
api_keystringyesYour API key
ipstringyesIP to verify
uastringoptUser-Agent header

Example

curl -X POST https://api.yeb.to/v1/bot/detect/openai \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","ip":"20.15.240.186","ua":"Mozilla/5.0 (compatible; ChatGPT-User/1.0; +https://openai.com/bot)"}'

Response

{
  "result": { "vendor": "openai", "ip_match": true }
}
{
  "result": { "vendor": "openai", "ip_match": false }
}

Mã phản hồi

Mô tả
200 SuccessYêu cầu xử lý thành công.
400 Bad RequestXác thực đầu vào thất bại.
401 UnauthorizedAPI Key thiếu hoặc sai.
403 ForbiddenKey không hoạt động hoặc không được phép.
429 Rate LimitQuá nhiều yêu cầu.
500 Server ErrorLỗi không mong đợi.

Is OpenAI bot?

bot/detect/openai 0.0010 credits

Parameters

API Key
query · string · required
IP address
query · string · required
User-Agent
query · string

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Check YandexBot

POST https://api.yeb.to/v1/bot/detect/yandex
ParameterTypeRequiredDescription
api_keystringyesYour API key
ipstringyesIP to verify
uastringoptUser-Agent header

Example

curl -X POST https://api.yeb.to/v1/bot/detect/yandex \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","ip":"5.45.207.1","ua":"Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"}'

Response

{
  "result": { "vendor": "yandex", "ip_match": true }
}
{
  "result": { "vendor": "yandex", "ip_match": false }
}

Mã phản hồi

Mô tả
200 SuccessYêu cầu xử lý thành công.
400 Bad RequestXác thực đầu vào thất bại.
401 UnauthorizedAPI Key thiếu hoặc sai.
403 ForbiddenKey không hoạt động hoặc không được phép.
429 Rate LimitQuá nhiều yêu cầu.
500 Server ErrorLỗi không mong đợi.

Is YandexBot?

bot/detect/yandex 0.0010 credits

Parameters

API Key
query · string · required
IP address
query · string · required
User-Agent
query · string

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Check DuckDuckBot

POST https://api.yeb.to/v1/bot/detect/duck
ParameterTypeRequiredDescription
api_keystringyesYour API key
ipstringyesIP to verify
uastringoptUser-Agent header

Example

curl -X POST https://api.yeb.to/v1/bot/detect/duck \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","ip":"20.191.45.1","ua":"DuckDuckBot/1.0; (+http://duckduckgo.com/duckduckbot.html)"}'

Response

{
  "result": { "vendor": "duck", "ip_match": true }
}
{
  "result": { "vendor": "duck", "ip_match": false }
}

Mã phản hồi

Mô tả
200 SuccessYêu cầu xử lý thành công.
400 Bad RequestXác thực đầu vào thất bại.
401 UnauthorizedAPI Key thiếu hoặc sai.
403 ForbiddenKey không hoạt động hoặc không được phép.
429 Rate LimitQuá nhiều yêu cầu.
500 Server ErrorLỗi không mong đợi.

Is DuckDuckBot?

bot/detect/duck 0.0010 credits

Parameters

API Key
query · string · required
IP address
query · string · required
User-Agent
query · string

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Check QwantBot

POST https://api.yeb.to/v1/bot/detect/qwant
ParameterTypeRequiredDescription
api_keystringyesYour API key
ipstringyesIP to verify
uastringoptUser-Agent header

Example

curl -X POST https://api.yeb.to/v1/bot/detect/qwant \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","ip":"51.158.38.1","ua":"Mozilla/5.0 (compatible; QwantBot/2.1; +https://help.qwant.com/bot)"}'

Response

{
  "result": { "vendor": "qwant", "ip_match": true }
}
{
  "result": { "vendor": "qwant", "ip_match": false }
}

Mã phản hồi

Mô tả
200 SuccessYêu cầu xử lý thành công.
400 Bad RequestXác thực đầu vào thất bại.
401 UnauthorizedAPI Key thiếu hoặc sai.
403 ForbiddenKey không hoạt động hoặc không được phép.
429 Rate LimitQuá nhiều yêu cầu.
500 Server ErrorLỗi không mong đợi.

Is QwantBot?

bot/detect/qwant 0.0010 credits

Parameters

API Key
query · string · required
IP address
query · string · required
User-Agent
query · string

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Check SeznamBot

POST https://api.yeb.to/v1/bot/detect/seznam
ParameterTypeRequiredDescription
api_keystringyesYour API key
ipstringyesIP to verify
uastringoptUser-Agent header

Example

curl -X POST https://api.yeb.to/v1/bot/detect/seznam \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","ip":"77.75.76.3","ua":"Mozilla/5.0 (compatible; SeznamBot/4.0; +https://napoveda.seznam.cz/cz/search/bot/)"}'

Response

{
  "result": { "vendor": "seznam", "ip_match": true }
}
{
  "result": { "vendor": "seznam", "ip_match": false }
}

Mã phản hồi

Mô tả
200 SuccessYêu cầu xử lý thành công.
400 Bad RequestXác thực đầu vào thất bại.
401 UnauthorizedAPI Key thiếu hoặc sai.
403 ForbiddenKey không hoạt động hoặc không được phép.
429 Rate LimitQuá nhiều yêu cầu.
500 Server ErrorLỗi không mong đợi.

Is SeznamBot?

bot/detect/seznam 0.0010 credits

Parameters

API Key
query · string · required
IP address
query · string · required
User-Agent
query · string

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Bot-Detect API — Practical Guide

A hands-on guide to using Bot-Detect API in production: what each endpoint does, when to use it, the parameters that truly matter, and how to interpret responses to make the right decision.

#What Bot-Detect solves

This API verifies whether an IP truly belongs to an official crawler (e.g., Googlebot, Bingbot) instead of someone claiming to be a bot via User-Agent. It’s designed for abuse prevention, SEO safety (don’t block real bots), and traffic classification (bill bots differently, slow them down, or allow them).

#Endpoints and when to use them

#POST /v1/bot/detect — Auto-detect

  • Best for: General checks when you don’t know the vendor in advance.
  • How it works: If a ua is provided, we try to infer a vendor from it; otherwise we test your IP against all supported vendors’ ranges.
  • Typical use: Single integration point for all traffic (edge/middleware).

#POST /v1/bot/detect/{vendor} — Vendor-specific

  • Best for: When routing already knows a suspected vendor (e.g., URLs dedicated to Google).
  • Vendors: google, bing, duck, qwant, meta, yandex, seznam, openai.
  • Note: UA is informative; the final decision is IP-based (with optional reverse-DNS/ASN checks).

#Quick start

curl -X POST "https://api.yeb.to/v1/bot/detect" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{ "ip": "66.249.66.1", "ua": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" }'
# Vendor-specific (Google)
curl -X POST "https://api.yeb.to/v1/bot/detect/google" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{ "ip": "66.249.66.1" }'
// JS Fetch example
fetch('https://api.yeb.to/v1/bot/detect/bing', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer <YOUR_API_KEY>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ ip: '40.77.167.129' })
})
.then(r => r.json())
.then(console.log)
.catch(console.error);

#Parameters that actually matter

ParamRequiredWhat to pass in practiceWhy it matters
ip Yes Client IPv4/IPv6 you’re checking (edge-extracted, not X-Forwarded-For if you’re not sure). Final decision is IP-based. UA can be spoofed; IP ranges aren’t.
ua No Send it if you have it. We'll infer vendor and annotate ua_match, but IP stays decisive. Helps explain “why” (was the UA consistent with the result?).
verify_rdns No true if you want reverse-DNS → forward match (Google/Bing). Extra safety when you need to be 100% sure even if IP is inside a large range.
strict_rdns No true to fail if rDNS check doesn’t pass (only effective when verify_rdns is true). Force “OK = false” unless DNS proves it.
verify_asn No true to cross-check by ASN (if enabled server-side). Useful for vendors without official JSON ranges (e.g., Meta).
strict_asn No true to fail if ASN check doesn’t confirm. Pairs with verify_asn for stricter policies.
asn No Override vendor ASN when you know it (e.g., 32934 for Meta). Handy for custom policies or fast vendor updates.

#Reading and acting on responses

You mostly care about result.ok, result.vendor, and result.reason.

{
  "result": {
    "vendor": "google",
    "ok": true,
    "reason": "ip_match",                // or "ip_and_ua_match", etc.
    "ua_present": true,                  // UA was sent explicitly as param
    "ua_source": "param",                // "param" | "header" | null
    "ua_match": true,                    // UA pattern fit the vendor
    "ip_match": true,                    // IP fell inside vendor ranges
    "dns_verified": false,               // set true if verify_rdns passed
    "rdns_checked": false,
    "asn_verified": false,
    "asn_checked": false,
    "cidr_empty": false,                 // true if no ranges were available
    "ip_kind": "search_bot",             // Google only: search_bot | special_crawler | user_triggered_google | user_triggered_user | cdn_proxy | unknown
    "ip_kind_source": "json",            // "json" | "dns_ptr" | null
    "ptr": "crawl-66-249-66-1.googlebot.com"
  }
}

#Typical reason values

  • ip_and_ua_match — Best case: UA matched the vendor pattern and IP belongs to the vendor.
  • ip_match — Good: IP belongs to vendor ranges; UA was missing or didn’t match (still OK to treat as vendor).
  • ip_match_but_ua_not_matched — Likely a legitimate bot with a non-standard UA; don’t block.
  • ua_not_matched — UA said “I’m X”, but we couldn’t confirm it; check ip_match.
  • ip_not_in_vendor_ranges — Treat as non-vendor; consider bot throttling or block rules.

#Recommended actions

  • ok = true → Allow, skip WAF challenges, crawl-budget friendly rate-limit.
  • ok = false and UA claims vendor → 403 or serve simplified page; log for audit.
  • Need absolute certainty → Call with verify_rdns=true (+ strict_rdns=true if you want hard fail).

#Troubleshooting & field notes

  1. “UA says Googlebot but ok=false” → You saw a spoofed UA. Key is ip_match. Consider returning 403 or a lightweight page.
  2. Rapid vendor changes → Prefer vendor JSON ranges (handled automatically). If you need hard proof, enable verify_rdns.
  3. IPv6 traffic → Fully supported. If your edge strips IPv6, fix that first.
  4. False negatives for Meta → Use verify_asn=true (and asn=32934 if relevant) for stronger confirmation.
  5. Rate-limits → Respect 429 with exponential backoff. Keep request IDs in your logs.

#API Changelog

2025-10-20
Added Google IP classification (ip_kind, ip_kind_source, ptr) and improved vendor JSON ingestion (Google “special crawlers” and user-triggered fetchers).
2025-10-15
Introduced verify_rdns/strict_rdns and verify_asn/strict_asn flags for stricter verification flows.
2025-10-05
Vendor-specific endpoints stabilized (/google, /bing, /meta, /yandex, etc.). Response schema unified across vendors.

Câu hỏi thường gặp

Các nguồn cấp JSON của nhà cung cấp được lưu bộ nhớ đệm 12 giờ; Yandex & Seznam sử dụng CIDR chính thức tĩnh.

Bằng chứng thực sự là địa chỉ IP: một crawler chỉ được tin cậy khi IP của nó nằm trong dải CIDR chính thức do nhà cung cấp công bố. User-Agent có thể giúp ích, nhưng dễ giả mạo; các scraper thường sao chép chuỗi UA trong khi đến từ các mạng ngẫu nhiên. Nếu IP không nằm trong dải của nhà cung cấp, chúng tôi đánh dấu yêu cầu bất kể UA nói gì.

Có, cả mạng IPv4 và IPv6 đều được hỗ trợ đầy đủ.

Có. Mọi yêu cầu, kể cả những yêu cầu có lỗi, đều tiêu tốn tín dụng. Tín dụng của bạn được gắn với số lượng yêu cầu, bất kể thành công hay thất bại. Nếu lỗi rõ ràng do sự cố nền tảng từ phía chúng tôi, chúng tôi sẽ khôi phục tín dụng bị ảnh hưởng (không hoàn tiền mặt).

Liên hệ chúng tôi tại [email protected]. Chúng tôi coi trọng phản hồi—nếu báo cáo lỗi hoặc yêu cầu tính năng của bạn có ý nghĩa, chúng tôi có thể sửa hoặc cải thiện API nhanh chóng và tặng bạn 50 tín dụng miễn phí để cảm ơn.

Tùy thuộc vào API và đôi khi cả endpoint. Một số endpoint sử dụng dữ liệu từ nguồn bên ngoài, có thể có giới hạn nghiêm ngặt hơn. Chúng tôi cũng áp dụng giới hạn để ngăn chặn lạm dụng và duy trì sự ổn định của nền tảng. Kiểm tra tài liệu để biết giới hạn cụ thể cho mỗi endpoint.

Chúng tôi hoạt động theo hệ thống tín dụng. Tín dụng là các đơn vị trả trước, không hoàn lại mà bạn chi cho các cuộc gọi API và công cụ. Tín dụng được tiêu thụ theo FIFO (cũ nhất trước) và có hiệu lực 12 tháng kể từ ngày mua. Bảng điều khiển hiển thị ngày mua và ngày hết hạn của mỗi giao dịch.

Có. Tất cả tín dụng đã mua (bao gồm số dư lẻ) có hiệu lực 12 tháng kể từ ngày mua. Tín dụng chưa sử dụng tự động hết hạn và bị xóa vĩnh viễn khi kết thúc thời hạn hiệu lực. Tín dụng đã hết hạn không thể khôi phục hoặc chuyển đổi thành tiền mặt hay giá trị khác. Quy tắc chuyển tiếp: tín dụng mua trước ngày 22 tháng 9 năm 2025 được coi là mua vào ngày 22 tháng 9 năm 2025 và hết hạn vào ngày 22 tháng 9 năm 2026 (trừ khi ngày hết hạn sớm hơn được ghi khi mua).

Có—trong thời hạn hiệu lực. Tín dụng chưa sử dụng vẫn khả dụng và được chuyển từ tháng sang tháng cho đến khi hết hạn 12 tháng sau khi mua.

Tín dụng là không hoàn lại. Chỉ mua những gì bạn cần—bạn luôn có thể nạp thêm sau. Nếu lỗi nền tảng gây ra tính phí thất bại, chúng tôi có thể khôi phục tín dụng bị ảnh hưởng sau khi điều tra. Không hoàn tiền mặt.

Giá được tính bằng tín dụng, không phải đô la. Mỗi endpoint có chi phí riêng—xem huy hiệu "Tín dụng / yêu cầu" ở trên. Bạn luôn biết chính xác mình đang chi bao nhiêu.
← Quay lại API