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
| Parameter | Type | Default | Description |
|---|---|---|---|
range | string | 7d | Time 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
| Field | Type | Description |
|---|---|---|
totalClicks | number | Total clicks in the time range |
uniqueVisitors | number | Distinct visitors (by hashed IP) |
clicksOverTime | array | Daily click counts |
referrers | array | Top 10 referrers (null referrer shown as "Direct") |
countries | array | Top 10 countries (ISO 3166-1 alpha-2 codes) |
devices | array | Device type breakdown |
browsers | array | Top 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)