Parse a User-Agent (browser, OS, device, bot / AI crawler / AI agent)
parse_user_agentParse one User-Agent string. Returns browser, engine, OS, device type and CPU (ua-parser-js 1.0.41), and whether it is a known bot, search crawler, AI crawler (with its AI purpose) or an AI agent acting for a user (is_ai_agent, ai_agent_kind fetch | browsing), plus the bot name, operator, robots.txt token and operator docs link from a curated list of 151 bots (list 2026-10-08). verified is always false: the User-Agent is self-reported and UAParse does no IP or reverse-DNS checks. Read-only, no network lookups. Same engine and limits as the UAParse JSON API (POST /v1/parse); each call is one lookup. UAParse is independent and not affiliated with Meta, OpenAI, Google, Anthropic, Amazon, Perplexity or Mistral AI.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ua | Yes | The User-Agent string to parse, exactly as sent in the User-Agent header. | |
| include_raw | No | Also return the full POST /v1/parse JSON in structuredContent.raw. Larger output. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| os | Yes | ||
| ua | Yes | The parsed User-Agent (clipped to 300 characters; see ua_length) | |
| bot | No | Present when is_bot is true. Fields that are unknown are omitted. | |
| cpu | Yes | ||
| raw | No | Full POST /v1/parse response (only when include_raw is true) | |
| tier | No | ||
| cached | No | ||
| device | Yes | ||
| engine | Yes | ||
| is_bot | Yes | ||
| parser | No | ||
| browser | Yes | ||
| summary | Yes | One-line plain-English verdict | |
| version | Yes | ||
| ua_length | Yes | ||
| is_ai_agent | Yes | true only for User-Agents the operator documents as acting live for an individual user | |
| list_version | Yes | ||
| is_ai_crawler | Yes | ||
| is_search_crawler | Yes |