流量觀察

流量觀察 API

公開取用台灣網站每月的造訪估算、搜尋與 AI 導流、Radar 排名與標籤彙整本頁的資料來源與計算方式

使用規則

  • 基底網址 https://traffic.observe.tw,全部是 GET,回傳 UTF-8 JSON(CSV 與圖示除外)。不需要 API 金鑰。
  • 允許跨網域(CORS Access-Control-Allow-Origin: *),瀏覽器前端可直接呼叫。
  • 造訪量單位是百萬次(757.3 = 757.3m);占比與成長率是 0–1 的小數(0.36 = 36%);月份寫成 YYYYMM;時間一律是 UTC 的 ISO 8601。
  • 數字是 Similarweb 的造訪估算,不是 page views。Similarweb 沒有估算的月份改用從 Similarweb 平台補登的數字或 GeneHong 試算表,以 visitsSource 標明;Similarweb 回傳 0 視為沒有估算。
  • Similarweb 每小時更新一批網域、Cloudflare Radar 每天一次;請勿以高於每 10 分鐘的頻率輪詢。
  • 錯誤回 {"error": "..."} 加上 HTTP 狀態碼,例如 404 找不到網域或標籤。
  • 路徑與參數中的網域、標籤請 URL 編碼。網頁上的排行預設排除「非台灣」,API 不會,需要時請自行傳 exclude。
  • v1 只做向後相容的變更(新增欄位、新增端點);移除或改名會先在這份文件公告。
  • 使用資料請註明「資料來源:流量觀察 traffic.observe.tw(Similarweb 估算)」。

快速開始

命令列(curl + jq)

# 2026 年 9 月的排行,排除「非台灣」,取前 10 名
curl -s 'https://traffic.observe.tw/api/v1/rankings?month=202609&exclude=%E9%9D%9E%E5%8F%B0%E7%81%A3' | jq '.sites[:10][] | {rank, name, visits}'

# 單一網站每個月的造訪量(百萬次)
curl -s 'https://traffic.observe.tw/api/v1/sites/udn.com' | jq -r '.months[] | [.month, .similarweb // .manual // .sheet] | @tsv'

JavaScript(瀏覽器或 Node 18+)

const res = await fetch('https://traffic.observe.tw/api/v1/rankings?month=202609&topic=' + encodeURIComponent('新聞'));
const { sites } = await res.json();
for (const s of sites.slice(0, 10)) console.log(s.rank, s.name, s.visits.toFixed(2) + 'm');

Python

import requests

r = requests.get("https://traffic.observe.tw/api/v1/topics/all", params={"topic": "新聞"})
for s in r.json()["sites"][:10]:
    print(s["name"], s["visits"])

端點一覽

端點用途
GET /api/v1/months有流量資料的月份
GET /api/v1/rankings單一月份的網站排行
GET /api/v1/rankings.csv同上,以 CSV 下載
GET /api/v1/history所有月份、所有網站的造訪量,一次取得
GET /api/v1/sites/{domain}單一網站的每月數字、試算表紀錄與抓取狀態
GET /api/v1/tags/{domain}單一網站的每個標籤、來源與投票數
GET /api/v1/tech各網站首頁偵測到的技術與統計
GET /api/v1/tech/{domain}單一網域的技術偵測結果、依據與檢查紀錄
GET /api/v1/topics/all跨月份的標籤彙整
GET /api/v1/topics單一月份的標籤統計與成長
GET /icon/{domain}網站圖示(64×64 PNG)
GET /api/v1/statusSimilarweb 抓取排程與最近批次
GET /api/v1端點索引(JSON)
GET /api/v1/openapi.jsonOpenAPI 3.1 規格

排行

GET/api/v1/months

有流量資料的月份

curl -s 'https://traffic.observe.tw/api/v1/months'
在瀏覽器開啟這個範例 ↗
回應欄位1 個
monthsstring[]YYYYMM,新到舊

GET/api/v1/rankings

單一月份的網站排行

