快速回答
如何通过 SERP API 获取特定国家和城市的 Google 搜索结果?
使用 SerpCrypto 时,将 gl 设为国家代码,hl 设为语言,location 设为用 City, Region, Country 表示的城市,例如 Austin, Texas, United States。添加 device=mobile 可获取电话结果。每种组合都是一次查询,消耗 1 积分,起价 US$0.30/千次搜索,返回结果会回显所应用的设置。加密货币支付,无需 KYC。
每个位置参数有什么作用?
国家(gl)、语言(hl)、Google 域名和城市级位置字符串,支持桌面端或移动端.
| 参数 | 默认值 | 作用 |
|---|---|---|
gl | us | 搜索结果所在的国家。两位字母,ISO 3166-1,小写。英国用 gb。 |
hl | en | 界面语言:标签、People Also Ask 以及部分摘要会跟随该语言。 |
location | 无 | 国家内的精确地点,用于本地包和城市级排名。 |
google_domain | gl 的域名 | 由哪个 Google 域名执行搜索,例如 google.de。对 Bing 无效。 |
device | desktop | desktop 或 mobile:两者的布局和本地块不同。 |
gl、hl 和 location 之间有什么区别?
gl 表示你想要哪个国家的结果。hl 表示用户阅读的语言,这会改变界面,通常也会改变问题和摘要。location 将国家缩小到某个城市或地区,只要查询带有本地意图就很重要。
它们可以自由组合。身在瑞士的法语用户是 gl=ch、hl=fr。来自柏林的英语搜索是 gl=de、hl=en、location=Berlin, Berlin, Germany。保持 gl 与 location 的国家一致:一个国家的城市配上另一个国家的 gl,会得到任何真实访客都看不到的结果。
如何定位到某个城市?
用英文书写地点,从最小单位到最大单位:City, Region, Country。示例:Austin, Texas, United States、Manchester, England, United Kingdom、Munich, Bavaria, Germany、Lyon, Auvergne-Rhone-Alpes, France。使用城市名称,而不是街道或邮编。
检查回答中的 search_parameters.location:它显示实际应用的地点。无法使用的值会返回 400 invalid_parameter,不消耗任何费用,因此可以低成本地测试一组地点。
# The same query from two cities: compare the local packs
for city in "Austin, Texas, United States" "Denver, Colorado, United States"; do
curl -sG "https://serpcrypto.com/api/v1/search" \
-H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
--data-urlencode "q=emergency plumber" \
--data-urlencode "location=$city" \
-d gl=us -d hl=en -d device=mobile \
| jq -r --arg city "$city" '.local_results[]? | "\($city)\t\(.position)\t\(.title)"'
done常见市场应该用哪些代码?
25 个常用市场。google_domain 默认取 gl 的域名,因此很少需要设置。
| 国家 | gl | 典型 hl | Google 域名 |
|---|---|---|---|
| 美国 | us | en | google.com |
| 英国 | gb | en | google.co.uk |
| 加拿大 | ca | en、fr | google.ca |
| 澳大利亚 | au | en | google.com.au |
| 爱尔兰 | ie | en | google.ie |
| 新西兰 | nz | en | google.co.nz |
| 德国 | de | de | google.de |
| 法国 | fr | fr | google.fr |
| 西班牙 | es | es | google.es |
| 意大利 | it | it | google.it |
| 荷兰 | nl | nl | google.nl |
| 瑞士 | ch | de, fr, it | google.ch |
| 波兰 | pl | pl | google.pl |
| 瑞典 | se | sv | google.se |
| 土耳其 | tr | tr | google.com.tr |
| 巴西 | br | pt-BR | google.com.br |
| 墨西哥 | mx | es | google.com.mx |
| 阿根廷 | ar | es | google.com.ar |
| 印度 | in | en,hi | google.co.in |
| 日本 | jp | ja | google.co.jp |
| 韩国 | kr | ko | google.co.kr |
| 印度尼西亚 | id | id | google.co.id |
| 越南 | vn | vi | google.com.vn |
| 新加坡 | sg | en | google.com.sg |
| 南非 | za | en | google.co.za |
语言代码就是 Google 界面使用的那些;对于双语国家,选择你的受众阅读的语言。
我应该使用哪个 Google 域名?
通常不需要:不传 google_domain,API 就会使用上方表格中 gl 国家的域名。只有要复现某个特定设置时才设置它,例如 google.com 搭配 gl=gb。
仅凭域名并不能确定结果的所属国家。gl 和 location 起主要作用,因此响应会在 search_parameters 中记录这三项。
移动端和桌面端的结果会有差异吗?
通常会有。移动端页面可能会以不同顺序排列区块、为附近意图显示更多本地结果,并把摘要截得更短。如果你的访客大多使用手机,就追踪 device=mobile;要全面了解,就两者都追踪,并在每条排名中记录设备。
每种设备都是一次独立的搜索,因此两者都追踪会使这些关键词的积分翻倍。按 100,000 次搜索 积分包的 US$0.56/千次搜索,1,000 个关键词在两种设备上追踪 30 天会用掉 60,000 次查询。
如何在一个脚本中比较多个国家?
遍历一个市场列表,并保留 API 实际应用的内容。下面的 Python 示例把一条查询发往三个国家,每个国家各带一个城市,并打印所用的域名和第一个链接。
import os
import requests
MARKETS = [
{"gl": "de", "hl": "de", "location": "Munich, Bavaria, Germany"},
{"gl": "fr", "hl": "fr", "location": "Lyon, Auvergne-Rhone-Alpes, France"},
{"gl": "br", "hl": "pt-BR", "location": "Curitiba, State of Parana, Brazil"},
]
for market in MARKETS:
r = requests.get(
"https://serpcrypto.com/api/v1/search",
params={"q": "running shoes", **market},
headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
timeout=60,
)
r.raise_for_status()
applied = r.json()["search_parameters"]
top = r.json().get("organic_results", [])[:1]
print(applied["gl"], applied.get("google_domain"), [x["link"] for x in top])Bing 接受相同的参数吗?
对 q、gl、hl、device 和 page 是:在 engine=bing 中使用相同的代码。google_domain 不适用于 Bing,会被忽略。返回结果的框架相同,包含 organic_results 和 related_searches;使用场景见 Bing 页面。
位置相关问题
我可以按 ZIP 码或 GPS 坐标搜索吗?
版本 1 不支持。location 接受城市级地名。如需获取地图上某点附近的结果,请使用 engine=google_maps,并在查询中指明该区域,例如 dentist Brooklyn。
为什么 gl=de 时返回的是英文标签?
因为 hl 默认为 en。同时设置 hl=de,才能获得德国本地用户看到的德语界面、问题和标签。
位置会影响单次搜索的价格吗?
不会。每次搜索都花费 1 积分,无论国家、城市、语言或设备。预付的搜索积分永不过期:未使用的查询会一直留在你的账户中,直到你使用它们。
英国的代码是哪个?
使用 gb,即其 ISO 3166-1 代码。对应的 Google 域名是 google.co.uk,当 gl=gb 时 API 会为你选择该域名。