Device-Analyze API — Detekcia User-Agent | YEB

Zistite prehliadač, operačný systém, typ zariadenia a boty z ľubovoľného User-Agent reťazca. Poháňajte analytiku v reálnom čase, A/B cielenie a filtrovanie botov bez cookies.

Čo môžete robiť?
Analytika v reálnom čase

Rozdeľte prevádzku podľa zariadenia a prehliadača bez cookies.

Inteligentné A/B cielenie

Servírujte rôzne rozloženia mobilným vs. desktopovým používateľom.

Filtrovanie botov

Detekujte škodlivé crawlery napodobňujúce legitímne prehliadače.

Vyskúšať naživo
99.9 % Dostupnosť
93.4ms Odpoveď
20 req/s
0.002 Kredity / požiadavka

Inspect UA


POST https://api.yeb.to/v1/device-analyze
ParameterTypPovinnýPopis
api_key string áno Your API key
ua string voliteľný User-Agent string (defaults to caller UA)

Príklad

curl -X POST https://api.yeb.to/v1/device-analyze \
  -H "Content-Type: application/json" \
  -d '{
  "api_key": "YOUR_KEY",
  "ua"     : "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)..."
}'

Príklad odpovede

{
  "data": {
    "ua_string": "Mozilla/5.0 …",
    "browser": { "name": "Mobile Safari", "version": "17.0" },
    "engine":  { "name": "WebKit", "version": "617" },
    "os":      { "name": "iOS", "version": "17.0" },
    "device":  { "type": "mobile", "brand": "Apple", "model": "iPhone" },
    "is_mobile": true,
    "is_tablet": false,
    "is_bot": false,
    "is_desktop": false
  }
}
{"error":"Missing User-Agent string","code":422}

Kódy odpovedí

KódPopis
200 SuccessPožiadavka spracovaná OK.
400 Bad RequestValidácia vstupu zlyhala.
401 UnauthorizedChýbajúci / nesprávny API kľúč.
403 ForbiddenKľúč neaktívny alebo nepovolený.
429 Rate LimitPríliš veľa požiadaviek.
500 Server ErrorNeočakávaná chyba.

Inspect

device-analyze 0.0020 credits

Parameters

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

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Device-Analyze API — Detekcia User-Agent | YEB — Practical Guide

A hands-on guide to classifying browsers and devices from User-Agent strings. Learn when to send the UA, how to read the output, and what decisions to make in production (security, analytics, UX).

#What Device-Analyze solves

This endpoint parses a User-Agent (UA) string and returns browser, engine, OS, device and bot signals, plus convenient booleans (is_mobile, is_desktop, …). Use it to tailor UX (mobile vs desktop layouts), segment analytics, or flag suspicious UAs.

Works even if you don’t send ua: the API falls back to the current request’s User-Agent header.

#Endpoints & when to use them

# POST /v1/device-analyze

  • Best for: All UA parsing use-cases. Single, simple endpoint.
  • How it works: Provide a ua string (optional). If omitted, we read the request header.
  • Common uses: Feature flags (e.g., disable heavy effects on mobile), funnel analysis, anti-fraud heuristics.

#Quick start

curl -X POST "https://api.yeb.to/v1/device-analyze" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: <YOUR_API_KEY>" \
  -d '{
    "api_key": "<YOUR_API_KEY>",
    "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36"
  }'
// JS Fetch example (Node/Browser)
await fetch("https://api.yeb.to/v1/device-analyze", {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "X-API-Key": "<YOUR_API_KEY>"
  },
  body: JSON.stringify({
    api_key: "<YOUR_API_KEY>",
    ua: navigator.userAgent // or a server-provided UA
  })
}).then(r => r.json()).then(console.log);

#Parameters that actually matter

Param Required Practical guidance Why it matters
ua No Send the exact UA you want analyzed. If omitted, we’ll use the request header. Gives you control (e.g., batch-analyze stored logs) and avoids proxy/header quirks.
api_key or X-API-Key Yes Either include in JSON payload or in header (preferred: header). Authentication. Header keeps keys out of logs more safely.

#Reading & acting on responses

You typically read data.browser, data.os, data.device, and boolean flags like is_mobile.

{
  "data": {
    "ua_string": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ... Chrome/141.0.0.0 Safari/537.36",
    "browser": { "name": "Chrome", "version": "141.0.0.0", "vendor": null },
    "engine":  { "name": "Blink",  "version": null },
    "os":      { "name": "Windows","version": "10.0" },
    "device":  { "type": "desktop","brand": null,"model": null },
    "bot": null,
    "is_mobile": false,
    "is_tablet": false,
    "is_bot": false,
    "is_desktop": true
  },
  "response_code": 200,
  "response_time_ms": 118
}

