User agents not stored or loggedPOST only · parsed in memory

Parse user agents.
Pay once, not monthly.

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

Try it — free, unlimited, no key needed

Same parser and output as the API. Runs in your browser; nothing is sent to us.

Human

    €0.025
    per 1,000 at volume
    No subscription
    no auto-charge, ever
    24 months
    credits roll over
    Not logged
    user agents never stored · POST only

    01 — How it works

    One POST. One JSON object. Every key always present.

    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"}'
    200 OKapplication/json · 1 credit
    {
      "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

    What teams plug it into

    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.

    Automations without a library

    n8n, Make or Zapier can’t install a parser package. They can make an HTTP request. €5 covers 25,000 runs, whenever they happen.

    AI crawlers get their own flag

    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

    Enrich every sGTM event with device, OS and bot data.

    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.

    1. Download the template

      One .tpl file, free.

    2. Import it in your server container

      Templates → Variable templates → New → ⋮ → Import, then Save.

    3. Create a variable and map it

      Paste your API key, pick the output, and add it to your BigQuery or GA4 tag.

    • Outputs the full object or one field: Device category (desktop / mobile / tablet / bot), browser, OS, isAIBot
    • Caches per user agent, so a returning browser costs about 1 credit per server instance per day
    • Never blocks the event
    Download the sGTM template Setup guide and settings →

    04 — Pricing

    Buy credits once. Use them for 24 months.

    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.

    1. 25k parses

      €5

      excl. tax

      €0.20 per 1,000

      = 1,000 a month for 24 months

      Buy 25k — €5
    2. 125k parses

      €20

      excl. tax

      €0.16 per 1,000

      = 5,200 a month for 24 months

      Buy 125k — €20
    3. Recommended

      1M parses

      €50

      excl. tax

      €0.05 per 1,000

      = 41,000 a month for 24 months

      Buy 1M — €50
    4. 5M parses

      €125

      excl. tax

      €0.025 per 1,000

      = 200,000 a month for 24 months
      Repeatable: add more 5M blocks

      Buy 5M — €125

    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.

    1. Pay once on Stripe checkout
    2. Credits added in seconds — same key
    3. Invoice with every purchase

    05 — Data path

    What happens to your user agents — exactly

    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.

    1. Your server or workflow

      POSTs the user-agent string over HTTPS.

    2. Our parser

      Parsed in memory → JSON. Not stored, not logged — only a request count.

    3. JSON back to you

      Same fixed shape, every time.

    What happens to the string?

    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

    The short answers.

    Everything else is in the API reference.

    Is 1,000 free credits enough to try it?

    The playground above is free and unlimited, and runs the same parser. The 1,000 credits are for wiring up your real integration.

    What happens when credits run out?

    Requests return HTTP 402 with a clear error until you top up — same key, nothing to reconfigure. There is no automatic charge.

    Do credits expire?

    Each purchase is valid for 24 months. Requests use the credits that expire soonest first, so newer packs keep their full validity.

    Which fields come back?

    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.

    Why an API instead of a library?

    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.

    What if a device can’t be identified?

    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.

    Do you store the user agents I send?

    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.

    Can I get a refund?

    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.

    Do I get an invoice? How do taxes work?

    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.

    Your first parse is a minute away

    Sign in with Google or email, copy your key, send one POST. 1,000 credits are on us — no card.