Saisissez un lieu et Web Unlocker renvoie sa page d'avis Google : la note, le nombre de notes pour chaque étoile, les thèmes que les gens mentionnent et les meilleurs avis avec leur texte, facturés comme une seule page. Une page qui ne se charge pas ne coûte rien.
1 000 requêtes gratuites · Facturé en cas de succès · 195+ pays · Prêt pour Claude
Une page Google Maps met de 5 à 20 secondes à se charger, et une page qui revient vide est redemandée. Le travail continue, inutile de cliquer à nouveau.
Prêt pour vos propres lieux ? Obtenez une clé API ou réservez une démo.
Parlez-nous un peu de votre équipe et recevez :
La page Google Maps d'un lieu contient sa note, le nombre de notes pour chaque étoile, les thèmes que les gens mentionnent et les meilleurs avis, et Web Unlocker la facture comme une seule page. La Google Places API facture chaque appel et renvoie 5 avis. Les scrapers d'avis facturent chaque avis.
Une page difficile coûte
autant qu'une page facile.
Une page qui ne se charge pas ne coûte rien. Vous payez une page rendue, rien d'autre.
Ce que coûtent les avis Google de 1 000 lieux
1 000 pages de lieux avec leurs meilleurs avis, aux prix publiés
Web Unlocker avec le forfait Growth, $0.98 pour 1 000 pages. Les autres facturent les 3 000 avis de ces pages, ou 1 000 appels de 5 avis chacun.
L'API officielle s'arrête à 5 avis par lieu et facture chaque appel. Les scrapers d'avis facturent chaque avis. Voici ce que demande chaque voie pour les mêmes 1 000 lieux.
| Ce que cela demande | Google Places API | Apify | Outscraper | |
|---|---|---|---|---|
| Démarrer sans clé API Google | Oui | Non | Oui | Oui |
| Vous payez | Une page | Chaque appel | Chaque avis | Chaque avis |
| 1 000 lieux avec leurs meilleurs avis | $0.98 | $25 | $1.80 | $9 |
| Notes réparties par étoiles, de 5 à 1 | Oui | Non, la moyenne seulement | Non | Oui |
| Thèmes d'avis avec leur nombre | Oui | Non | Non | Non |
| La page entière en HTML ou Markdown | Oui | Non | Non | Non |
Vous scrapez plus que les avis Google ? Web Unlocker renvoie n'importe quelle page de la même façon, au même prix.
Web Unlocker n'a pas d'alertes intégrées. Votre script ouvre la page de chaque lieu une fois par jour : quand la note ou le nombre d'avis a bougé, il y a de nouveaux avis à lire. 1 000 lieux reviennent à $0.98 par jour.
Les outils de suivi d'avis démarrent à $65 par mois et par lieu.
Votre propre vérification coûte $0.001.
Une requête par lieu : envoyez l'adresse Google Maps du lieu, recevez la page rendue, lisez la note, la répartition des étoiles, les thèmes et les avis. La démo ci-dessus utilise le même analyseur.
Remplissez le formulaire ci-dessus. La clé arrive par e-mail sous un jour ouvré.
google.com/maps/search/ suivi du lieu et de sa ville, et du pays d'où l'ouvrir.
La page contient la note, le nombre de notes pour chaque étoile, les thèmes avec leur nombre et les meilleurs avis, chacun avec l'auteur, les étoiles, la date et le texte.
pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python google_reviews.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport json
import os
import re
import time
from urllib.parse import quote_plus
import requests
place = "Franklin Barbecue Austin"
address = f"https://www.google.com/maps/search/{quote_plus(place)}?hl=en&ucbcb=1"
html = ""
for attempt in range(3):
response = requests.get(
"https://parsing.webunlocker.gologin.com/v1/scrape",
headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
params={
"url": address if attempt == 0 else f"{address}&_r={int(time.time())}",
"render_js": "true",
"wait": "9000",
"geo": "us",
"format": "json",
},
timeout=120,
)
html = response.json().get("data", {}).get("html", "")
if 'data-review-id="' in html:
break
def first(pattern):
match = re.search(pattern, html)
return match.group(1) if match else None
blocks = {}
for match in re.finditer(r'data-review-id="([^"]+)"', html):
blocks.setdefault(match.group(1), match.start())
starts = sorted(blocks.values()) + [len(html)]
reviews = []
for start, end in zip(starts, starts[1:]):
block = html[start:end]
author = re.search(r'class="d4r55[^"]*"[^>]*>([^<]+)<', block)
text = re.search(r'class="wiI7pd"[^>]*>([^<]*)<', block)
if author and text:
stars = re.search(r'aria-label="(\d) stars?"', block)
date = re.search(r'class="rsqaWe"[^>]*>([^<]+)<', block)
reviews.append({
"author": author.group(1),
"stars": int(stars.group(1)) if stars else None,
"date": date.group(1) if date else None,
"text": text.group(1),
})
print(json.dumps({
"name": first(r"<h1[^>]*>([^<]+)"),
"rating": first(r'class="F7nice[^"]*"[^>]*>\s*<span><span aria-hidden="true">([\d.]+)<'),
"ratings": first(r'aria-label="([\d,]+) reviews?">\('),
"stars": {level: first(rf'aria-label="{level} stars?, ([\d,]+) reviews?"') for level in "54321"},
"topics": dict(re.findall(r'aria-label="([^",]+), mentioned in ([\d,]+) reviews?"', html)),
"reviews": reviews,
}, indent=2, ensure_ascii=False))GOLOGIN_SCRAPING_API_KEY=your_key node reviews-batch.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst places = [
'Franklin Barbecue Austin',
'Katz Delicatessen New York',
'Relax and Smile Dental Care Miami',
];
const number = (text) => (text ? Number(text.replace(/,/g, '')) : null);
async function pageOf(place, attempt) {
const address = `https://www.google.com/maps/search/${encodeURIComponent(place).replace(/%20/g, '+')}?hl=en&ucbcb=1`;
const params = new URLSearchParams({
url: attempt === 1 ? address : `${address}&_r=${Date.now()}`,
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 },
});
return (await response.json()).data?.html ?? '';
}
async function reviewsOf(place) {
let html = '';
for (let attempt = 1; attempt <= 3 && !html.includes('data-review-id='); attempt += 1) {
html = await pageOf(place, attempt);
}
const star = (level) => number(html.match(new RegExp(`aria-label="${level} stars?, ([\\d,]+) reviews?"`))?.[1]);
return {
place: html.match(/<h1[^>]*>([^<]+)/)?.[1] ?? place,
rating: number(html.match(/class="F7nice[^"]*"[^>]*>\s*<span><span aria-hidden="true">([\d.]+)</)?.[1]),
ratings: number(html.match(/aria-label="([\d,]+) reviews?">\(/)?.[1]),
fiveStar: star(5),
oneStar: star(1),
topReview: html.match(/class="wiI7pd"[^>]*>([^<]{0,80})/)?.[1],
};
}
const rows = [];
for (const place of places) rows.push(await reviewsOf(place));
console.table(rows);GOLOGIN_SCRAPING_API_KEY=your_key node reviews-watch.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { readFile, writeFile } from 'node:fs/promises';
const places = ['Franklin Barbecue Austin', 'Katz Delicatessen New York', 'Relax and Smile Dental Care Miami'];
const FILE = 'reviews.json';
const number = (text) => (text ? Number(text.replace(/,/g, '')) : null);
async function pageOf(place, attempt) {
const address = `https://www.google.com/maps/search/${encodeURIComponent(place).replace(/%20/g, '+')}?hl=en&ucbcb=1`;
const params = new URLSearchParams({
url: attempt === 1 ? address : `${address}&_r=${Date.now()}`,
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 },
});
return (await response.json()).data?.html ?? '';
}
async function countOf(place) {
let html = '';
for (let attempt = 1; attempt <= 3 && !html.includes('data-review-id='); attempt += 1) {
html = await pageOf(place, attempt);
}
return {
rating: number(html.match(/class="F7nice[^"]*"[^>]*>\s*<span><span aria-hidden="true">([\d.]+)</)?.[1]),
ratings: number(html.match(/aria-label="([\d,]+) reviews?">\(/)?.[1]),
};
}
const before = JSON.parse(await readFile(FILE, 'utf8').catch(() => '{}'));
const today = { ...before };
for (const place of places) {
const now = await countOf(place);
const was = before[place]?.ratings ?? null;
if (now.ratings === null) console.log(`${place}: no page today, ask again`);
else if (was === null) console.log(`${place}: first check, ${now.ratings} ratings, ${now.rating} stars`);
else if (now.ratings > was) console.log(`${place}: ${now.ratings - was} new, now ${now.ratings} ratings, ${now.rating} stars`);
else console.log(`${place}: nothing new`);
if (now.ratings !== null) today[place] = now;
}
await writeFile(FILE, JSON.stringify(today, null, 2));Besoin d'abord des lieux ? Le scraper Google Maps liste chaque lieu d'une catégorie dans une ville, et chacun est une page de plus ici.
Un compte, un réseau de proxys, un écosystème. Choisissez le produit dont la tâche a besoin.
Vous scrapez aussi les lieux ? Voir le scraper Google Maps, les scrapers Reddit et YouTube, ou tous les outils de web scraping.
Envoyez l'adresse Google Maps du lieu à Web Unlocker : google.com/maps/search/ suivi du nom et de la ville. Il ouvre la page dans un vrai navigateur depuis le pays de votre choix et la renvoie avec la note, le nombre de notes pour chaque étoile, les thèmes que les gens mentionnent et les meilleurs avis, chacun avec l'auteur, les étoiles, la date et le texte. Le code ci-dessus fait exactement cela.
Envoyez l'adresse du lieu à Web Unlocker avec la bibliothèque requests et lisez les champs dans la page. L'onglet Python ci-dessus est un script complet, testé sur l'API en production.
Oui. La page Google Maps d'un lieu est publique et se charge sans connexion. Web Unlocker la renvoie comme la voit le navigateur d'un visiteur, sans projet Google Cloud, sans clé API et sans approbation.
Deux officielles. La Google Places API renvoie la note d'un lieu et jusqu'à 5 avis, à $25 pour 1 000 appels. La Google Business Profile API renvoie tous les avis, gratuitement, mais seulement pour les lieux que vous possédez ou gérez. Pour les avis d'autres lieux au-delà de ces 5, avec la répartition des étoiles, Web Unlocker renvoie la page Maps elle-même.
C'est sa limite documentée : Place Details renvoie au plus 5 avis par lieu, triés par pertinence, sur le SKU facturé $25 pour 1 000 appels. Elle donne la note moyenne et aucune répartition des étoiles. La page Maps contient le nombre de notes pour chaque étoile et les thèmes d'avis, et Web Unlocker renvoie la page entière.
Les 3 meilleurs avis avec leur texte complet, plus la note, le nombre de notes pour chaque niveau d'étoiles et les thèmes avec leur nombre. Depuis septembre 2026, Google Maps n'affiche la liste complète des avis d'un lieu qu'après une connexion, donc c'est ce que reçoit tout outil qui lit la page publique. Pour vos propres lieux, la Google Business Profile API liste tous les avis gratuitement.
Pas depuis la page publique : Google garde la liste complète et les options de tri derrière une connexion Google. Ce qui reste public, c'est le résumé et les meilleurs avis, et cela revient comme une page au même prix.
Le tri se trouve aussi derrière la connexion. La page contient les meilleurs avis. Pour repérer les nouveaux, comparez le nombre d'avis et la note avec votre dernière exécution : l'onglet Suivi quotidien ci-dessus le fait pour une liste de lieux.
Oui : combien de notes a reçu chaque niveau d'étoiles, de 5 à 1, pour chaque lieu. Franklin Barbecue à Austin le jour de notre test : 6 053 notes à cinq étoiles, 695 à quatre étoiles, 285 à trois étoiles, 104 à deux étoiles et 199 à une étoile.
Oui, en deux étapes. Le scraper Google Maps liste les lieux d'une catégorie tuile par tuile, puis chaque lieu est une page de plus ici. 146 dentistes à Miami ont été trouvés en 25 pages de recherche ; avec leurs 146 pages d'avis, cela fait 171 pages, environ 17 cents en tout.
Si vous possédez ou gérez la fiche, utilisez la Google Business Profile API : elle liste gratuitement tous les avis de vos établissements, 50 par page, une fois votre projet approuvé par Google. Web Unlocker sert pour les lieux que vous ne gérez pas.
Web Unlocker renvoie la page, pas un tableau, donc rien n'est coupé avant que vous le voyiez. La transformer en CSV demande quelques lignes de code, ou une seule consigne : donnez la page à Claude avec la compétence de scraping Gologin et demandez un CSV.
Moins de $1 pour 1 000 pages, et le même prix pour chaque page : 1 000 lieux avec leurs avis reviennent à $0.98. Une page qui ne se charge pas ne coûte rien. Les forfaits démarrent à $49 par mois pour 50 000 requêtes.
Oui, pour commencer : Web Unlocker inclut 1 000 requêtes gratuites, de quoi couvrir 1 000 lieux avec leurs avis.
Non. Web Unlocker choisit l'IP pour vous, dans plus de 195 pays, et ouvre la page depuis le pays de votre choix.
Cela dépend de votre besoin. Apify et Outscraper vendent des lignes prêtes à l'emploi et facturent chaque avis. Web Unlocker renvoie la page Maps entière à un prix par page, avec la répartition des étoiles et les thèmes que ces lignes laissent de côté, et vous l'analysez à votre façon.
La page Maps d'un lieu est publique et se charge sans connexion. Web Unlocker la charge comme le fait le navigateur d'un visiteur et renvoie la page. Ce que vous collectez et l'usage que vous en faites relèvent de vous : vérifiez-le au regard des règles applicables à votre projet.
Parlez-nous un peu de votre équipe et recevez :