Useragent API

Device, OS, browser, and bot, from one header.

Turn a User-Agent into device, OS, browser, and bot answers, down to brand and model. Prefer the User-Agent header. Use ?ua= to test a specific string.

Chromium browsers also send Sec-CH-UA-* Client Hints. Forward them when you have them. The classic string alone still works. Paid plans automatically include brand, model, versions, and bot detail.

ParseCopy link

Bare GET /useragent parses the User-Agent that made the request. No key needed. With ?ua= it is a keyed lookup.

GET /useragentAPI Explorer ↗

Device, OS, browser, bot. Prefer User-Agent header, or pass ?ua=. Accepts Sec-CH-UA-* hints

Parameters

User-Agentstring · header · optional

User-Agent string to parse (defaults to the request UA)

uastring · query · optional

User-Agent string to parse instead of the request UA (requires a key)

Request

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.useragent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36");
console.log(result);
Example responsePaid plan
{
  "useragent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
  "device": {
    "type": "desktop",
    "brand": "Apple",
    "model": null,
    "cpu": null,
    "touchscreen": false
  },
  "os": {
    "name": "macOS",
    "version": "10.15.7",
    "platform": null
  },
  "browser": {
    "name": "Chrome",
    "version": "120.0.0.0",
    "type": "browser"
  },
  "bot": false,
  "mobile": false,
  "engine": {
    "name": "Blink",
    "version": null
  },
  "headless": false
}

Response fields

useragentLink to useragentstring
Original User-Agent string
device.typeLink to device.typestring or null
desktop | mobile | tablet | tv | console | wearable | car | camera | speaker | bot | other
os.nameLink to os.namestring or null
Operating system (e.g. macOS, Windows, Android, iOS)
browser.nameLink to browser.namestring or null
Browser, app, or library name (e.g. Chrome, curl), bot name for bots
botLink to botboolean
Bot, crawler, or headless browser
mobileLink to mobileboolean
Phone or tablet

Included dataCopy link

Paid. Device brand and model (SM-G998B becomes Samsung Galaxy S21 Ultra 5G), versions, and engine. Bots come back named and categorized. AI crawlers like GPTBot carry ai: true.

Paid plan fields

deviceLink to deviceobject
Type, brand, model (e.g. Samsung Galaxy S21 Ultra 5G), CPU, touchscreen
osLink to osobject
Name, version, platform (ARM/x64 from hints)
browserLink to browserobject
Name, version, client type. Brands when Sec-CH-UA present
engineLink to engineobject
Rendering engine and version
bot_detailsLink to bot_detailsobject
For bots: name, category (e.g. AI Data Scraper), url, vendor
aiLink to aiboolean
For bots: AI crawler or scraper (GPTBot, ClaudeBot, …)
headlessLink to headlessboolean
Automation framework detected (HeadlessChrome, Playwright, …)

Client HintsCopy link

Client Hints are structured headers (Sec-CH-UA-*) from Chromium browsers. Send the classic User-Agent plus any hints you received. We use both.

They matter more every year: modern Chrome freezes the UA string (every Android phone says Android 10; K), so hints are the only source for the real model and OS version. Sec-CH-UA-Model restores the device, Sec-CH-UA-Platform-Version distinguishes Windows 11 from 10, and Sec-CH-UA-Arch reveals the CPU.

Missing hints are fine. We fall back to the User-Agent string. Forward headers exactly as your client sent them.

Request

curl "https://api.parseapi.com/useragent" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "X-API-Version: 2.1.0" \
  -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" \
  -H 'Sec-CH-UA: "Chromium";v="120", "Google Chrome";v="120", "Not_A Brand";v="8"' \
  -H 'Sec-CH-UA-Platform: "macOS"' \
  -H "Sec-CH-UA-Mobile: ?0" \
  -H 'Sec-CH-UA-Arch: "arm"' \
  -H 'Sec-CH-UA-Bitness: "64"' \
  -H 'Sec-CH-UA-Full-Version-List: "Chromium";v="120.0.6099.109", "Google Chrome";v="120.0.6099.109", "Not_A Brand";v="10.0.0.4"'
Example responsePaid plan
{
  "useragent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
  "device": {
    "type": "desktop",
    "brand": "Apple",
    "model": null,
    "cpu": "arm64",
    "touchscreen": false
  },
  "os": {
    "name": "macOS",
    "version": "10.15.7",
    "platform": "ARM"
  },
  "browser": {
    "name": "Chrome",
    "version": "120.0.6099.109",
    "type": "browser",
    "brands": [
      {
        "brand": "Chromium",
        "version": "120.0.6099.109"
      },
      {
        "brand": "Google Chrome",
        "version": "120.0.6099.109"
      }
    ]
  },
  "bot": false,
  "mobile": false,
  "engine": {
    "name": "Blink",
    "version": null
  },
  "headless": false
}