Python 调用 SERP API 实现关键词排名监控(手把手教程)
这个教程解决什么问题
做 SEO 的人都懂:关键词排名不监控,等于蒙着眼睛开车。但手动去 Google 搜、再手抄排名,纯属折磨,几十个词一上午就没了。
这篇教程教你用 Python 调 SERP API,写一个能自动查询关键词排名的脚本。你不用自己写爬虫、不用维护代理,几十行代码就能跑起来。我自己公司内部这套脚本已经跑了几个月,每天定时出一次排名表,稳定省心。
前置准备
你需要准备的东西不多:
- Python 3.8+,装好
requests库(pip install requests) - 一个 SERP API 的账号和 Key(一般注册后会送免费额度,够测试用)
- 一个你想跟踪的关键词清单,比如
["serp api", "google search api", "keyword rank tracker"]
我用的接口是基于 HTTP 的 POST JSON 请求,没有任何 SDK 依赖,requests 就够了。
第一步:写一个查询函数
先写最核心的部分:给一个关键词,返回它在 Google 结果页里的排名和基本信息。
import requests
API_URL = "https://api.serpbase.dev/google/search"
API_KEY = "在这里填你的API_KEY"
def search_keyword(keyword, country="us", language="en"):
resp = requests.post(
API_URL,
headers={
"Content-Type": "application/json",
"X-API-Key": API_KEY,
},
json={
"q": keyword,
"hl": language, # 语言,比如 en / zh-cn
"gl": country, # 国家,比如 us / cn / de
"page": 1,
"device": "default",
},
)
data = resp.json()
return data
# 试一下
data = search_keyword("serp api")
print(data["status"], data["elapsed_ms"], data["credits_charged"])
运行之后,你会看到类似这样的输出:
0 1240 1
status 为 0 表示请求成功,elapsed_ms 是接口处理耗时,credits_charged 是这次请求消耗的点数。注意看这个字段,它在你算成本的时候特别有用。
第二步:解析出排名
搜索结果在返回 JSON 的 organic 字段里,每条记录有 rank(排名)、title(标题)、link(链接)、snippet(摘要)。解析逻辑很简单:
def get_rank(keyword, target_domain="serpbase.dev"):
data = search_keyword(keyword)
for item in data.get("organic", []):
if target_domain in item.get("link", ""):
return item.get("rank")
return None # 没有出现在前10条结果里
print(get_rank("serp api"))
这函数的意义是:我想看某个网站(比如自家站点)针对某个关键词排第几。把 target_domain 换成你的域名,跑一次就知道当前排位。
第三步:批量跑关键词清单
单个词会查了,批量就是加个循环的事:
import csv
import time
keywords = ["serp api", "google search api", "keyword rank tracker", "serp scraping"]
results = []
for kw in keywords:
rank = get_rank(kw, target_domain="你的域名.com")
results.append([kw, rank])
time.sleep(1) # 控制频率,别一口气打满
with open("rank_today.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["关键词", "排名"])
writer.writerows(results)
print("完成,结果已写入 rank_today.csv")
跑完打开 CSV,一眼就能看到每个词的排名。排名是 None 的词,说明当前没进前十,需要重点盯。
第四步:排错小技巧
我调试时遇到最多的问题就几个,遇到报错先对号入座:
- 401 或者鉴权失败:检查
X-API-Key拼写和 Key 本身,还有请求头里 Content-Type 是不是application/json。 - 结果为空 / organic 字段缺失:换个关键词试试。有的词结果少,或者触发了结果页的异常模块,多试两个词能确认是词的问题还是代码的问题。
- 参数不生效:
hl和gl是分开的两个参数,别混成一个;page从 1 开始。 - 成本突然变高:看返回里的
credits_charged,图片和地图类接口计费比普通搜索高,别拿它们跑关键词排名。
关于成本
这种按量付费的接口,单价通常低到 $0.30/1k(也就是一千次搜索,按当前汇率折合人民币两块左右)。注册时送的免费额度,足够你把这个脚本完整测一遍。真到了每天监控几百上千个词,一天也就消耗几千次搜索。关键是没有月费、没有包年套餐,标准充值包的余额不过期,用多少算多少。
下一步可以做的事
- 把这个脚本挂到服务器上,配个定时任务每天跑,排名变化就有历史数据了。
- 把结果存到数据库,用图表工具画趋势线,排名下滑能提前发现。
- 不只查自己,也查竞品的域名,做对比分析。
- 接口还有新闻、视频、地图这些端点,做内容选题或者本地商家数据采集也能用上,具体参数看 SerpBase 的 API 文档 就行。
代码量不大,但跑起来之后能省掉大量重复劳动。建议你先用免费额度把查询函数跑通,再决定要不要把它做成每天自动跑的定时任务。
更多推荐
所有评论(0)