User Agent Parser
Parse user agent strings to extract browser name, version, operating system, device type, and bot detection.
Overview
Use Cases
- Analytics dashboards
- Serving device-specific content
- Bot filtering and traffic analysis
- Browser compatibility reporting
Features
Browser name and version detection
Operating system and version detection
Device classification (desktop, mobile, tablet, bot)
Bot/crawler detection
API Endpoints
Parse User Agent
Parses a user agent string and returns structured information about the browser, OS, device, and bot status.
GET
https://requiems.xyz/v1/technology/useragent
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ua | string |
Required | The user agent string to parse. |
Try it out
Live DemoRequest
The user agent string to parse.
Sending request...
Response Fields
| Field | Type | Description |
|---|---|---|
| browser | string |
Detected browser name (e.g. Chrome, Firefox, Safari, Edge, Opera, Internet Explorer, Other) |
| browser_version | string |
Detected browser version (major.minor) |
| os | string |
Detected operating system (e.g. Windows, macOS, Linux, Android, iOS, ChromeOS, Other) |
| os_version | string |
Detected OS version (format varies by platform) |
| device | string |
Device type β one of desktop, mobile, tablet, bot, or unknown |
| is_bot | boolean |
True when the user agent matches a known bot or crawler pattern |
Code Examples
curl "https://requiems.xyz/v1/technology/useragent?ua=Mozilla%2F5.0+%28Windows+NT+10.0%29+Chrome%2F120.0.0.0" \
-H "requiems-api-key: YOUR_API_KEY"
import requests
from urllib.parse import quote
ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0"
url = f"https://requiems.xyz/v1/technology/useragent?ua={quote(ua)}"
headers = {"requiems-api-key": "YOUR_API_KEY"}
response = requests.get(url, headers=headers)
print(response.json())
const ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0";
const url = `https://requiems.xyz/v1/technology/useragent?ua=${encodeURIComponent(ua)}`;
const response = await fetch(url, {
headers: { 'requiems-api-key': 'YOUR_API_KEY' }
});
const data = await response.json();
console.log(data.data.browser);
require 'net/http'
require 'json'
ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0"
uri = URI("https://requiems.xyz/v1/technology/useragent?ua=#{URI.encode_www_form_component(ua)}")
request = Net::HTTP::Get.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
data = JSON.parse(response.body)
puts data['data']['browser']
Error Responses
bad_request
The ua query parameter is missing.
Batch Parse User Agents
Parses up to 50 user agents in a single request.
POST
https://requiems.xyz/v1/technology/useragent/batch
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| user_agents | array<string> |
Required | Array of user agents to parse (min: 1, max: 50). |
Try it out
Live DemoRequest
Array of user agents to parse (min: 1, max: 50).
Sending request...
Response Fields
| Field | Type | Description |
|---|---|---|
| results | array<object> |
List of parsed user agents results returned in the same order as the input user agents. |
| results[].user_agent | string |
The original user agent string from the input. |
| results[].data | object |
Parsed user agent details. |
| results[].data.browser | string |
Detected browser name (e.g. Chrome, Firefox, Safari, Edge, Opera, Internet Explorer, Other). Empty if not detected. |
| results[].data.browser_version | string |
Detected browser version (major.minor). Empty if not detected. |
| results[].data.os | string |
Detected operating system (e.g. Windows, macOS, Linux, Android, iOS, ChromeOS, Other). Empty if not detected. |
| results[].data.os_version | string |
Detected OS version (format varies by platform). Empty if not detected. |
| results[].data.device | string |
Device type β one of desktop, mobile, tablet, bot, or unknown |
| results[].data.is_bot | boolean |
True when the user agent matches a known bot or crawler pattern |
| total | integer |
Total number of parsed user agent results returned. |
Code Examples
curl -X POST "https://requiems.xyz/v1/technology/useragent/batch" \
-H "requiems-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"user_agents": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15"
]
}'
import requests
url = "https://requiems.xyz/v1/technology/useragent/batch"
headers = {
"requiems-api-key": "YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"user_agents": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15"
]
}
response = requests.post(url, headers=headers, json=payload)
for item in response.json()["data"]["results"]:
print(item["user_agent"])
print("Browser:", item["data"]["browser"], item["data"]["browser_version"])
print("OS:", item["data"]["os"], item["data"]["os_version"])
print("Device:", item["data"]["device"])
print("Is Bot:", item["data"]["is_bot"])
const response = await fetch(
'https://requiems.xyz/v1/technology/useragent/batch',
{
method: 'POST',
headers: {
'requiems-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
user_agents: [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15'
]
})
}
);
const { data } = await response.json();
data.results.forEach(item => {
console.log(item.user_agent);
console.log('Browser:', item.data.browser, item.data.browser_version);
console.log('OS:', item.data.os, item.data.os_version);
console.log('Device:', item.data.device);
console.log('Is Bot:', item.data.is_bot);
});
require 'net/http'
require 'json'
uri = URI('https://requiems.xyz/v1/technology/useragent/batch')
request = Net::HTTP::Post.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
request['Content-Type'] = 'application/json'
request.body = {
user_agents: [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15'
]
}.to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
JSON.parse(response.body)['data']['results'].each do |item|
puts item['user_agent']
puts "Browser: #{item['data']['browser']} #{item['data']['browser_version']}"
puts "OS: #{item['data']['os']} #{item['data']['os_version']}"
puts "Device: #{item['data']['device']}"
puts "Is Bot: #{item['data']['is_bot']}"
end
Error Responses
validation_failed
The user_agents array is missing, empty, or contains more than 50 items.
bad_request
Invalid JSON, malformed request body, or unexpected field types.
Frequently Asked Questions
Chrome, Firefox, Safari, Edge, Opera, and Internet Explorer. Anything else returns "Other".
The API checks for known bot/crawler keywords in the user agent string, including Googlebot, Bingbot, curl, wget, python-requests, and many others.
desktop, mobile, tablet, bot, or unknown. Tablets are identified by iPad or Android without 'Mobile' in the UA.