AI Traffic (GA4)Get Top Locations

GA4 top locations

AI-referred site traffic broken out by country, ranked by sessions.

curl --request GET \
  --url 'https://api.aiclicks.io/api/v1/ga4/top-locations?domain_id=8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3&days=30' \
  --header 'Authorization: Bearer ak_live_xxx'
{
  "data": {
    "items": [
      { "location": "United States", "sessions": 640 },
      { "location": "United Kingdom", "sessions": 180 },
      { "location": "Germany", "sessions": 120 }
    ]
  },
  "domain_id": "8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3",
  "days": 30,
  "llm_source": null,
  "generated_at": "2026-07-13T10:00:11.218Z"
}

Where in the world the domain's AI-referred visitors come from, ranked by sessions descending. Use it to see whether AI assistants send traffic from the markets you care about, and to spot geographies where AI visibility is (or isn't) converting into visits.

Each row is a country and its AI-referred session count over the window.

domain_id is a required query parameter. Use `` to discover which domains the calling key can access. When the domain has no connected GA4 property (or no AI-referred traffic in the window), items is empty with a 200.

Authorizations

header
Authorizationstring
Required

Your API key formatted as Bearer ak_live_<your-key>. Create one in the dashboard under Settings → Developers.

header
X-Request-Idstring

Optional UUID for log correlation. If omitted, we generate one and echo it back in the response.

Query parameters

query
domain_idstring
Required

UUID of the domain. Find domains via ``. Omitting this returns 400.

query
daysinteger

Trailing look-back window, 1–365. Defaults to 30.

query
llm_sourcestring

Optional. Restrict to a single AI/LLM referral source — chatgpt, perplexity, claude, gemini, copilot, … Omit for all sources combined.

Response

dataobject
Required

The list payload.

data.itemsarray
Required

One row per country, sorted by sessions descending.

locationstring
Required

Country name as reported by GA4.

sessionsinteger
Required

AI-referred sessions from that country during the window.

domain_idstring
Required

Echo of the requested domain.

daysinteger
Required

Echo of the requested window.

llm_sourcestring

Echo of the requested llm_source filter, or null when unset.

generated_atstring
Required

ISO-8601 timestamp of when the server produced (or cached) this response.

Response headers

HeaderDescription
X-CacheHIT or MISS. Whether the response came from cache.
X-Request-IdUnique request id. Echoes incoming if you set one.
X-RateLimit-LimitMax requests per minute for this key.
X-RateLimit-RemainingRequests remaining in the current minute.
X-RateLimit-ResetUnix epoch seconds when the window resets.

Caching

Cached for a short window per (domain_id, days, llm_source). Freshly synced GA4 data appears after the TTL expires.

Empty result

{
  "data": { "items": [] },
  "domain_id": "8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3",
  "days": 30,
  "llm_source": null,
  "generated_at": "2026-07-13T10:00:11.218Z"
}