Post: 通过 Umami API 获取访客数据

Published 2026-04-06 08:36 859 words 5 min read

This post is not yet available in English. Showing the original.
详细讲解如何通过 Umami API 获取网站访客数据,包括 Umami Cloud 与自托管版本的 API 密钥获取、分享链接 Token 认证方式,以及 /api/websites/:websiteId/stats 接口的调用、参数过滤与新旧版本数据结构差异,完整实现页面访问量、独立访客等数据的程序化获取。

认证

Umami API 需要认证,可以是使用 用户的 API 密钥 或是 使用网站分享中的 API 密钥 x-umami-share-token

获取用户的 API 密钥

Umami Cloud 用户获取 API 密钥

如果你的是 Umami Cloud 用户,你需要在 Umami Cloud 控制台中生成 API 密钥。

Umami Cloud API 密钥文档

Umami Self-Hosted 用户获取 API 密钥

如果你的 Token 会对外公开,建议转移网站到一个团队,然后添加一个仅有访问权限的用户,使用该用户的 Token 进行认证。

如果你的是 Umami Self-Hosted 用户,需要在 POST /api/auth/login 发送以下请求体,

{
  "username": "your-username",
  "password": "your-password"
}

如果登录成功,你应该会收到如下回复,记下 token

{
  "token": "eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A",
  "user": {
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "username": "admin",
    "role": "admin",
    "createdAt": "2000-00-00T00:00:00.000Z",
    "isAdmin": true
  }
}

获取分享链接的 API 密钥

给网站开启分享链接后,你将会收到一个分享链接,如下:

https://u.ksable.top/share/gR1PdRDiutFusWn6

给链接的 pathname 前添加 api,如下:

https://u.ksable.top/api/share/gR1PdRDiutFusWn6

然后打开它,你将会收到如下回复,记下 token

{
  "websiteId": "a-b-c-d",
  "token": "a.b.c"
}

给接口添加认证

给接口添加认证,你需要在请求头中添加 authorization 字段,值为 Bearer {token}

GET /api/*
Authorization: Bearer a.b.c

如果你是从分享链接获取的 token,你需要在请求头中添加 x-umami-share-token 字段,值为 token

GET /api/*
x-umami-share-token: a.b.c

获取访客数据

接口地址

GET /api/websites/:websiteId/stats

参数

参数参数类型描述
startAtnumber开始时间,单位毫秒
endAtnumber结束时间,单位毫秒
filtersobject过滤参数

例如:

GET /api/websites/:websiteId/stats
Authorization: Bearer a.b.c

将会收到如下回复,

{
  "pageviews": 15171,
  "visitors": 4415,
  "visits": 5680,
  "bounces": 3567,
  "totaltime": 809968,
  "comparison": {
    "pageviews": 38675,
    "visitors": 10568,
    "visits": 14595,
    "bounces": 9364,
    "totaltime": 2182387
  }
}

其中 pageviews 是页面访问量,visitors 是独立访客数量,通常只会用到这两个指标。

一些字段的描述如下:

字段描述
pageviews页面点击
visitors独立访客数量
visits独立访问次数
bounces访问单一页面的访客数量
totaltime在网站上花的时间
注意 如果你使用的是旧版的 Umami,返回的数据结构可能与新版不同

旧版 Umami 返回的数据结构如下:

{
  "pageviews": {
    "value": 15171
  },
  "visitors": {
    "value": 4415
  },
  "visits": {
    "value": 5680
  },
  "bounces": {
    "value": 3567
  },
  "totaltime": {
    "value": 809968
  }
}

可以根据需要,添加 filters 参数来过滤数据。如 path=/post/bian-jian-tong-guo-api-huo-qu-umami-fang-ke-shu-ju

GET /api/websites/:websiteId/stats?path=/post/bian-jian-tong-guo-api-huo-qu-umami-fang-ke-shu-ju

将会返回在 path 为 /post/bian-jian-tong-guo-api-huo-qu-umami-fang-ke-shu-ju 的访客数据。

一些过滤参数
参数类型说明
pathstringURL 路径
referrerstring引荐来源
titlestring页面标题
querystring查询参数
browserstring浏览器
osstring操作系统
devicestring设备名称(例如:Mobile)
countrystring国家
regionstring地区/州/省份
citystring城市
languagestring浏览器语言
hostnamestring主机名
tagstring标签
eventstring事件
distinctIdstring唯一标识 ID
utmSourcestringUTM 来源
utmMediumstringUTM 媒介
utmCampaignstringUTM 活动名称
utmContentstringUTM 内容
utmTermstringUTM 关键词
segmentuuid用户分群 UUID
cohortuuid用户群组 UUID

其它的一些 API 参见 Umami API 文档

参考

If you enjoyed this, leave a comment~