MostlyQR

Analytics

Every scan of a dynamic link is counted. Paid plans also get geo / device / time breakdowns, read per code.

bash
curl "https://mostlyqr.com/api/v1/links/AZ4K9/analytics?range=30d" \
  -H "Authorization: Bearer mtq_live_…"
Query Notes
range 24h, 7d, 30d, or all (default all).
json
{
  "code": "AZ4K9",
  "scan_count": 4218,
  "range": "30d",
  "analytics": {
    "total": 4218,
    "byDay": [{ "day": "2026-06-01", "count": 121 }],
    "byCountry": [{ "key": "GB", "count": 2600 }],
    "byDevice": [{ "key": "mobile", "count": 3900 }],
    "byOS": [{ "key": "iOS", "count": 2360 }],
    "byBrowser": [{ "key": "Safari", "count": 2210 }],
    "byReferrer": [{ "key": "instagram.com", "count": 410 }]
  }
}

# Free vs paid

  • Free — the scan count (scan_count). In the dashboard the shown number is capped at 500+; the scans themselves are never lost — the redirect keeps counting forever, so an upgrade reveals the true total and the breakdowns below retroactively.
  • Pro / Team / Enterprise — the full geo / device / time breakdowns (the analytics object above).

Scan counts are served off cheap counters; the breakdowns query a bounded window of scan events, so very busy codes aggregate over their most-recent slice (a truncated: true flag tells you when).

# Where the data comes from

The redirect records each scan with a coarse, IP-derived geo (≈ city) and a parsed user-agent — never precise location or PII. See the privacy note in the dashboard.

# Next