Device-Analyze API

Zbuloni shfletuesin, OS, pajisjen dhe bots nga çdo User-Agent.

Çfarë mund të bëni?
Analitikë në kohë reale

Ndani trafikun sipas pajisjes dhe shfletuesit pa cookies.

Synim i zgjuar A/B

Shërbeni faqosje të ndryshme përdoruesve celularë vs. desktop.

Filtrim botësh

Zbuloni crawlerë keqdashës që imitojnë shfletues legjitimë.

Provo drejtpërdrejt
99.9 % Koha aktive
93.4ms Përgjigje
20 req/s
0.002 Kredite / kërkesë

Inspect UA


POST https://api.yeb.to/v1/device-analyze
ParametriLlojiI detyrueshëmPërshkrimi
api_key string po Your API key
ua string opsional User-Agent string (defaults to caller UA)

Shembull

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

Shembull përgjigje

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

Kodet e përgjigjes

KodiPërshkrimi
200 SuccessKërkesa u përpunua me sukses.
400 Bad RequestVërtetimi i hyrjes dështoi.
401 UnauthorizedÇelësi API mungon / është i gabuar.
403 ForbiddenÇelësi joaktiv ose i palejuar.
429 Rate LimitShumë kërkesa.
500 Server ErrorDështim i papritur.

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 — 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.

Pyetje të bëra shpesh

Bazohet në bazën e të dhënave open source WhichBrowser, e përditësuar çdo javë.

Jo – i hash-ojmë për metrika; vlera e papërpunuar hidhet menjëherë pas analizimit.

Po. Çdo kërkesë, edhe ato që rezultojnë në gabime, konsumon kredite. Kreditet tuaja janë të lidhura me numrin e kërkesave, pavarësisht suksesit ose dështimit. Nëse gabimi shkaktohet qartë nga një problem i platformës në anën tonë, do të rivendosim kreditet e prekura (pa rimbursime në para të gatshme).

Na kontaktoni në [email protected]. I marrim komentet seriozisht—nëse raporti juaj i defektit ose kërkesa për veçori është e arsyeshme, mund ta rregullojmë ose përmirësojmë API-në shpejt dhe t'ju japim 50 kredite falas si faleminderit.

Varet nga API-ja dhe ndonjëherë edhe nga endpoint-i. Disa endpoint-e përdorin të dhëna nga burime të jashtme, të cilat mund të kenë kufij më të rreptë. Gjithashtu zbatojmë kufij për të parandaluar abuzimin dhe për të mbajtur platformën tonë të qëndrueshme. Kontrolloni dokumentacionin për kufirin specifik të çdo endpoint-i.

Operojmë me një sistem kreditesh. Kreditet janë njësi të parapaguara, jo të rimbursueshme që i shpenzoni në thirrje API dhe mjete. Kreditet konsumohen sipas FIFO (më të vjetrat së pari) dhe janë të vlefshme për 12 muaj nga data e blerjes. Paneli tregon çdo datë blerjeje dhe skadimin e saj.

Po. Të gjitha kreditet e blera (përfshirë balancat fraksionale) janë të vlefshme për 12 muaj nga blerja. Kreditet e papërdorura skadojnë automatikisht dhe fshihen përgjithmonë në fund të periudhës së vlefshmërisë. Kreditet e skaduara nuk mund të rivendosen ose konvertohen në para të gatshme ose vlerë tjetër. Rregulli kalimtar: kreditet e blera para 22 shtatorit 2025 trajtohen si të blera më 22 shtator 2025 dhe skadojnë më 22 shtator 2026 (përveç nëse një skadim më i hershëm u deklarua gjatë blerjes).

Po—brenda periudhës së tyre të vlefshmërisë. Kreditet e papërdorura mbeten të disponueshme dhe barten nga muaji në muaj derisa të skadojnë 12 muaj pas blerjes.

Kreditet janë jo të rimbursueshme. Blini vetëm atë që ju duhet—gjithmonë mund të rimbushni më vonë. Nëse një gabim i platformës shkakton një debitim të dështuar, mund të rivendosim kreditet e prekura pas hetimit. Asnjë rimbursim në para të gatshme.

Çmimet janë caktuar në kredite, jo në dollarë. Çdo endpoint ka koston e vet—shikoni stemën "Kredite / kërkesë" më lart. Gjithmonë do të dini saktësisht sa po shpenzoni.
← Kthehu te API-të