trak.sh docs
API Reference

Analytics

GET /api/v1/links/:slug/analytics — Get click analytics for a link.

GET /api/v1/links/:slug/analytics

Retrieve analytics data for a specific link, including clicks over time, referrers, countries, devices, and browsers.

Request

curl -H "Authorization: Bearer trak_YOUR_API_KEY" \
  "https://trak.sh/api/v1/links/my-link/analytics?range=30d"

Query parameters

ParameterTypeDefaultDescription
rangestring7dTime range: 7d, 30d, 90d, or all

Response (200 OK)

{
  "slug": "my-link",
  "range": "30d",
  "totalClicks": 142,
  "uniqueVisitors": 89,
  "clicksOverTime": [
    { "date": "2026-03-05", "clicks": 12 },
    { "date": "2026-03-06", "clicks": 8 }
  ],
  "referrers": [
    { "name": "Direct", "count": 68 },
    { "name": "https://twitter.com", "count": 34 },
    { "name": "https://news.ycombinator.com", "count": 22 }
  ],
  "countries": [
    { "name": "US", "count": 52 },
    { "name": "BD", "count": 31 },
    { "name": "GB", "count": 18 }
  ],
  "devices": [
    { "name": "desktop", "count": 88 },
    { "name": "mobile", "count": 49 },
    { "name": "tablet", "count": 5 }
  ],
  "browsers": [
    { "name": "Chrome", "count": 72 },
    { "name": "Safari", "count": 38 },
    { "name": "Firefox", "count": 19 }
  ]
}

Response fields

FieldTypeDescription
totalClicksnumberTotal clicks in the time range
uniqueVisitorsnumberDistinct visitors (by hashed IP)
clicksOverTimearrayDaily click counts
referrersarrayTop 10 referrers (null referrer shown as "Direct")
countriesarrayTop 10 countries (ISO 3166-1 alpha-2 codes)
devicesarrayDevice type breakdown
browsersarrayTop 10 browsers

Notes

  • All time ranges are available for Pro users
  • Bot traffic is excluded (Googlebot, Slackbot, etc. are filtered at click time)
  • IP addresses are hashed with SHA-256 for privacy — raw IPs are never stored
  • "Direct" means the referrer header was empty (typed URL, bookmarks, some apps)

On this page