#Key signals & decisions

  • is_mobile / is_tablet / is_desktop — pick layout, image sizes, feature flags.
  • bot object — treat as crawler: skip animations, block login, different rate limits.
  • browser.version — gate advanced features (e.g., WebGPU) behind minimum versions.
  • device.type — “mobile”, “tablet”, “desktop”, etc. for coarse segmentation.

#Errors you might see

HTTPWhenWhat to do
422 UA missing and no User-Agent header. Send ua explicitly or ensure your proxy forwards the header.
401/403 Invalid/missing API key. Place the key in X-API-Key header.

#Practical recipes

  • Mobile-first UI: if is_mobile → reduce bundle, enable compact nav, lazy-load heavy widgets.
  • Fraud hardening: if is_bot or UA looks impossible (e.g., iOS + Edge legacy) → challenge or block.
  • Analytics buckets: group by device.type and os.name for clean dashboards.

#Troubleshooting & field notes

  1. Empty vendor/version: some UA strings are intentionally reduced. Don’t fail hard; fall back to booleans.
  2. Proxy chains: ensure your edge forwards User-Agent unchanged if you rely on header fallback.
  3. Batch analysis: always pass ua explicitly to avoid environment/header differences.

#More response examples

Android Mobile (Chrome)
{
  "data": {
    "ua_string": "Mozilla/5.0 (Linux; Android 10; K) ... Chrome/138.0.0.0 Mobile Safari/537.36",
    "browser": { "name": "Chrome", "version": "138.0.0.0", "vendor": null },
    "engine":  { "name": "Blink", "version": null },
    "os":      { "name": "Android", "version": "10" },
    "device":  { "type": "mobile", "brand": null, "model": null },
    "bot": null,
    "is_mobile": true,
    "is_tablet": false,
    "is_bot": false,
    "is_desktop": false
  }
}

#API Changelog

2025-10-20
Normalized bot details (name, category, url) and hardened UA fallback to request header when no ua param is sent.
2025-10-15
Improved OS / device detection for Android 9–13 and desktop Linux distributions; added convenience booleans.
2025-10-05
Initial public release of Device-Analyze v1.

Často kladené otázky

Opiera sa o open source databázu WhichBrowser, aktualizovanú týždenne pre nové zariadenia a motory.

Nie – hashujeme ich pre metriky; surová hodnota sa okamžite po parsovaní zahodí.

Áno. Každá požiadavka, aj tá s chybou, spotrebúva kredity. Vaše kredity sú viazané na počet požiadaviek, bez ohľadu na úspech alebo neúspech. Ak je chyba jasne spôsobená problémom platformy na našej strane, obnovíme dotknuté kredity (bez peňažných refundácií).

Kontaktujte nás na [email protected]. Spätnú väzbu berieme vážne—ak je váš report chyby alebo žiadosť o funkciu zmysluplná, môžeme API rýchlo opraviť alebo vylepšiť a poskytnúť vám 50 bezplatných kreditov ako poďakovanie.

Závisí od API a niekedy aj od endpointu. Niektoré endpointy používajú dáta z externých zdrojov, ktoré môžu mať prísnejšie limity. Limity tiež vynucujeme, aby sme zabránili zneužitiu a udržali stabilitu platformy. Konkrétny limit pre každý endpoint nájdete v dokumentácii.

Fungujeme na kreditovom systéme. Kredity sú predplatené, nevratné jednotky, ktoré míňate na API volania a nástroje. Kredity sa spotrebúvajú FIFO (najstaršie prvé) a sú platné 12 mesiacov od dátumu nákupu. Dashboard zobrazuje dátum každého nákupu a jeho expirácie.

Áno. Všetky zakúpené kredity (vrátane zlomkových zostatkov) sú platné 12 mesiacov od nákupu. Nevyužité kredity automaticky expirujú a sú trvalo vymazané na konci obdobia platnosti. Expirované kredity nemožno obnoviť ani previesť na hotovosť alebo inú hodnotu. Prechodné pravidlo: kredity zakúpené pred 22. 9. 2025 sa považujú za zakúpené 22. 9. 2025 a expirujú 22. 9. 2026 (pokiaľ nebola pri nákupe uvedená skoršia expirácia).

Áno—v rámci obdobia platnosti. Nevyužité kredity zostávajú dostupné a prevádzajú sa z mesiaca na mesiac, kým neexpirujú 12 mesiacov po nákupe.

Kredity sú nevratné. Kupujte len to, čo potrebujete—vždy si môžete dobiť neskôr. Ak chyba na strane platformy spôsobí neúspešné strhnutie, môžeme po prešetrení obnoviť dotknuté kredity. Žiadne peňažné refundácie.

Ceny sú stanovené v kreditoch, nie v dolároch. Každý endpoint má svoju vlastnú cenu—pozrite si odznačok „Kredity / požiadavka" vyššie. Vždy presne viete, koľko míňate.
← Späť na API