做 SEO 的同学都知道一个反直觉的事实:同一个关键词,在电脑和手机上搜,排名可能完全不同。移动端流量占了大多数,但很多人做排名监控只盯 PC 结果。这篇教大家用谷歌搜索 API 的 device 参数采集移动端结果,对比 PC 和手机排名差异,代码可直接复制。
为什么要单独看移动端结果
- 谷歌对移动端和桌面端使用不同的索引和排名逻辑
- 移动端结果里,本地包(Local Pack)、应用结果出现的比例更高
- 你的网站 PC 排第 3,移动端可能排第 8——只看 PC 会误判
- 移动端是大多数行业的流量主力
所以做排名监控、SEO 分析,PC 和移动端结果要分开看、分开记录。
device 参数是什么
SerpBase(官网 serpbase.dev)的 /google/search 端点有个 device 参数:
default:自动路由(默认值)pc:桌面端会话mobile:移动端会话
同一个 q,换一下 device,返回的就是对应端的排名结果。
第一步:分别抓 PC 和移动端结果
import requests
API_KEY = "在这里填你的Key"
URL = "https://api.serpbase.dev/google/search"
def search(keyword, device="default", hl="zh-cn", gl="cn"):
resp = requests.post(
URL,
headers={"Content-Type": "application/json", "X-API-Key": API_KEY},
json={"q": keyword, "hl": hl, "gl": gl, "device": device},
timeout=30,
)
return resp.json().get("organic", [])
# 同一个词,两种端各抓一次
keyword = "SEO 工具"
pc_results = search(keyword, "pc")
mobile_results = search(keyword, "mobile")
print("PC 端前 5:")
for r in pc_results[:5]:
print(f" {r.get('rank')}. {r.get('title')} | {r.get('link')}")
print("移动端前 5:")
for r in mobile_results[:5]:
print(f" {r.get('rank')}. {r.get('title')} | {r.get('link')}")
第二步:对比两端排名差异
把两端结果按 URL 对齐,找出差异最大的:
def rank_map(results):
return {r.get("link"): r.get("rank") for r in results}
pc_map = rank_map(pc_results)
mobile_map = rank_map(mobile_results)
print("\n两端排名对比(只显示差异):")
all_urls = set(pc_map) | set(mobile_map)
for url in all_urls:
pc_rank = pc_map.get(url, "未上榜")
mob_rank = mobile_map.get(url, "未上榜")
if pc_rank != mob_rank:
print(f" {pc_rank} (PC) -> {mob_rank} (移动) | {url}")
这个对比表就是「移动端适配评估」的基础数据——哪些词移动端掉得厉害,一眼可见。
第三步:批量监控两端排名
把 device 也纳入排名监控的维度,记录每天的 PC 和移动排名:
import sqlite3
import datetime
con = sqlite3.connect("rank.db")
con.execute("""CREATE TABLE IF NOT EXISTS rank_by_device (
keyword TEXT, day TEXT, device TEXT, position INTEGER,
PRIMARY KEY (keyword, day, device)
)""")
keywords = ["SEO 工具", "搜索 API", "谷歌搜索数据"]
for kw in keywords:
for device in ("pc", "mobile"):
results = search(kw, device)
# 假设监控自己的域名 yourdomain.com
pos = next(
(r["rank"] for r in results if "yourdomain.com" in r.get("link", "")),
None,
)
con.execute(
"INSERT OR REPLACE INTO rank_by_device VALUES (?, ?, ?, ?)",
(kw, datetime.date.today().isoformat(), device, pos),
)
print(f"{kw} 完成")
con.commit()
print("两端排名已落库")
这样每天都有 PC 和移动两条排名记录,趋势对比随时可查。
费用与建议
/google/search每次 1 credits,一个词两端各查一次 = 2 credits- 注册送 100 次免费搜索,够验证完整流程
- 标准包 $10 买 2 万次($0.50/千次),永不过期
- 建议先把「哪些词两端差异大」筛出来,只对重点词做持续监控
常见问题
Q:device 不加会怎样?
A:默认 default,自动路由。想稳定对比两端,建议显式传 pc / mobile。
Q:移动端结果里会有额外模块吗?
A:可能。移动端 SERP 的本地包、相关结果占比更高,这些模块在返回里也会出现(如 local_pack 相关结构),字段用 .get() 兜底即可。
Q:这个能用来做移动端 SEO 吗?
A:可以,移动端排名数据就是移动端 SEO 的基础,配合两端对比能定位「适配问题导致掉排名」的页面。
结语
移动端排名不该是「偶尔看一眼」的数据,而该是排名监控的标配维度。一个 device 参数,把 PC 和移动端的对比从「手动切设备」变成「脚本批量跑」。给你的监控加上移动端,比你想的更简单。
完整参数见 SerpBase 官方文档。先跑第一步,看看你的核心词在两端排名差多少。
&spm=1001.2101.3001.5002&articleId=164043312&d=1&t=3&u=37d89e09d7ab4fdfae6e567a6beacf62)
2万+

被折叠的 条评论
为什么被折叠?



