GET /useragent

Useragent API

Turn a User-Agent into device, OS, browser, and bot.

Try it

Example response/useragent
{
  "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": "desktop",
  "os": "macOS",
  "browser": "Chrome",
  "bot": false,
  "mobile": false,
  ?deep=true
}

1M requests · $20/mo.

Get started

Bot & browser directory →Most parsed since 2015 →

What comes back.

device

desktop | mobile | tablet | tv | console | wearable | car | camera | speaker | bot | other

os

Operating system (e.g. macOS, Windows, Android, iOS)

browser

Browser, app, or library name (e.g. Chrome, curl), bot name for bots

bot

Bot, crawler, or headless browser

deep.device

Type, brand, model (e.g. Samsung Galaxy S21 Ultra 5G), CPU, touchscreen

deep.os

Name, version, platform (ARM/x64 from hints)

deep.browser

Name, version, client type. Brands when Sec-CH-UA present

deep.bot

For bots: name, category (e.g. AI Data Scraper), url, vendor

1

Send the string

Header, or bare GET /useragent for the caller.

2

Get the device

Brand, model, OS, browser. Bots come back named.

3

Forward the hints

Client Hints are how you beat a frozen Chrome UA.

Make your first request.

One key works across the APIs. Copy a request in your language and get JSON back.

curl "https://api.parseapi.com/useragent" \
  -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"
// Example response · 200
{
  "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": "desktop",
  "os": "macOS",
  "browser": "Chrome",
  "bot": false,
  "mobile": false
}

API referenceSDKsKeys and authentication

Every response field

Response fields

useragentstring
Original User-Agent string
devicestring or null
desktop | mobile | tablet | tv | console | wearable | car | camera | speaker | bot | other
osstring or null
Operating system (e.g. macOS, Windows, Android, iOS)
browserstring or null
Browser, app, or library name (e.g. Chrome, curl), bot name for bots
botboolean
Bot, crawler, or headless browser
mobileboolean
Phone or tablet

Deep fields

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

QUESTIONS

What comes back?
Device, OS, browser, and a named bot when the string is a bot.
What does deep add?
Brand and model, the rendering engine, whether it is an AI crawler, and whether it is headless. Deep ships on paid plans.
What is the engine?
The rendering engine behind the browser. Blink, WebKit, Gecko. deep.engine is the name and version.
What is an AI crawler?
A bot scraping for a model, like GPTBot or ClaudeBot. deep.ai is true on those.
What is headless?
A browser driven by automation. HeadlessChrome, Playwright, Puppeteer. deep.headless is true when we see the framework.
Do Client Hints help?
Yes. Forward them when you have them. Frozen Chrome UA strings need the hints.
Can I parse the caller?
GET /useragent with no path reads the request headers.

Eleven years of User-Agents

Every number here comes from real requests to this API, 403 million of them, covering 14 million distinct strings, starting 2015. Not a survey, not a panel, the actual strings developers sent us.

The most parsed

Ranked by requests parsed across the whole archive. Every name is a page in the directory.

Then the AI crawlers arrived

First sighting of each AI crawler in our traffic. A whole new species of visitor, practically overnight.

See what your browser sends with What is my user agent?