API pro analýzu zařízení

Rozeberte jakýkoli řetězec User-Agent na typ zařízení, OS, prohlížeč a údaje o verzi.

Co můžete dělat?
Real-time analytics

Break down traffic by device & browser without cookies.

Smart A/B targeting

Serve different layouts to mobile vs. desktop users.

Bot filtering

Detect bad crawlers spoofing legit browsers.

Vyzkoušet živě
99.9 % Dostupnost
93.5ms Odpověď
20 req/s
0.002 Kredity / požadavek

Inspect UA


POST https://api.yeb.to/v1/device-analyze
ParametrTypPovinnýPopis
api_key string ano Your API key
ua string volitelný User-Agent string (defaults to caller UA)

Pří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)..."
}'

Příklad odpovědi

{
  "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 odpovědí

KódPopis
200 SuccessPožadavek zpracován OK.
400 Bad RequestValidace vstupu selhala.
401 UnauthorizedChybějící / nesprávný API klíč.
403 ForbiddenKlíč neaktivní nebo nepovolený.
429 Rate LimitPříliš mnoho požadavků.
500 Server ErrorNeočekávaná chyba.

Inspect

device-analyze 0.0020 credits

Parameters

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

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

API pro analýzu zařízení — 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

Používáme rozšířený UA parser s více než 50 000 vzory. Pokrytí přesahuje 99 % reálných řetězců prohlížečů.

Ano – běžní crawleři, čtečky feedů a monitorovací agenti jsou identifikováni a označeni.

Ano. Každý požadavek, i ten s chybou, spotřebovává kredity. Vaše kredity jsou vázány na počet požadavků, bez ohledu na úspěch nebo neúspěch. Pokud je chyba jasně způsobena problémem platformy na naší straně, obnovíme dotčené kredity (bez peněžních refundací).

Kontaktujte nás na [email protected]. Zpětnou vazbu bereme vážně—pokud je váš report chyby nebo žádost o funkci smysluplná, můžeme API rychle opravit nebo vylepšit a poskytnout vám 50 bezplatných kreditů jako poděkování.

Závisí na API a někdy i na endpointu. Některé endpointy používají data z externích zdrojů, které mohou mít přísnější limity. Limity také vynucujeme, abychom zabránili zneužití a udrželi stabilitu platformy. Konkrétní limit pro každý endpoint naleznete v dokumentaci.

Fungujeme na kreditovém systému. Kredity jsou předplacené, nevratné jednotky, které utrácíte za API volání a nástroje. Kredity se spotřebovávají FIFO (nejstarší první) a jsou platné 12 měsíců od data nákupu. Dashboard zobrazuje datum každého nákupu a jeho expirace.

Ano. Všechny zakoupené kredity (včetně zlomkových zůstatků) jsou platné 12 měsíců od nákupu. Nevyužité kredity automaticky expirují a jsou trvale smazány na konci období platnosti. Expirované kredity nelze obnovit ani převést na hotovost nebo jinou hodnotu. Přechodné pravidlo: kredity zakoupené před 22. 9. 2025 se považují za zakoupené 22. 9. 2025 a expirují 22. 9. 2026 (pokud nebyla při nákupu uvedena dřívější expirace).

Ano—v rámci období platnosti. Nevyužité kredity zůstávají dostupné a převádějí se z měsíce na měsíc, dokud neexpirují 12 měsíců po nákupu.

Kredity jsou nevratné. Kupujte pouze to, co potřebujete—vždy si můžete dobit později. Pokud chyba na straně platformy způsobí neúspěšné stržení, můžeme po prošetření obnovit dotčené kredity. Žádné peněžní refundace.

Ceny jsou stanoveny v kreditech, ne v dolarech. Každý endpoint má svou vlastní cenu—viz odznak „Kredity / požadavek" výše. Vždy přesně víte, kolik utrácíte.
← Zpět na API