跨境电商怎么自动盯竞品的 Google 价格?50 行 Python 搞定
做跨境的朋友大概都有这个痛点:竞品在 Google Shopping 上调价了,你三天后才发现,广告白烧了三天。
人工每天搜一遍不现实——10 个关键词 × 3 个国家就是 30 次搜索,还得记录对比。这篇分享一个我自己在用的自动化方案:50 行 Python,每天定时抓 Google Shopping 价格,有变动自动提醒。
先说为什么不能直接爬 Google
我们实测过:用干净的美国住宅 IP 直接 HTTP 请求 Google 搜索页,42 次请求,43% 遇到 reCAPTCHA,57% 被"请启用 JavaScript"中间页拦下,0 次拿到可解析的结果页。Google 现在对无 JS 客户端一律拦截,连 2021 年就弃用的 gbv=1 纯 HTML 版这条老路也早死了。
自己上无头浏览器 + 反指纹 + 住宅代理能做,但那是个持续维护的工程,不是脚本。对大多数卖家团队,直接用 SERP API(发关键词、返回解析好的 JSON、按次计费)是成本最低的路径。
准备
本文用 SERPJET(serpjet.io):免费 1000 次/月循环配额,邮箱注册不用绑卡,付费支付宝可充——这也是我选它的主要原因,SerpAPI/Serper 那些都要外币信用卡。注册后拿到 sj_xxx 格式的 key。
先用 curl 验证:
curl -H "X-API-KEY: sj_你的key" \
"https://api.serpjet.io/v1/search?q=anker+power+bank&type=shopping&gl=us&hl=en"
返回 JSON 里 shopping 数组每条带 title(商品名)、price(价格)、source(卖家)、link(链接)。
完整代码
import json
import os
import requests
from datetime import date
from pathlib import Path
API_KEY = os.environ["SERPJET_KEY"] # export SERPJET_KEY=sj_xxx
KEYWORDS = ["anker power bank", "ugreen usb c hub"] # 你要监控的关键词
COUNTRY = "us" # 目标市场:us/de/jp/uk...
HISTORY = Path("price_history.json") # 历史价格存本地 JSON
def fetch_shopping(keyword: str) -> list[dict]:
r = requests.get(
"https://api.serpjet.io/v1/search",
params={"q": keyword, "type": "shopping", "gl": COUNTRY, "hl": "en"},
headers={"X-API-KEY": API_KEY},
timeout=30,
)
r.raise_for_status()
items = r.json().get("shopping", [])
return [
{"title": i.get("title"), "price": i.get("price"),
"source": i.get("source"), "link": i.get("link")}
for i in items if i.get("price")
]
def main():
history = json.loads(HISTORY.read_text()) if HISTORY.exists() else {}
today = date.today().isoformat()
for kw in KEYWORDS:
items = fetch_shopping(kw)
prev = {x["title"]: x["price"] for x in history.get(kw, {}).get("items", [])}
for it in items:
old = prev.get(it["title"])
if old and old != it["price"]:
print(f"[价格变动] {it['title']}: {old} -> {it['price']} ({it['source']})")
history[kw] = {"date": today, "items": items}
print(f"{kw}: 抓到 {len(items)} 条报价")
HISTORY.write_text(json.dumps(history, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()
运行效果:
anker power bank: 抓到 18 条报价
ugreen usb c hub: 抓到 15 条报价
第二天再跑,价格有变化就会打印 [价格变动] 行。想推到企业微信/钉钉,把 print 换成对机器人 webhook 的 POST 就行。
再加一条 crontab 每天早上自动跑:
0 8 * * * cd /path/to/project && SERPJET_KEY=sj_xxx python monitor.py >> monitor.log 2>&1
成本
按 20 个关键词 × 3 个国家 × 每天 1 次 = 1800 次/月:免费额度覆盖 1000 次,超出部分买 $5/2500 次的包,每月约 $2。同样的量在 SerpAPI 要 $25+/月,还得有外币卡。
延伸玩法
type 参数还有 search/news/images/maps 等 10 种:
type=news+ 竞品品牌名 = 舆情监控- 默认
type=search= 关键词自然排名监控(做独立站 SEO 的应该懂) gl参数换国家,美德日各盯一份
同一套代码,改两个参数就是另一个工具。
利益相关:SERPJET 是我做的产品。方法本身是通用的,换任何 SERP API 都能跑,字段名对一下就行。有问题评论区聊。
更多推荐




所有评论(0)