依造訪量由大到小。topic、exclude、source 可同時使用;名次在篩選後剩下的網站之間重新計算。沒有 Similarweb 估算的月份用 Pro 補登或試算表數字,visitsSource 會註明。

參數型別說明
monthstring (YYYYMM)資料月份;不在資料範圍內時改用最新月份,預設 最新月份
topicstring只列出有這個標籤的網站
excludestring排除有這些標籤的網站,以逗號分隔(例如 非台灣,內容農場);API 不套網頁的預設排除
source"tag" | "blog" | "manual"只列出某個追蹤來源的網域;manual 包含試算表與手動加入
fromstring (YYYYMM)比較月份:成長、前期名次與各占比的前期值都和它比較,預設 前一個有資料的月份
curl -s 'https://traffic.observe.tw/api/v1/rankings?month=202609&exclude=%E9%9D%9E%E5%8F%B0%E7%81%A3'
在瀏覽器開啟這個範例 ↗
回應欄位28 個
monthstring (YYYYMM)實際使用的月份
topicstring | null
excludestring[]實際排除的標籤(不存在的標籤會被略過)
sourcestring | null
topicsobject[]這個月份(套用 source 後、排除前)各標籤的網站數
topics[].topicstring
topics[].sitesinteger
sitesobject[]排行
sites[].rankinteger依造訪量的名次,只在篩選後的網站之間計算
sites[].domainstring網域
sites[].namestring網站名稱(人工值優先,其次試算表)
sites[].groupstring | null試算表 A 欄(原表標籤 A)
sites[].topicsstring[]目前的標籤
sites[].visitsnumber當月造訪量,百萬次
sites[].prevVisitsnumber | null比較月份的造訪量,百萬次
sites[].growthnumber | null與比較月份相比的成長率(0.1=10%)
sites[].prevRankinteger | null比較月份在同一篩選下的名次
sites[].visitsSource"similarweb" | "manual" | "sheet"造訪量來源:Similarweb 免費資料、從 Similarweb 平台手動補登、GeneHong 試算表
sites[].searchSharenumber | null自然搜尋占造訪的比例(0–1,不含付費搜尋)
sites[].aiSharenumber | nullGenAI 導流占比(0–1)
sites[].taiwanSharenumber | null台灣訪客占比(0–1)
sites[].searchVisitsnumber | null搜尋S:造訪量 × 自然搜尋占比,百萬次
sites[].aiVisitsnumber | nullAI:造訪量 × GenAI 占比,百萬次
sites[].prevSearchSharenumber | null比較月份的自然搜尋占比
sites[].prevAiSharenumber | null比較月份的 GenAI 占比
sites[].prevTaiwanSharenumber | null比較月份的台灣訪客占比
sites[].channelsobject | null當月 Similarweb 各導流來源占比:Direct、SearchOrganic、SearchPaid、SocialOrganic、SocialPaid、Referrals、Mail、DisplayAds、GenAi、Affiliate(0–1);沒有 Similarweb 估算時為 null
sites[].prevChannelsobject | null比較月份的各導流來源占比

GET/api/v1/rankings.csv

同上,以 CSV 下載

UTF-8(含 BOM),欄位:名次、網站名、網域、原表標籤 A、標籤、流量(百萬)、成長、上月名次、搜尋S、AI、搜尋占比、AI占比、台灣占比、來源。

參數型別說明
monthstring (YYYYMM)資料月份;不在資料範圍內時改用最新月份,預設 最新月份
topicstring只列出有這個標籤的網站
excludestring排除有這些標籤的網站,以逗號分隔(例如 非台灣,內容農場);API 不套網頁的預設排除
source"tag" | "blog" | "manual"只列出某個追蹤來源的網域;manual 包含試算表與手動加入
fromstring (YYYYMM)比較月份:成長、前期名次與各占比的前期值都和它比較,預設 前一個有資料的月份
curl -s 'https://traffic.observe.tw/api/v1/rankings.csv?month=202609&topic=%E6%96%B0%E8%81%9E'
在瀏覽器開啟這個範例 ↗

