Device-Analyze API

Ανίχνευση προγράμματος περιήγησης, λειτουργικού συστήματος, συσκευής και bots από οποιοδήποτε User-Agent.

Τι μπορείτε να κάνετε;
Αναλυτικά σε πραγματικό χρόνο

Ανάλυση κίνησης ανά συσκευή & πρόγραμμα περιήγησης χωρίς cookies.

Έξυπνη στόχευση A/B

Εμφανίστε διαφορετικές διατάξεις σε χρήστες κινητών vs. υπολογιστών.

Φιλτράρισμα bot

Ανίχνευση κακόβουλων crawlers που πλαστογραφούν νόμιμα προγράμματα περιήγησης.

99.9 % Διαθεσιμότητα
93.5ms Απάντηση
20 req/s
0.002 Πιστωτικές μονάδες / αίτημα

Inspect UA


POST https://api.yeb.to/v1/device-analyze
ΠαράμετροςΤύποςΑπαιτ.Περιγραφή
api_key string ναι Your API key
ua string προαιρ. User-Agent string (defaults to caller UA)

Παράδειγμα

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

Παράδειγμα απάντησης

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

Κωδικοί απάντησης

ΚωδικόςΠεριγραφή
200 SuccessΤο αίτημα επεξεργάστηκε επιτυχώς.
400 Bad RequestΗ επικύρωση εισόδου απέτυχε.
401 UnauthorizedΚλειδί API λείπει ή είναι λάθος.
403 ForbiddenΚλειδί ανενεργό ή μη επιτρεπόμενο.
429 Rate LimitΠάρα πολλά αιτήματα.
500 Server ErrorΜη αναμενόμενο σφάλμα.

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.

Συχνές Ερωτήσεις

Βασίζεται στη βάση δεδομένων ανοιχτού κώδικα WhichBrowser, που ενημερώνεται εβδομαδιαία για νέες συσκευές και μηχανές.

Όχι – τα κατακερματίζουμε για μετρικές· η ακατέργαστη τιμή απορρίπτεται αμέσως μετά την ανάλυση.

Ναι. Κάθε αίτημα, ακόμα και αυτά που καταλήγουν σε σφάλμα, καταναλώνει πιστωτικές μονάδες. Οι πιστωτικές μονάδες σας συνδέονται με τον αριθμό αιτημάτων, ανεξάρτητα από επιτυχία ή αποτυχία. Εάν το σφάλμα οφείλεται σαφώς σε πρόβλημα της πλατφόρμας από τη δική μας πλευρά, θα αποκαταστήσουμε τις επηρεαζόμενες πιστωτικές μονάδες (χωρίς επιστροφή χρημάτων).

Επικοινωνήστε μαζί μας στο [email protected]. Λαμβάνουμε τα σχόλια σοβαρά—εάν η αναφορά σφάλματος ή το αίτημα λειτουργίας είναι ουσιαστικό, μπορούμε να διορθώσουμε ή να βελτιώσουμε το API γρήγορα και να σας χορηγήσουμε 50 δωρεάν πιστωτικές μονάδες ως ευχαριστώ.

Εξαρτάται από το API και μερικές φορές ακόμα και από το endpoint. Ορισμένα endpoints χρησιμοποιούν δεδομένα από εξωτερικές πηγές, που μπορεί να έχουν αυστηρότερα όρια. Επιβάλλουμε επίσης όρια για να αποτρέψουμε κατάχρηση και να διατηρήσουμε την πλατφόρμα μας σταθερή. Ελέγξτε την τεκμηρίωση για το συγκεκριμένο όριο κάθε endpoint.

Λειτουργούμε με σύστημα πιστωτικών μονάδων. Οι πιστωτικές μονάδες είναι προπληρωμένες, μη επιστρέψιμες μονάδες που ξοδεύετε σε κλήσεις API και εργαλεία. Καταναλώνονται με τη μέθοδο FIFO (παλαιότερες πρώτα) και ισχύουν για 12 μήνες από την ημερομηνία αγοράς. Ο πίνακας ελέγχου δείχνει κάθε ημερομηνία αγοράς και τη λήξη της.

Ναι. Όλες οι αγορασμένες πιστωτικές μονάδες (συμπεριλαμβανομένων κλασματικών υπολοίπων) ισχύουν για 12 μήνες από την αγορά. Οι αχρησιμοποίητες πιστωτικές μονάδες λήγουν αυτόματα και διαγράφονται μόνιμα στο τέλος της περιόδου ισχύος. Οι ληγμένες πιστωτικές μονάδες δεν μπορούν να αποκατασταθούν ή να μετατραπούν σε μετρητά ή άλλη αξία. Μεταβατικός κανόνας: πιστωτικές μονάδες που αγοράστηκαν πριν τις 22 Σεπ. 2025 θεωρούνται αγορασμένες στις 22 Σεπ. 2025 και λήγουν στις 22 Σεπ. 2026 (εκτός αν αναφέρθηκε νωρίτερη λήξη κατά την αγορά).

Ναι—εντός της περιόδου ισχύος τους. Οι αχρησιμοποίητες πιστωτικές μονάδες παραμένουν διαθέσιμες και μεταφέρονται από μήνα σε μήνα μέχρι να λήξουν 12 μήνες μετά την αγορά.

Οι πιστωτικές μονάδες είναι μη επιστρέψιμες. Αγοράστε μόνο ό,τι χρειάζεστε—μπορείτε πάντα να αναπληρώσετε αργότερα. Εάν ένα σφάλμα πλατφόρμας προκαλέσει αποτυχημένη χρέωση, μπορούμε να αποκαταστήσουμε τις επηρεαζόμενες πιστωτικές μονάδες μετά από έρευνα. Καμία επιστροφή χρημάτων.

Οι τιμές ορίζονται σε πιστωτικές μονάδες, όχι σε δολάρια. Κάθε endpoint έχει το δικό του κόστος—δείτε το σήμα «Πιστωτικές μονάδες / αίτημα» παραπάνω. Θα ξέρετε πάντα ακριβώς τι ξοδεύετε.
← Πίσω στα API