Enrich events and warehouse tables
Add browser, OS and device type to server-side events, or backfill a raw user_agent column. A one-off backfill doesn’t need a monthly plan — buy the credits once.
User agents not stored or loggedPOST only · parsed in memory
One HTTP request turns any user-agent string into browser, OS, device, CPU and bot fields, with a separate flag for AI crawlers like GPTBot and ClaudeBot. Packs start at €5 for 25,000 parses, credits stay valid for 24 months, and nothing renews.
1,000 free credits · no card · key in under a minute
01 — How it works
Send the string you want parsed. The API never reads your own User-Agent header. Unknown values come back as null, so your schema never changes shape.
curl https://useragentparser.xyz/v1/parse \
-H "X-Api-Key: $UAP_KEY" \
-H "Content-Type: application/json" \
-d '{"userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1"}'
const res = await fetch("https://useragentparser.xyz/v1/parse", {
method: "POST",
headers: { "X-Api-Key": process.env.UAP_KEY,
"Content-Type": "application/json" },
body: JSON.stringify({ userAgent: req.headers["user-agent"] }),
});
const { browser, os, device, bot } = await res.json();
import os, requests
r = requests.post(
"https://useragentparser.xyz/v1/parse",
headers={"X-Api-Key": os.environ["UAP_KEY"]},
json={"userAgent": user_agent},
timeout=5,
)
info = r.json() # {"browser": {...}, "os": {...}, "device": {...}, "bot": {...}}
# HTTP Request node (n8n) / HTTP module (Make)
Method POST
URL https://useragentparser.xyz/v1/parse
Header X-Api-Key: ‹your key, stored as a credential›
Body type JSON
Body { "userAgent": ‹user-agent field from the trigger› }
# then branch on the result
IF device.type == "mobile" → …
IF bot.isAIBot == true → …
{
"browser": { "name": "Mobile Safari", "version": "17.5", "major": "17", "type": null },
"engine": { "name": "WebKit", "version": "605.1.15" },
"os": { "name": "iOS", "version": "17.5" },
"device": { "type": "mobile", "vendor": "Apple", "model": "iPhone" },
"cpu": { "architecture": null },
"bot": { "isBot": false, "isAIBot": false }
}
Batch: POST /v1/parse/batch takes up to 100 strings. Invalid entries return an inline error and cost nothing. Full reference →
02 — Use cases
Add browser, OS and device type to server-side events, or backfill a raw user_agent column. A one-off backfill doesn’t need a monthly plan — buy the credits once.
n8n, Make or Zapier can’t install a parser package. They can make an HTTP request. €5 covers 25,000 runs, whenever they happen.
bot.isBot covers crawlers, CLIs and HTTP libraries. bot.isAIBot separately flags AI crawlers and assistants — GPTBot, ClaudeBot, PerplexityBot.
Flags shown are real parser output for those user agents.
03 — Server-side GTM
A free variable template for server-side Google Tag Manager — built for teams streaming sGTM events to BigQuery. Import it, paste your key, map the fields.
One .tpl file, free.
Templates → Variable templates → New → ⋮ → Import, then Save.
Paste your API key, pick the output, and add it to your BigQuery or GA4 tag.
isAIBot04 — Pricing
One credit = one parsed user agent. No subscription, no automatic top-up — when credits run out, the API returns 402 until you buy more. Prices exclude tax; invoice included.
/ month
€5
excl. tax
€0.20 per 1,000
= 1,000 a month for 24 months
Buy 25k — €5€20
excl. tax
€0.16 per 1,000
= 5,200 a month for 24 months
Buy 125k — €20Recommended
€50
excl. tax
€0.05 per 1,000
= 41,000 a month for 24 months
Buy 1M — €50€125
excl. tax
€0.025 per 1,000
= 200,000 a month for 24 months
Repeatable: add more 5M blocks
Prices in euros, excluding tax. Taxes may apply depending on your location; calculated at checkout. Invoice included.
1,000 free credits on sign-up. No card.
More than 5M? Add 5M blocks at €125 each (€0.025 per 1,000), up to 200M per checkout. Beyond that, write to us.
Changed your mind? Unused credits from a purchase are refundable within 14 days. If we ever shut down, you get 60 days’ notice and a refund of unused credits.
05 — Data path
User-agent strings are not stored or logged. POST only, so user agents never land in URL logs. Each string is parsed in memory and the JSON goes straight back to you; we count requests, that’s all.
POSTs the user-agent string over HTTPS.
Parsed in memory → JSON. Not stored, not logged — only a request count.
Same fixed shape, every time.
Nothing that lasts. It’s parsed in memory and the response goes back to you. We keep a counter against your credits — never the string. Privacy policy →
06 — Questions
Everything else is in the API reference.
The playground above is free and unlimited, and runs the same parser. The 1,000 credits are for wiring up your real integration.
Requests return HTTP 402 with a clear error until you top up — same key, nothing to reconfigure. There is no automatic charge.
Each purchase is valid for 24 months. Requests use the credits that expire soonest first, so newer packs keep their full validity.
Browser (name, version, major, type), engine, OS, device (type, vendor, model), CPU architecture, and bot flags bot.isBot and bot.isAIBot. Unknown values are null; every key is always present. See the response reference.
If you have one service in one language, a library is fine. The API is for everything else: no-code tools that can’t install packages, warehouses and pipelines in several languages, and bot lists that need updating without redeploying every consumer.
You still get a 200 with null fields, and it costs one credit. Desktop browsers don’t report a device type, so device.type: null usually means desktop.
No. Each string is parsed in memory and the result goes straight back to you; we don’t store or log the user-agent strings you send — we only count requests against your credits. The API accepts POST only, so user agents never land in URL logs. Details in the privacy policy.
Within 14 days of a purchase, unused credits from it are refundable at the price you paid. If we discontinue the service, we give 60 days’ notice and refund unused, unexpired credits.
Yes — every purchase comes with an invoice, and you can add your company’s tax ID at checkout. Prices are in euros, excluding tax. Taxes may apply depending on your location; they are calculated at checkout.
Sign in with Google or email, copy your key, send one POST. 1,000 credits are on us — no card.