Device-Analyze API

Detektera webbläsare, OS, enhet och bottar från valfri User-Agent.

Vad kan du göra?
Realtidsanalys

Bryt ner trafik efter enhet och webbläsare utan cookies.

Smart A/B-målning

Servera olika layouter till mobil- vs. desktopanvändare.

Botfiltrering

Upptäck skadliga crawlers som utger sig för att vara legitima webbläsare.

Testa live
99.9 % Drifttid
93.5ms Svar
20 req/s
0.002 Krediter / förfrågan

Inspect UA


POST https://api.yeb.to/v1/device-analyze
ParameterTypOblig.Beskrivning
api_key string ja Your API key
ua string valfri User-Agent string (defaults to caller UA)

Exempel

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

Svarsexempel

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

Svarskoder

KodBeskrivning
200 SuccessFörfrågan behandlad OK.
400 Bad RequestIndatavalidering misslyckades.
401 UnauthorizedSaknad / felaktig API-nyckel.
403 ForbiddenNyckel inaktiv eller ej tillåten.
429 Rate LimitFör många förfrågningar.
500 Server ErrorOväntat fel.

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.

Vanliga frågor

Den förlitar sig på WhichBrowser-databasen med öppen källkod, uppdaterad veckovis för nya enheter och motorer.

Nej – vi hashar dem för statistik; råvärdet kasseras omedelbart efter parsning.

Ja. Varje förfrågan, även de som resulterar i fel, förbrukar krediter. Dina krediter är kopplade till antalet förfrågningar, oavsett framgång eller misslyckande. Om felet tydligt beror på ett plattformsproblem på vår sida återställer vi de berörda krediterna (ingen kontant återbetalning).

Kontakta oss på [email protected]. Vi tar feedback på allvar—om din felrapport eller funktionsbegäran är meningsfull kan vi snabbt fixa eller förbättra API:et och ge dig 50 gratis krediter som tack.

Det beror på API:et och ibland till och med på endpointen. Vissa endpoints använder data från externa källor, som kan ha striktare gränser. Vi tillämpar också gränser för att förhindra missbruk och hålla vår plattform stabil. Kontrollera dokumentationen för den specifika gränsen för varje endpoint.

Vi arbetar med ett kreditsystem. Krediter är förbetalda, icke-återbetalningsbara enheter du spenderar på API-anrop och verktyg. Krediter förbrukas FIFO (äldst först) och gäller i 12 månader från inköpsdatumet. Instrumentpanelen visar varje inköpsdatum och dess utgång.

Ja. Alla köpta krediter (inklusive bråkdelssaldon) gäller i 12 månader från köpet. Oanvända krediter förfaller automatiskt och raderas permanent i slutet av giltighetsperioden. Förfallna krediter kan inte återställas eller konverteras till kontanter eller annat värde. Övergångsregel: krediter köpta före 22 sept. 2025 behandlas som köpta den 22 sept. 2025 och förfaller den 22 sept. 2026 (om inte ett tidigare utgångsdatum angavs vid köpet).

Ja—inom sin giltighetsperiod. Oanvända krediter förblir tillgängliga och överförs från månad till månad tills de förfaller 12 månader efter köpet.

Krediter är icke-återbetalningsbara. Köp bara det du behöver—du kan alltid fylla på senare. Om ett plattformsfel orsakar en misslyckad debitering kan vi återställa de berörda krediterna efter utredning. Ingen kontant återbetalning.

Priserna anges i krediter, inte i dollar. Varje endpoint har sin egen kostnad—se märket "Krediter / förfrågan" ovan. Du vet alltid exakt vad du spenderar.
← Tillbaka till API:er