歷史與網站

GET/api/v1/history

所有月份、所有網站的造訪量,一次取得

首頁就是讀這一份資料。每個網站、每個月是一個五格陣列,欄位意義見 fields。回應約數 MB,快取 5 分鐘。

curl -s 'https://traffic.observe.tw/api/v1/history'
在瀏覽器開啟這個範例 ↗
回應欄位16 個
generatedAtstring (ISO 時間)
monthsstring[]YYYYMM,舊到新
fieldsstring[]每月陣列的欄位:造訪量、搜尋S、AI(百萬次)、台灣占比、來源(0 Similarweb、1 試算表、2 平台補登)
topicsstring[]所有用到的標籤
sourcesobject[]各追蹤來源的網域數(tag、blog、manual)
sitesobject以網域為鍵
sites.<domain>.namestring
sites.<domain>.groupstring | null
sites.<domain>.topicsstring[]
sites.<domain>.srcstring[]定期追蹤這個網域的來源(tag、blog、sheet、manual)
sites.<domain>.m.<YYYYMM>[number, number | null, number | null, number | null, 0 | 1 | 2]
radarobject以網域為鍵的 Cloudflare Radar 排名,舊到新
radar.<domain>[].datestring (YYYY-MM-DD)
radar.<domain>[].rankinteger | null前 100 名的確切名次
radar.<domain>[].bucketinteger | null「前 N 名」級距
radar.<domain>[].gtinteger | null「未入前 N 名」

GET/api/v1/sites/{domain}

單一網站的每月數字、試算表紀錄與抓取狀態

每個月分開列出 Similarweb、平台補登與試算表三種數字;網站頁用的就是這一份。沒有任何資料的網域回 404。

參數型別說明
domain路徑string網域,例如 udn.com
curl -s 'https://traffic.observe.tw/api/v1/sites/udn.com'
在瀏覽器開啟這個範例 ↗
回應欄位20 個
domainstring
namestring
topicsstring[]
monthsobject[]舊到新
months[].monthstring (YYYYMM)
months[].similarwebnumber | nullSimilarweb 免費資料的造訪量,百萬次
months[].noEstimatebooleanSimilarweb 回傳 0,表示這個月沒有估算
months[].manualnumber | null從 Similarweb 平台手動補登的造訪量,百萬次
months[].sheetnumber | null試算表的造訪量,百萬次
months[].searchSharenumber | null
months[].aiSharenumber | null
months[].taiwanSharenumber | null
labelsobject[]試算表原始紀錄:month、name、group(A 欄)、topics(B 欄)、visits、adjusted(人工調整,不採用)
profileobject | nullSimilarweb 最新一個有估算的月份的組成:month、countries(前 5 名 code、share)、channels(Direct、SearchOrganic、SearchPaid、SocialOrganic、SocialPaid、Referrals、Mail、DisplayAds、GenAi、Affiliate 的占比)、bounceRate、pagesPerVisit、timeOnSite(秒)、globalRank、countryRank、categoryRank
categorystring | nullSimilarweb 的網站類別,例如 Finance/Investing
similarSitesstring[]Similarweb 列出的相似網站
tagsobject[]每個標籤的來源與票數,同 /api/v1/tags/{domain}
watchersobject[]追蹤這個網域的來源:requester、kind、requestedAt
radarobject[]Cloudflare Radar:dateStart、dateEnd、rank、bucket、bucketLowerBound、fetchedAt
stateobject | nullSimilarweb 抓取狀態:lastSuccessAt、lastAttemptAt、nextAttemptAt、failures、lastError

GET/icon/{domain}

網站圖示(64×64 PNG)

只回應本站已知的網域;圖示由伺服器向 Google favicon 服務抓取並快取 30 天。沒有圖示時回 404。

參數型別說明
domain路徑string網域
curl -s 'https://traffic.observe.tw/icon/udn.com'
在瀏覽器開啟這個範例 ↗

