简单介绍一下您的团队,即可获得:
Google Maps 的每次搜索,无论在应用里还是在 API 中,都只到约 60 个地点为止。改为把城市切成小块:每一块多一页,价格不变,列表就会不断增长。
25 次区块搜索,每次一页,费用对比
Gologin Web Unlocker约 $0.02
Google Places API约 $0.80
官方 API 只返回 Google 为它挑选的字段。Maps 页面包含更多内容,而 Web Unlocker 返回整个页面。
| 能拿到什么 | Google Places API | |
|---|---|---|
| 1,000 个含电话和网站的地点 | 约 $1.10 | 约 $1.75 |
| 按星级拆分的评分,5 星到 1 星 | 是 | 否,仅有平均分 |
| 带数量的评论主题 | 是 | 否 |
| 在线预订链接 | 是 | 否,仅有是或否的标记 |
| 保存结果 | 我们不设限制 | 仅限地点 ID |
要抓取的不只是 Google Maps?Web Unlocker 以同样的方式、同样的价格返回任何页面。
Google Maps 会根据搜索发出的位置来排列地点。选择一个国家、地区或城市,Web Unlocker 就会从那里加载地图。
想从您客户所在的城市搜索?获取 API 密钥和免费请求额度。
每次搜索一个请求:发送 Maps 地址,取回渲染后的页面,读取地点。上面的演示运行的是同一个解析器。
填写上面的表单。密钥会在一个工作日内通过邮件送达。
google.com/maps/search/ 加上您的搜索词,以及要从哪个国家、地区或城市发起搜索。
每个地点是页面上的一张卡片,名称、评分、评论、地址和营业时间一目了然。
GOLOGIN_SCRAPING_API_KEY=your_key node maps-search.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst search = 'dentists in Miami';
const params = new URLSearchParams({
url: `https://www.google.com/maps/search/${encodeURIComponent(search)}?hl=en&ucbcb=1`,
render_js: 'true',
wait: '9000',
geo: 'us',
format: 'json',
});
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const { data } = await response.json();
const text = (value) => value?.replaceAll('&', '&').replaceAll(''', "'").replaceAll('"', '"');
const places = data.html
.split('role="article"')
.slice(1)
.map((card) => ({
name: text(card.match(/class="hfpxzc" aria-label="([^"]+)"/)?.[1]),
rating: card.match(/>([1-5]\.\d)</)?.[1],
reviews: card.match(/>\(([\d,]+)\)</)?.[1],
lat: card.match(/!3d(-?[\d.]+)/)?.[1],
lng: card.match(/!4d(-?[\d.]+)/)?.[1],
}));
console.table(places);pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python maps_search.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport html as entities
import os
import re
from urllib.parse import quote
import requests
search = "dentists in Miami"
response = requests.get(
"https://parsing.webunlocker.gologin.com/v1/scrape",
params={
"url": f"https://www.google.com/maps/search/{quote(search)}?hl=en&ucbcb=1",
"render_js": "true",
"wait": "9000",
"geo": "us",
"format": "json",
},
headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
timeout=90,
)
html = response.json()["data"]["html"]
def find(pattern, card):
match = re.search(pattern, card)
return entities.unescape(match.group(1)) if match else None
for card in html.split('role="article"')[1:]:
print(
find(r'class="hfpxzc" aria-label="([^"]+)"', card),
find(r">([1-5]\.\d)<", card),
find(r">\(([\d,]+)\)<", card),
find(r"!3d(-?[\d.]+)", card),
find(r"!4d(-?[\d.]+)", card),
)GOLOGIN_SCRAPING_API_KEY=your_key node maps-tiles.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst query = 'dentists';
const center = { lat: 25.775, lng: -80.23 };
const step = 0.03;
const found = new Map();
async function tile(lat, lng) {
const params = new URLSearchParams({
url: `https://www.google.com/maps/search/${query}/@${lat},${lng},15z?hl=en&ucbcb=1`,
render_js: 'true',
wait: '9000',
geo: 'us',
format: 'json',
});
for (let attempt = 0; attempt < 3; attempt += 1) {
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
if (response.ok) return (await response.json()).data.html;
await new Promise((resolve) => setTimeout(resolve, 10000));
}
return '';
}
for (let row = -2; row <= 2; row += 1) {
for (let col = -2; col <= 2; col += 1) {
const html = await tile((center.lat + row * step).toFixed(4), (center.lng + col * step).toFixed(4));
for (const card of html.split('role="article"').slice(1)) {
const name = card.match(/class="hfpxzc" aria-label="([^"]+)"/)?.[1];
if (name) found.set(name, { name, lat: card.match(/!3d(-?[\d.]+)/)?.[1], lng: card.match(/!4d(-?[\d.]+)/)?.[1] });
}
console.log(`tile ${row},${col}: ${found.size} places so far`);
}
}
console.table([...found.values()]);需要先点击、滚动或打开评论标签页?Cloud Browser 把整个浏览器交给您的代码。
一个搜索页最多列出 7 个地点,每个地点页再补上电话和网站。每页一个价格,1,000 个含联系方式的地点约合 $1.10。
再难的页面,
价格与普通页面相同。
页面加载失败不收费。您只为渲染成功的页面付费,没有其他费用。
1,000 个含电话和网站的地点的费用
竞品公布的价格
Web Unlocker 的 Growth 套餐,每 1,000 个页面 $0.98。
一个账户,一个代理网络,一套生态。按任务需要选择产品。
把 Google Maps 搜索地址发送给 Web Unlocker。它会在您选定的国家用真实浏览器打开页面,并返回渲染后的 HTML。每个地点都在各自的卡片里,所以几行解析代码就能读取名称、评分、评论、类别、地址、营业时间和坐标。上面的代码正是这样做的。
用 requests 库把 Maps 搜索地址发送给 Web Unlocker,再从 HTML 中读取地点。上面的 Python 标签页是一份完整的脚本,共 37 行,已在真实 API 上测试过。
搜索结果和地点页面是公开的,无需登录即可加载。Web Unlocker 像访客的浏览器一样加载它们并返回页面。您采集什么、如何使用,由您自己决定,请对照适用于您项目的规则自行核对。
每页约 7 到 11 个,单次搜索最多到约 60 个:Google 会在那里截断每个列表,应用和 API 都一样。要覆盖整座城市,请按区块逐块搜索。在迈阿密做 25 个区块,返回了 146 家不同的牙医,费用约 2 美分。上面代码中的“整座城市”标签页正是这样做的。
能。从搜索结果中打开一个地点页面:里面有电话、网站、Plus Code,以及该地点提供时的预订链接。这是多一次请求,价格相同。
Google Maps 显示的是地点的网站,而不是邮箱。邮箱在那个网站上,Web Unlocker 以同样的方式打开它:多一页,价格相同。
抓取地点页面:里面有评论摘要、每个星级获得的评分数量、人们提到的主题及其数量,以及热门评论,包含作者、星级、日期和完整正文。
Web Unlocker 返回的是页面,而不是表格,所以在您看到之前不会丢失任何内容。把它转成 CSV 只需几行代码,或者一句提示词:用 Gologin scraping skill 把页面交给 Claude,让它输出 CSV。
能。设置一个国家、地区或城市,页面就会从那里加载。结果取决于搜索发出的位置,所以同一个搜索词在迈阿密和东京会返回不同的地点。
在我们的测试中是 5 到 30 秒:地图先在真实浏览器中加载,然后才返回页面。
渲染后的 HTML、Markdown、纯文本,以及带页面元数据的 JSON。
每 1,000 个页面低于 $1,每个页面价格相同,所以 1,000 个含电话和网站的地点约合 $1.10。页面加载失败不收费。套餐每月 $49 起,含 50,000 次请求。
有,可以免费开始:Web Unlocker 附带 1,000 次免费请求,大约够 1,000 个搜索页或 7,000 个地点。之后每 1,000 个页面低于 $1。
不需要。Web Unlocker 会为您选择 IP,覆盖 195+ 个国家和地区。
这取决于您的需求。Apify 和 Outscraper 出售按地点整理好的现成表格。Web Unlocker 以每页一个价格,从任意城市返回完整的 Maps 页面,所以每个字段都归您,解析方式也由您决定。
简单介绍一下您的团队,即可获得: