Bot-Detect API

Ellenőrizze, hogy egy IP-cím és User-Agent valóban a Googlebot, Bingbot, OpenAI SearchBot, Yahoo, Seznam, Meta (Facebook), Qwant, DuckDuckGo vagy más nagy crawlerekhez tartozik-e.

Mit tehetsz?
7 keresőbot-szolgáltató

Google, Bing, OpenAI, Yandex, DuckDuckGo, Qwant és Seznam.

CIDR-alapú IP-ellenőrzés

A szolgáltatók IPv4/IPv6 tartományai 12 óránként frissülnek és gyorsítótárazódnak.

Flood vs. Bot ellenőrzés

Meghatározza, hogy egy kérés legitim crawler vagy flood/scraper.

Élő próba
99.9 % Üzemidő
369.5ms Válasz
20 req/s
0.003 Kreditek / kérés

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
}

Válaszkódok

KódLeírás
200 SuccessKérés sikeresen feldolgozva.
400 Bad RequestBemeneti érvényesítés sikertelen.
401 UnauthorizedHiányzó / hibás API-kulcs.
403 ForbiddenKulcs inaktív vagy nem engedélyezett.
429 Rate LimitTúl sok kérés.
500 Server ErrorVáratlan hiba.

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 }
}

Válaszkódok

KódLeírás
200 SuccessKérés sikeresen feldolgozva.
400 Bad RequestBemeneti érvényesítés sikertelen.
401 UnauthorizedHiányzó / hibás API-kulcs.
403 ForbiddenKulcs inaktív vagy nem engedélyezett.
429 Rate LimitTúl sok kérés.
500 Server ErrorVáratlan hiba.

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 }
}

Válaszkódok

KódLeírás
200 SuccessKérés sikeresen feldolgozva.
400 Bad RequestBemeneti érvényesítés sikertelen.
401 UnauthorizedHiányzó / hibás API-kulcs.
403 ForbiddenKulcs inaktív vagy nem engedélyezett.
429 Rate LimitTúl sok kérés.
500 Server ErrorVáratlan hiba.

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 }
}

Válaszkódok

KódLeírás
200 SuccessKérés sikeresen feldolgozva.
400 Bad RequestBemeneti érvényesítés sikertelen.
401 UnauthorizedHiányzó / hibás API-kulcs.
403 ForbiddenKulcs inaktív vagy nem engedélyezett.
429 Rate LimitTúl sok kérés.
500 Server ErrorVáratlan hiba.

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 }
}

Válaszkódok

KódLeírás
200 SuccessKérés sikeresen feldolgozva.
400 Bad RequestBemeneti érvényesítés sikertelen.
401 UnauthorizedHiányzó / hibás API-kulcs.
403 ForbiddenKulcs inaktív vagy nem engedélyezett.
429 Rate LimitTúl sok kérés.
500 Server ErrorVáratlan hiba.

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 }
}

Válaszkódok

KódLeírás
200 SuccessKérés sikeresen feldolgozva.
400 Bad RequestBemeneti érvényesítés sikertelen.
401 UnauthorizedHiányzó / hibás API-kulcs.
403 ForbiddenKulcs inaktív vagy nem engedélyezett.
429 Rate LimitTúl sok kérés.
500 Server ErrorVáratlan hiba.

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 }
}

Válaszkódok

KódLeírás
200 SuccessKérés sikeresen feldolgozva.
400 Bad RequestBemeneti érvényesítés sikertelen.
401 UnauthorizedHiányzó / hibás API-kulcs.
403 ForbiddenKulcs inaktív vagy nem engedélyezett.
429 Rate LimitTúl sok kérés.
500 Server ErrorVáratlan hiba.

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 }
}

Válaszkódok

KódLeírás
200 SuccessKérés sikeresen feldolgozva.
400 Bad RequestBemeneti érvényesítés sikertelen.
401 UnauthorizedHiányzó / hibás API-kulcs.
403 ForbiddenKulcs inaktív vagy nem engedélyezett.
429 Rate LimitTúl sok kérés.
500 Server ErrorVáratlan hiba.

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.

Gyakran ismételt kérdések

A szolgáltatók JSON-feedjei 12 órára gyorsítótárazódnak; a Yandex és Seznam statikus hivatalos CIDR-eket használ.

Az igazi bizonyíték az IP-cím: egy crawler csak akkor megbízható, ha az IP-je a szolgáltató által közzétett hivatalos CIDR-tartományokba esik. A User-Agent segíthet, de könnyen hamisítható; a scraperek gyakran másolják a UA-karakterláncokat miközben véletlenszerű hálózatokról érkeznek. Ha az IP nem a szolgáltató tartományában van, megjelöljük a kérést, függetlenül attól, mit mond a UA.

Igen, mind az IPv4, mind az IPv6 hálózatok teljes mértékben támogatottak.

Igen. Minden kérés, még a hibás is, krediteket fogyaszt. A kreditjei a kérések számához kötöttek, függetlenül a sikertől vagy kudartól. Ha a hiba egyértelműen a platform oldalán lévő probléma miatt van, visszaállítjuk az érintett krediteket (készpénz-visszatérítés nincs).

Lépjen kapcsolatba velünk a [email protected] címen. Komolyan vesszük a visszajelzéseket—ha a hibajelentése vagy funkciókérése értelmes, gyorsan javíthatjuk vagy fejleszthetjük az API-t, és 50 ingyenes kreditet adunk köszönetképpen.

Az API-tól és néha az endponttól is függ. Egyes endpointok külső forrásokból származó adatokat használnak, amelyeknek szigorúbb korlátai lehetnek. Korlátokat is érvényesítünk a visszaélés megelőzése és a platform stabilitásának fenntartása érdekében. Az egyes endpointok pontos korlátját a dokumentációban találja.

Kreditrendszerrel működünk. A kreditek előre fizetett, nem visszatéríthető egységek, amelyeket API-hívásokra és eszközökre költ. A kreditek FIFO-elv szerint (a legrégebbiek először) fogynak, és a vásárlás dátumától számított 12 hónapig érvényesek. Az irányítópult minden vásárlás dátumát és lejáratát mutatja.

Igen. Az összes megvásárolt kredit (beleértve a töredék egyenlegeket) 12 hónapig érvényes a vásárlástól. A fel nem használt kreditek automatikusan lejárnak és véglegesen törlődnek az érvényességi időszak végén. A lejárt kreditek nem állíthatók vissza, és nem válthatók készpénzre vagy más értékre. Átmeneti szabály: a 2025. szept. 22. előtt vásárolt kreditek úgy kezelendők, mintha 2025. szept. 22-én vásárolták volna, és 2026. szept. 22-én járnak le (hacsak a vásárláskor nem volt korábbi lejárat megadva).

Igen—az érvényességi időszakon belül. A fel nem használt kreditek elérhetők maradnak és hónapról hónapra átvihetők, amíg 12 hónappal a vásárlás után le nem járnak.

A kreditek nem visszatéríthetők. Csak annyit vegyen, amennyire szüksége van—bármikor feltölthet később. Ha platformhiba okoz sikertelen terhelést, az érintett krediteket vizsgálat után visszaállíthatjuk. Nincs készpénz-visszatérítés.

Az árak kreditekben vannak megadva, nem dollárban. Minden endpointnak saját ára van—lásd a „Kreditek / kérés" jelvényt fentebb. Mindig pontosan tudni fogja, mennyit költ.
← Vissza az API-khoz