標籤

GET/api/v1/tags/{domain}

單一網站的每個標籤、來源與投票數

包含未顯示的標籤。編輯清單(或試算表)的標籤一律顯示;AI 初判在不同意比同意多 2 票時隱藏;讀者新增的標籤在同意多於不同意時顯示;管理員覆寫優先。只回票數,不回投票者。未知網域回 404。

參數型別說明
domain路徑string網域,例如 udn.com
curl -s 'https://traffic.observe.tw/api/v1/tags/udn.com'
在瀏覽器開啟這個範例 ↗
回應欄位8 個
domainstring
tagsobject[]顯示中的在前
tags[].tagstring
tags[].source"editor" | "sheet" | "ai" | "community" | "admin"編輯清單、試算表、AI 初判、讀者新增、管理員覆寫
tags[].visibleboolean是否顯示在網站與排行上
tags[].agreesinteger
tags[].disagreesinteger
tags[].adminOverride"set" | "hide" | null

GET/api/v1/topics/all

跨月份的標籤彙整

以網站目前的標籤彙整所有已知月份;同一網域在一個標籤內只算一次。指定 topic 時另附該標籤的完整網站清單;不存在的標籤回 404。

參數型別說明
topicstring加上這個標籤的網站清單
curl -s 'https://traffic.observe.tw/api/v1/topics/all?topic=%E6%96%B0%E8%81%9E'
在瀏覽器開啟這個範例 ↗
回應欄位11 個
scope"all"
monthsstring[]有流量資料的月份
topicsobject[]依累計造訪量排序
topics[].topicstring
topics[].sitesinteger網站數(含尚無流量的網站)
topics[].sitesWithDatainteger
topics[].visitsnumber | null累計造訪量,百萬次
topics[].searchSharenumber | null以有資料的網站月份加權
topics[].aiSharenumber | null
topicstring指定 topic 時才有
sitesobject[]指定 topic 時才有:domain、name、topics、months(有資料月數)、visits、searchShare、aiShare

GET/api/v1/topics

單一月份的標籤統計與成長

舊版介面,保留給既有使用者;新的使用方式請用 /api/v1/topics/all。

參數型別說明
monthstring (YYYYMM)資料月份;不在資料範圍內時改用最新月份,預設 最新月份
curl -s 'https://traffic.observe.tw/api/v1/topics?month=202609'
在瀏覽器開啟這個範例 ↗
回應欄位9 個
monthstring (YYYYMM)
topics[].topicstring
topics[].sitesinteger
topics[].visitsnumber當月造訪量合計,百萬次
topics[].visitsGrowthnumber | null
topics[].searchSharenumber | null
topics[].aiSharenumber | null
topics[].searchGrowthnumber | null
topics[].aiGrowthnumber | null

網站技術

GET/api/v1/tech

各網站首頁偵測到的技術與統計

範圍是所有追蹤清單與試算表的網域。每個首頁約一個月檢查一次,比對 Wappalyzer 社群版規則中本站列出的技術;「unknown」表示首頁沒有清單內技術的痕跡,不代表沒有技術。technologies 依 source 篩選後計算,sites 再依 category、technology、status 篩選。

參數型別說明
source"tag" | "blog" | "manual"只看某個追蹤來源的網域
categorystring只列出有這類技術的網站,例如 cms、cdn、analytics、ads
technologystring只列出用這項技術的網站,例如 wordpress
status"detected" | "unknown" | "failed" | "blocked" | "unchecked"只列出最近一次是這個結果的網站
curl -s 'https://traffic.observe.tw/api/v1/tech?technology=wordpress'
在瀏覽器開啟這個範例 ↗
回應欄位9 個
rulesstring | null目前的規則版本(wappalyzer-<commit 前 12 碼>)
coverageobjectsites、checked、withSnapshot(有成功結果)、detected、unknown、failed、blocked
technologies[]objectid、name、category、sites(用它的網站數),多到少
sites[].domainstring
sites[].status"detected" | "unknown" | "failed" | "blocked" | null最近一次檢查的結果;null 是還沒檢查
sites[].errorCodestring | nullrobots、waf、rate-limit、http-error、not-html、timeout、network、address
sites[].observedAtstring | null保留的成功結果是何時讀到的;之後失敗也會保留
sites[].origin"traffic" | "blog" | nullblog 是從 blog.observe.tw 併入、本站還沒自己檢查過的結果
sites[].detections[]objectid、name、category、version(只來自 meta generator,否則 unknown)

