Yelp Scrapen: Geschäftsdaten und Reviews 2026 extrahieren

Praktischer Leitfaden für Entwickler zum Scrapen öffentlicher Yelp-Geschäftsdaten und Reviews mit rotierenden Residential-Proxys — inklusive Code-Beispielen, Anti-Bot-Workarounds und ethischen Richtlinien.

How to Scrape Yelp Business Listings and Reviews in 2026: Public Data, PerimeterX, and Production Patterns

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

ProblemUrsacheLösung
HTTP 429 nach wenigen RequestsDatacenter-IP mit schlechter ReputationAuf Residential-Proxys wechseln, US-Geo setzen
CAPTCHA-Seite statt ProfilPerimeterX-Sensor fehlt oder TLS-Fingerprint verdächtigcurl_cffi mit impersonate verwenden
Leere __INITIAL_STATE__Yelp ändert JSON-Struktur oder liefert Lite-VersionHTML-Parsing als Fallback, Struktur regelmäßig validieren
Review-Pagination bricht abSession-Cookie verloren durch IP-WechselSticky Session für gesamte Pagination verwenden
Lokalisierte Ergebnisse fehlenGeo-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:

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 Yelps robots.txt und 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-austin sorgt 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.

Bereit loszulegen?

Zugang zu über 50 Mio. Residential-IPs in über 148 Ländern mit KI-gesteuerter Filterung.

Preise ansehenResidential Proxies
← Zurück zum Blog