Wichtiger Hinweis: Dieser Artikel behandelt ausschließlich den Zugriff auf öffentliche Daten, die ohne Anmeldung auf Yelp sichtbar sind. Bevor Sie Yelp scrapen, prüfen Sie die Yelp Terms of Service, das US-Computer Fraud and Abuse Act (CFAA) sowie die DSGVO/GDPR in der EU. Das automatisierte Auslesen kann gegen Plattform-AGB verstoßen; personenbezogene Daten aus Reviews unterliegen zusätzlich dem Datenschutzrecht. Die hier gezeigten Techniken dienen Bildungszwecken und legitimem Public-Data-Zugang.
Yelp Scrapen im Jahr 2026: Was möglich ist und was nicht
Wer Yelp scrapen möchte, steht vor einem Paradox: Die Plattform zeigt Millionen von Geschäftsprofilen, Bewertungen und Kategorien frei zugänglich im Browser, wehrt sich aber massiv gegen automatisierte Abrufe. Für Entwickler, die lokale-Business-Datensätze oder Yelp Review Scraper-Pipelines aufbauen, ist es entscheidend zu wissen, welche Daten ohne Login erreichbar sind, wie Yelps Anti-Bot-System funktioniert und wie rotierende Residential-Proxys den Zugriff zuverlässig halten.
Öffentlich zugänglich ohne Anmeldung sind:
- Geschäftsprofile unter
/biz/<slug>mit Name, Adresse, Telefon, Öffnungszeiten, Kategorien und Preisbereich. - Die Gesamtbewertung (Sterne-Durchschnitt) und die Anzahl der Reviews.
- Einzelne Review-Texte, Autoren-Anzeige (Vorname + initial), Sterne und Datum — allerdings nur ein begrenzter Vorschau-Satz pro Seite.
Die offizielle Yelp Fusion API bietet zwar einen sauberen REST-Zugang, limitiert Reviews aber auf maximal drei Einträge pro Business. Wer umfassendere Review-Datensätze oder historische Bewertungen benötigt, muss auf Web-Scraping zurückgreifen — und dabei Yelps Verteidigungsschichten überwinden.
Technischer Kontext: Yelps Anti-Bot-Verteidigung
PerimeterX / HUMAN und das _px3-Cookie
Yelp nutzt PerimeterX (mittlerweile unter HUMAN Security firmierend) als primäre Bot-Defense-Schicht. Beim ersten Seitenaufruf wird ein JavaScript-Sensor geladen, der Browser-Eigenschaften sammelt — Canvas-Rendering, WebGL-Parameter, Schriftarten, Timing-Daten — und daraus ein _px3-Cookie berechnet. Fehlt dieses Cookie oder ist die Sensor-Signatur verdächtig, erscheint nach wenigen Requests eine CAPTCHA-Challenge oder ein HTTP-429-Status.
Reine Datacenter-IPs werden von PerimeterX besonders schnell blockiert. In der Praxis genügen oft 5 bis 15 Requests von einer Datacenter-IP, bevor die IP-Reputation-Score-Schwelle überschritten ist und die Blockade greift.
TLS-Fingerprinting
Über den reinen User-Agent hinaus prüft PerimeterX den TLS-Handshake-Fingerprint (JA3/JA4). Ein Python-requests-Client mit Standard-urllib3-Stack erzeugt einen anderen TLS-Fingerprint als Chrome oder Firefox. Diese Diskrepanz ist ein starkes Bot-Signal. Tools wie curl_cffi oder tls-client können Chrome-kompatible TLS-Fingerprints emulieren und reduzieren dieses Risiko erheblich.
CAPTCHA nach wenigen Datacenter-Requests
Wenn PerimeterX eine IP als suspekt einstuft, wird ein interstitielles CAPTCHA ausgeliefert. Ohne Headless-Browser-Lösung mit CAPTCHA-Solver ist dann kein Weiterkommen. Die effizientere Strategie: gar nicht erst blockiert werden — durch Residential-Proxys, realistische Header und moderate Request-Raten.
Warum rotierende Residential-Proxys mit US-Geo nötig sind
Yelp ist eine US-zentrierte Plattform; die meisten Geschäftsdaten stammen von US-Standorten. PerimeterX bewertet IP-Reputation nach ASN-Typ, geografischer Konsistenz und historischem Verhalten. Residential-IPs von echten ISPs haben eine deutlich höhere Vertrauenswürdigkeit als Datacenter-ASNs.
Für lokalisierte Ergebnisse — z. B. Restaurants in Austin, TX — ist die Geo-Konsistenz zusätzlich wichtig. Eine Anfrage aus einer frankfurter Datacenter-IP, die nach "Restaurants in Austin" sucht, ist ein sofortiges Bot-Signal. Mit ProxyHat können Sie die Geo-Targeting-Flags im Username setzen:
http://user-country-US-city-austin:pass@gate.proxyhat.com:8080
Dadurch erhalten Sie eine US-Residential-IP, die geografisch zu Ihrer Suchanfrage passt — was die IP-Reputation-Score belastet und Blockaden minimiert. Weitere verfügbare Standorte finden Sie auf unserer Proxy-Locations-Seite.
Praktische Implementierung: Yelp scrapen mit Python und ProxyHat
Beispiel 1: Geschäftsprofil und Reviews via requests + ProxyHat
Das folgende Beispiel ruft ein Yelp-Geschäftsprofil über ProxyHat ab und extrahiert die eingebettete __INITIAL_STATE__-JSON-Struktur, die die Review-Vorschau enthält. Wir verwenden curl_cffi für einen Chrome-kompatiblen TLS-Fingerprint.
import re, json
from curl_cffi import requests
# ProxyHat Residential-Proxy mit US-Geo und Sticky Session
proxy_url = "http://user-country-US-city-austin-session-biz001:pass@gate.proxyhat.com:8080"
proxies = {"http": proxy_url, "https": proxy_url}
headers = {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"accept-language": "en-US,en;q=0.9",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
}
url = "https://www.yelp.com/biz/kerbey-lane-cafe-austin"
resp = requests.get(url, headers=headers, proxies=proxies, impersonate="chrome131", timeout=30)
if resp.status_code != 200:
print(f"Blockiert: HTTP {resp.status_code}")
exit()
# __INITIAL_STATE__ aus dem HTML extrahieren
match = re.search(r'window\.__INITIAL_STATE__\s*=\s*({.*?});', resp.text, re.DOTALL)
if match:
state = json.loads(match.group(1))
biz = state.get("biz", {})
reviews = biz.get("reviews", [])
# Erste (gekürzte) Review ausgeben
if reviews:
r = reviews[0]
print({
"author": r.get("author", {}).get("displayName", ""),
"rating": r.get("rating"),
"date": r.get("publishedDate", ""),
"text": r.get("comment", "")[:200] + "...",
})
Dieser Ansatz vermeidet HTML-Parsing-Fragilität, da Yelp die initialen Review-Daten als JSON in die Seite einbettet. Die __INITIAL_STATE__-Struktur enthält typischerweise die ersten 10 bis 20 Reviews pro Business — deutlich mehr als die drei der Fusion API.
Beispiel 2: Paginierte Reviews mit Sticky Session
Für Reviews jenseits der ersten Seite nutzt Yelp einen AJAX-Endpunkt /biz_async/<slug>/review_feed. Die Pagination erfordert eine konsistente Session, damit PerimeterX den _px3-Cookie nicht zurücksetzt.
import time
from curl_cffi import requests
session_id = "yelp-biz-001"
proxy = f"http://user-country-US-city-austin-session-{session_id}:pass@gate.proxyhat.com:8080"
proxies = {"http": proxy, "https": proxy}
headers = {
"accept": "application/json",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"referer": "https://www.yelp.com/biz/kerbey-lane-cafe-austin",
}
all_reviews = []
start = 0
for page in range(5):
feed_url = f"https://www.yelp.com/biz_async/kerbey-lane-cafe-austin/review_feed?start={start}"
resp = requests.get(feed_url, headers=headers, proxies=proxies, impersonate="chrome131", timeout=30)
if resp.status_code == 200:
data = resp.json()
reviews = data.get("reviews", [])
if not reviews:
break
all_reviews.extend(reviews)
start += len(reviews)
time.sleep(3) # Rate-Limit-Pacing
else:
print(f"Seite {page}: HTTP {resp.status_code} — Session rotieren")
break
print(f"Gesammelt: {len(all_reviews)} Reviews")
Beispiel 3: Node.js über SOCKS5 (Port 1080)
Für Node.js-Anwendungen kann ProxyHat über SOCKS5 auf Port 1080 angesprochen werden. Das folgende Beispiel verwendet socks-proxy-agent zusammen mit undici für moderne HTTP-Requests.
const { SocksProxyAgent } = require('socks-proxy-agent');
const fetch = require('undici').fetch;
const socksUrl = 'socks5://user-country-US-session-node01:pass@gate.proxyhat.com:1080';
const agent = new SocksProxyAgent(socksUrl);
const headers = {
'accept': 'text/html,application/xhtml+xml',
'accept-language': 'en-US,en;q=0.9',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
};
async function scrapeYelp(slug) {
const url = `https://www.yelp.com/biz/${slug}`;
const resp = await fetch(url, { headers, dispatcher: agent, signal: AbortSignal.timeout(30000) });
if (!resp.ok) {
console.error(`HTTP ${resp.status}`);
return null;
}
const html = await resp.text();
const match = html.match(/window\.__INITIAL_STATE__\s*=\s*({.*?});/s);
if (!match) return null;
const state = JSON.parse(match[1]);
const reviews = state?.biz?.reviews ?? [];
return reviews.slice(0, 3).map(r => ({
author: r?.author?.displayName ?? '',
rating: r?.rating,
text: (r?.comment ?? '').slice(0, 150) + '...',
}));
}
scrapeYelp('kerbey-lane-cafe-austin').then(console.log).catch(console.error);
Pagination, Rate-Limit-Pacing und Fingerprint-Minimierung
Request-Raten strategisch steuern
Yelp toleriert moderate Abrufgeschwindigkeiten, reagiert aber auf Burst-Requests empfindlich. Eine bewährte Rate liegt bei 1 Request alle 3 bis 5 Sekunden pro Session. Bei höheren Raten steigt die Block-Wahrscheinlichkeit exponentiell. Verteilen Sie Anfragen über mehrere Sessions, statt eine Session zu überlasten.
Sticky Sessions für Review-Pagination
Die Pagination des review_feed-Endpunkts erfordert Cookie-Konsistenz. ProxyHat Sticky Sessions halten dieselbe IP für die Dauer einer Logik-Einheit — z. B. alle Pages eines Business. Die Session-ID wird im Username übergeben:
http://user-session-biz-001:pass@gate.proxyhat.com:8080
Wechseln Sie die Session-ID pro Business, nicht pro Page. So bleibt der _px3-Cookie gültig und PerimeterX sieht einen konsistenten Nutzer.
User-Agent-Rotation
Ein statischer User-Agent über hunderte Requests ist ein Fingerprint-Risiko. Rotieren Sie zwischen aktuellen, realistischen Chrome- und Firefox-User-Agents. Wichtig: Der User-Agent muss zum TLS-Fingerprint passen. Wenn Sie impersonate="chrome131" verwenden, sollte der User-Agent ebenfalls Chrome 131 widerspiegeln.
Header-Hygiene
Vergessen Sie nicht sec-ch-ua, sec-fetch-* und accept-language-Header. Ein Browser sendet all diese; ein nackter Python-Client nicht. Die Abwesenheit ist ein starkes Bot-Signal.
Häufige Fehler und Edge Cases
| Problem | Ursache | Lösung |
|---|---|---|
| HTTP 429 nach wenigen Requests | Datacenter-IP mit schlechter Reputation | Auf Residential-Proxys wechseln, US-Geo setzen |
| CAPTCHA-Seite statt Profil | PerimeterX-Sensor fehlt oder TLS-Fingerprint verdächtig | curl_cffi mit impersonate verwenden |
Leere __INITIAL_STATE__ | Yelp ändert JSON-Struktur oder liefert Lite-Version | HTML-Parsing als Fallback, Struktur regelmäßig validieren |
| Review-Pagination bricht ab | Session-Cookie verloren durch IP-Wechsel | Sticky Session für gesamte Pagination verwenden |
| Lokalisierte Ergebnisse fehlen | Geo-Mismatch zwischen IP und Suchort | -country-US-city-austin für konsistente Geo-Targeting |
ProxyHat-spezifisches Setup
ProxyHat bietet Residential-, Mobile- und Datacenter-Proxys über einen zentralen Gateway. Für Yelp Geschäftsdaten und Reviews empfehlen wir ausschließlich Residential-Proxys mit US-Geo-Targeting. Die Einrichtung erfolgt über das ProxyHat-Dashboard oder direkt über die Gateway-Parameter.
Weitere Ressourcen:
- Preise und Pakete — Residential-Proxys ab flexiblen Kontingenten.
- Use Case: Web Scraping — Best Practices für Proxy-gestütztes Scraping.
- Use Case: SERP-Tracking — Für Suchmaschinen- und Ranking-Daten.
Ethisches Scraping und wann die Fusion API reicht
Bevor Sie Yelp scrapen, prüfen Sie, ob die Yelp Fusion API Ihre Anforderungen bereits erfüllt. Für viele Anwendungsfälle — Business-Suche, Basis-Profile, bis zu drei Reviews — ist die API der saubere, legale und zuverlässigere Weg. Sie erfordert einen API-Key, hält sich an Yelps Rate-Limits und vermeidet jegliche Anti-Bot-Konflikte.
Wenn Sie mehr als drei Reviews pro Business benötigen, gelten folgende ethische Richtlinien:
- Respektieren Sie
robots.txt: Prüfen Sie Yelpsrobots.txtund respektieren Sie Disallow-Anweisungen. - Keine personenbezogenen Daten: Review-Autoren-Namen sind Pseudonyme; vermeiden Sie die Verknüpfung mit anderen Datensätzen zur Identifizierung.
- Kein Login-walled Content: Greifen Sie nicht auf Inhalte zu, die eine Anmeldung erfordern. Das überschreitet die Grenze von öffentlich zu privat.
- Rate-Limits respektieren: Überlasten Sie Yelps Server nicht. 1 Request pro 3–5 Sekunden ist ein vernünftiges Maximum.
- DSGVO-Konformität: Wenn Sie EU-Bürger betreffende Daten verarbeiten, stellen Sie eine Rechtsgrundlage sicher und beachten Sie Löschpflichten.
Faustregel: Wenn die Fusion API 80% Ihres Bedarfs deckt, nutzen Sie die API für diese 80% und scrapen Sie nur die verbleibenden 20% — Reviews über den Cap hinaus — mit ProxyHat-Residential-Proxys.
Key Takeaways
- Öffentliche Daten ohne Login: Geschäftsprofile, Sterne, Kategorien und eine begrenzte Anzahl Reviews sind frei zugänglich; die Fusion API liefert max. 3 Reviews pro Business.
- PerimeterX ist die Hauptschranke:
_px3-Cookie, TLS-Fingerprinting und IP-Reputation-Scoring blockieren Datacenter-IPs nach 5–15 Requests. - Residential-Proxys mit US-Geo sind Pflicht:
-country-US-city-austinsorgt für geografisch konsistente, vertrauenswürdige IPs. - Sticky Sessions für Pagination: Eine Session-ID pro Business hält den
_px3-Cookie stabil über mehrere Review-Seiten. - Ethischer Rahmen: robots.txt respektieren, keine Login-walled-Daten, Fusion API bevorzugen wo möglich.
FAQ: Yelp Scrapen
Was bedeutet "Yelp scrapen" und ist es legal?
Yelp scrapen bedeutet das automatisierte Extrahieren öffentlicher Geschäftsdaten und Reviews von yelp.com. Die rechtliche Situation hängt von der Art der Daten, dem verwendeten Zugang und der Jurisdiktion ab. In den USA regelt der CFAA den unbefugten Zugriff; in der EU gilt die DSGVO für personenbezogene Daten. Öffentliche Daten ohne Login zu lesen ist weniger riskant als das Umgehen von Zugangsschranken, aber immer noch potenziell AGB-widrig. Konsultieren Sie einen Rechtsberater.
Warum sind Residential-Proxys für Yelp-Scraping wichtig?
Yelp nutzt PerimeterX/HUMAN als Bot-Defense, das IP-Reputation nach ASN-Typ bewertet. Datacenter-IPs (AWS, Hetzner, DigitalOcean) haben niedrige Reputation-Scores und werden nach wenigen Requests blockiert — oft 5 bis 15 Anfragen genügen. Residential-Proxys von echten ISPs haben hohe Vertrauenswürdigkeit und überleben deutlich länger. US-Geo-Targeting sorgt zusätzlich für geografische Konsistenz bei lokalen Suchen.
Welcher Proxy-Typ funktioniert am besten für Yelp?
Rotierende Residential-Proxys mit US-Geo-Targeting sind die beste Wahl. Mobile-Proxys funktionieren ebenfalls, sind aber teurer und für Yelp nicht notwendig. Datacenter-Proxys sind ungeeignet, da PerimeterX sie zuverlässig erkennt. Für Review-Pagination sollten Sie Sticky Sessions verwenden, damit die IP über mehrere Seiten konstant bleibt und der _px3-Cookie nicht zurückgesetzt wird.
Wie vermeide ich Blöcke beim Yelp-Scraping?
Kombinieren Sie mehrere Strategien: (1) Residential-Proxys mit US-Geo über ProxyHat, (2) Chrome-kompatiblen TLS-Fingerprint via curl_cffi mit impersonate="chrome131", (3) realistische Header inklusive sec-ch-ua und accept-language, (4) Rate-Limit-Pacing von 1 Request pro 3–5 Sekunden, (5) Sticky Sessions für Paginierung, (6) User-Agent-Rotation zwischen aktuellen Browser-Versionen.
Lohnt sich die Yelp Fusion API statt Scraping?
Für viele Anwendungsfälle ja. Die Fusion API bietet sauberen REST-Zugang auf Business-Suche, Profile und bis zu drei Reviews pro Business — ohne Anti-Bot-Hürden. Wenn drei Reviews ausreichen, ist die API schneller, zuverlässiger und rechtlich sicherer. Erst wenn Sie umfangreichere Review-Datensätze benötigen, lohnt sich das Scraping mit Residential-Proxys.






