Skip to content

Segment by browser, OS, device and country

RUM sessions carry four context dimensions, so you can ask questions like “is LCP worse on mobile?” or “which browser is throwing this error?” without instrumenting anything yourself.

DimensionDerived from
browserThe User-Agent, parsed server side
osThe User-Agent, parsed server side
device_typeThe User-Agent, parsed server side
countryAn edge geo header on the request

Your SDK payload can also set any of these explicitly, and an explicit value always wins over the parsed one. That is the escape hatch if you already know better than a User-Agent string does.

device_type is a closed set: desktop, mobile, tablet, bot, or empty.

os normalises to Windows, macOS, iOS, Android or Linux where it can, and otherwise passes through whatever was detected, so less common values do appear.

browser covers the mainstream engines: Chrome, Firefox, Safari, Edge, Opera and similar. Requests from HTTP libraries such as curl or scripted clients are deliberately left empty rather than polluting the browser breakdown with tool names.

country is an uppercase ISO 3166-1 alpha-2 code such as US or DE. Anything that is not exactly two letters is discarded, so USA or United States will not be stored.

Unknown values are stored as an empty string, not the literal text unknown. The dashboard renders that bucket as (unknown).

Filters are exact, case-sensitive matches on the stored value: Chrome, not chrome; US, not us.

Terminal window
curl -G "https://api.siteqwality.com/rum/$APP_ID/overview" \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
--data-urlencode "from=2026-08-01T00:00:00Z" \
--data-urlencode "to=2026-08-02T00:00:00Z" \
--data-urlencode "browser=Chrome" \
--data-urlencode "device_type=mobile"

from and to are required. Optional filters: country, browser, os, device_type, and url (a substring match).

The response includes two breakdowns:

BreakdownDepth
country_breakdownTop 20 by session count
browser_breakdownTop 10 by session count

There is no OS or device breakdown. Those two dimensions are filter-only, so to compare them you filter and read the resulting totals.

Terminal window
curl -G "https://api.siteqwality.com/rum/$APP_ID/sessions" \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
--data-urlencode "from=2026-08-01T00:00:00Z" \
--data-urlencode "to=2026-08-02T00:00:00Z" \
--data-urlencode "os=iOS" \
--data-urlencode "has_error=true"

Accepts browser, os and country, plus search, has_error, has_replay, limit (default 50, max 100) and offset.

device_type is not a filter here, although every returned session does carry its device_type value. Filter on it via the overview endpoint, or filter client-side.

These dimensions live on session measurements only. Individual error and detail events do not carry them.

In practice that means you segment sessions by browser or device, and reach errors through those sessions, rather than filtering an error list directly by browser.