做视频运营、内容监测、竞品视频分析的同学们,应该需要过这样的数据:某个关键词下,谷歌推荐了哪些视频、来自哪个频道、多长、什么时候发的。这篇教大家用谷歌视频搜索 API 自动化采集,返回结构化 JSON,不需要解析网页,代码可直接复制。
视频采集要拿什么
谷歌视频结果页,每条结果包含:
- 标题:视频标题
- 频道/来源:
source(频道名) - 链接:视频链接(
link) - 时长:
duration(视频长度) - 发布时间:
time/published_at - 缩略图:
thumbnail_url
拿到这些,视频选题参考、竞品频道监控、内容情报都能做。
接口与准备
我用的接口是 SerpBase(官网 serpbase.dev)的 /google/videos 端点,POST JSON + X-API-Key 认证。注册送 100 次免费搜索,不需要绑卡。
一个好消息:视频端点和网页搜索一样,每次 1 credits(比图片、地图端点便宜)。
第一步:抓一个关键词的视频
核心接口:POST https://api.serpbase.dev/google/videos
import requests
API_KEY = "在这里填你的Key"
URL = "https://api.serpbase.dev/google/videos"
resp = requests.post(
URL,
headers={"Content-Type": "application/json", "X-API-Key": API_KEY},
json={"q": "python asyncio tutorial", "hl": "en", "gl": "us"},
timeout=30,
)
data = resp.json()
for v in data.get("videos", [])[:10]:
print(v.get("rank"), "|", v.get("title"))
print(" 频道:", v.get("source"), "| 时长:", v.get("duration"), "| 时间:", v.get("time"))
print(" 链接:", v.get("link"))
print()
返回的 videos 数组里,每条带 title、source(频道)、duration、time、link、thumbnail_url。
第二步:批量采集并导出表格
把关键词列表化,逐个抓取,汇总成 CSV:
import requests
import csv
API_KEY = "在这里填你的Key"
URL = "https://api.serpbase.dev/google/videos"
def fetch_videos(keyword, hl="en", gl="us"):
resp = requests.post(
URL,
headers={"Content-Type": "application/json", "X-API-Key": API_KEY},
json={"q": keyword, "hl": hl, "gl": gl},
timeout=30,
)
return resp.json().get("videos", [])
keywords = ["python asyncio tutorial", "python web scraping", "python 爬虫教程"]
rows = []
for kw in keywords:
for v in fetch_videos(kw):
rows.append([
kw,
v.get("title", ""),
v.get("source", ""),
v.get("duration", ""),
v.get("time", ""),
v.get("link", ""),
])
print(f"{kw}: 累计 {len(rows)} 条")
with open("videos.csv", "w", newline="", encoding="utf-8-sig") as f:
writer = csv.writer(f)
writer.writerow(["关键词", "标题", "频道", "时长", "时间", "链接"])
writer.writerows(rows)
print(f"已导出 {len(rows)} 条视频信息")
utf-8-sig 保证 Excel 打开中文不乱码。
第三步:筛选高质量视频(一个实用场景)
拿到数据后按频道和时长过滤,快速找出值得参考的视频:
# 找出时长在 5-20 分钟、且排名靠前的视频
candidates = []
for row in rows:
duration = row[3]
if duration and "分钟" in duration:
try:
minutes = int(duration.replace("分钟", "").strip())
if 5 <= minutes <= 20:
candidates.append(row)
except ValueError:
pass
print(f"符合条件的视频 {len(candidates)} 条")
for c in candidates[:10]:
print(" -", c[1], "|", c[2], "|", c[3])
视频时长是内容质量的一个粗筛信号,配合排名和频道,能帮你快速定位「这个关键词下谁在做、怎么做」。
费用与建议
/google/videos每次 1 credits- 注册送 100 次免费搜索,够跑一个完整流程
- 标准包 $10 买 2 万次($0.50/千次),永不过期
- 批量前先小样本验证字段,再放大规模
常见问题
Q:source 和 duration 有时是空的?
A:这两个字段是从谷歌元数据文本解析的,属于可选字段,代码里用 .get() 兜底就行。
Q:没有视频卡片时返回什么?
A:文档说明,如果谷歌没渲染专门的视频卡片,接口会按新闻式结构做兼容提取,返回字段可能不同,同样用 .get() 兜底。
Q:能抓 YouTube 的完整信息吗?
A:这里拿到的是视频链接和元数据,具体视频页详情需要另查。
结语
视频采集的核心价值,是把「搜关键词、翻视频结果」变成「批量拿到结构化列表」。视频运营和竞品分析最缺的就是「这个领域谁在出内容、出的什么」——这份数据正好补上。
完整参数见 SerpBase 官方文档。先跑通第一步,看看你的行业关键词下都有哪些视频。
&spm=1001.2101.3001.5002&articleId=164011667&d=1&t=3&u=e4daea6c2fb44f4cba1c6a0768cd1a3f)
7786

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