GET/api/v1/tech/{domain}

單一網域的技術偵測結果、依據與檢查紀錄

任何檢查過的網域都有,包括有人在 /tech/ 查詢、不在追蹤清單裡的網域。沒檢查過回 404。

參數型別說明
domain路徑string網域,例如 udn.com
curl -s 'https://traffic.observe.tw/api/v1/tech/udn.com'
在瀏覽器開啟這個範例 ↗
回應欄位9 個
status"detected" | "unknown" | "failed" | "blocked"最近一次檢查的結果
errorCodestring | null
httpStatusinteger | null
lastAttemptAtstring
observedAtstring | null
sourceUrlstring | null讀到的頁面(轉址後,去掉查詢字串)
ruleVersionstring | null
origin"traffic" | "blog"
detections[]objectid、name、category、confidence(0–1,CDN 與主機最多 0.4)、version、ruleId、ruleVersion、observedAt、evidence(kind 與固定的規則類別說明,不含頁面內容)

抓取與服務

GET/api/v1/status

Similarweb 抓取排程與最近批次

抓取狀態頁用的資料。每小時一輪,每輪最多 budget 個網域。

curl -s 'https://traffic.observe.tw/api/v1/status'
在瀏覽器開啟這個範例 ↗
回應欄位9 個
budgetinteger每輪上限
prioritystring[]來源的優先序
coolingDownUntilstring (ISO 時間) | null被 Similarweb 拒絕後暫停到何時
watchedinteger追蹤中的網域數
dueinteger目前到期的網域數
queueobject[]排程:domain、position、requester、reason(new、refresh、catch-up、lookup)、lastSuccessAt、expectedAt
watchersobject[]各來源與類型的網域數:requester、kind、domains
last24hobject近 24 小時的請求結果計數
runsobject[]最近批次:startedAt、finishedAt、budget、sent、ok、failed、refused、note

GET/api/v1

端點索引(JSON)

curl -s 'https://traffic.observe.tw/api/v1/'
在瀏覽器開啟這個範例 ↗
回應欄位4 個
servicestring
docsstring這份文件的網址
openapistringOpenAPI 規格的網址
endpointsobject「方法 路徑」對應用途

GET/api/v1/openapi.json

OpenAPI 3.1 規格

curl -s 'https://traffic.observe.tw/api/v1/openapi.json'
在瀏覽器開啟這個範例 ↗
資料來源與計算方式

流量是 Similarweb 對整個網域的每月造訪估算,數字後的 k、m、b 分別代表千、百萬、十億次(四位有效數字);不是 page views 或不重複讀者。搜尋S=造訪 × 自然搜尋占比(不含付費搜尋),AI=造訪 × GenAI 導流占比,與 GeneHong「Similar Web」試算表的算法相同。

Similarweb 沒有的月份以試算表數字補上並標「表」,人工調整(如「/5」)的列不採用。Similarweb 回傳 0 代表那個月沒有估算(小網站,或它不單獨計算的子網域如 tw.news.yahoo.com),視同沒有資料,不當成 0 次造訪。搜尋與 AI 占比只提供抓取時最新一個月,缺少的月份不推算;試算表中的 Ahrefs 搜尋數字與 A/S 比值不在本站資料範圍內。

Cloudflare Radar 是依 1.1.1.1 DNS 查詢的全球熱門排名:前 100 名才有名次,其餘只有「前 N 名」級距,不能換算成造訪量。