Craigslist ist seit den späten 1990er-Jahren die größte Kleinanzeigenplattform der USA und enthält nach wie vor Millionen öffentlicher Inserate in den Kategorien Wohnen, Kaufen und Verkaufen, Dienstleistungen und Community. Diese Angebotsseiten sind eine nützliche Quelle öffentlicher Marktsignale: wie sich Mieten zwischen Stadtvierteln entwickeln, zu welchen Preisen Gebrauchtwaren in einer Metropole verkauft werden und wo das Angebot knapp ist. Jedes Suchergebnis liegt in einem vorhersehbaren, serverseitig gerenderten Layout vor, was das Auslesen der öffentlichen Felder unkompliziert macht.
Dieser Leitfaden zeigt Ihnen, wie Sie Craigslist scrapen können, mit JavaScript und Node.js unter Verwendung von Cheerio. Sie bauen einen kleinen, lauffähigen Scraper, der eine öffentliche Craigslist-Suchergebnisseite über die Crawling API abruft, Titel, Preis, Standort, Veröffentlichungsdatum und Link für jedes Inserat ausliest und das Ergebnis als JSON und CSV exportiert. Die gesamte Anleitung beschränkt sich auf öffentliche, nicht personenbezogene Anzeigendaten. Kontaktdaten des Verkäufers und der Freitext eines Beitrags sind personenbezogene Daten; der Abschnitt zur Rechtslage am Ende erklärt, warum dieser Scraper sie bewusst weglässt. Lesen Sie ihn, bevor Sie dieses Tool in großem Umfang einsetzen.
Was Sie bauen werden
Ein Node.js-Skript, das eine öffentliche Craigslist-Such-URL entgegennimmt, das HTML über die Crawling API abruft und für jedes Inserat auf der Ergebnisseite einen strukturierten Datensatz extrahiert. Als laufendes Beispiel verwenden wir eine Immobiliensuche und ziehen diese Felder pro Anzeige:
- Title der Anzeigentitel auf der Ergebniskarte, zum Beispiel „2 bedroom trailer for rent".
- Price der geforderte Preis in der angezeigten Form, etwa „$675", als Text behalten, da Craigslist-Preise Währungssymbole und Kommas enthalten.
- Location der Stadt- oder Bezirkshinweis, den Craigslist neben der Anzeige anzeigt.
- Post date das Veröffentlichungsdatum der Anzeige, sofern die Ergebniskarte es ausweist.
- Link die absolute URL zur individuellen Angebotsseite.
Warum eine einfache Anfrage bei Craigslist scheitern kann
Eine einfache HTTP-Anfrage an eine Craigslist-Such-URL kann bei einem einmaligen Zugriff funktionieren, hält aber bei jedem größeren Scraping-Volumen nicht stand. Craigslist überwacht automatisierten Datenverkehr und geht dagegen vor: Datacenter-IPs und Anfragemuster, die nicht wie ein echter Browser aussehen, werden gedrosselt, mit einem CAPTCHA versehen oder komplett gesperrt. Führen Sie eine enge Schleife von einer Adresse aus, sehen Sie anstelle von Anzeigen recht schnell Nicht-200-Antworten und Challenge-Seiten.
Ein dauerhaft funktionierender Craigslist-Scraper benötigt daher eine IP, die die Plattform als echten Besucher erkennt, und er muss sich moderat verhalten. Sie können das selbst mit einem Pool rotierender Wohnproxys aufbauen, doch diesen Pool gesund und unblockiert zu halten, ist der Großteil der Arbeit. Die Crawling API fasst das in einem einzigen Aufruf zusammen: Sie übergeben ihr die URL, sie ruft die Seite hinter einer vertrauenswürdigen IP mit eingebautem CAPTCHA-Handling ab und gibt Ihnen das HTML zum Parsen mit Cheerio zurück.
Alles in diesem Leitfaden liest Felder aus, die jeder Besucher auf einer öffentlichen Suchergebnisseite sieht: Titel, Preis, Standorthinweis, Datum und Link. Einzelne Beiträge werden nicht geöffnet, um Telefonnummern oder E-Mail-Adressen von Verkäufern zu erfassen, und es wird kein Profil eines Inserenten erstellt. Diese Grenze ist bewusst gezogen; der folgende Abschnitt zur Rechtslage erläutert sie.
Voraussetzungen
Vor dem Schreiben von Code müssen einige Dinge vorhanden sein. Keines davon nimmt viel Zeit in Anspruch.
Grundkenntnisse in JavaScript und Node.js. Sie sollten in der Lage sein, ein Node-Skript zu schreiben und auszuführen sowie Pakete mit npm zu installieren. Wenn Sie neu bei Node sind, bringen die offizielle Dokumentation oder ein Einsteigerkurs Sie auf das Niveau, das dieses Tutorial voraussetzt. Für eine ausführlichere Anleitung behandelt unser Leitfaden zum Erstellen eines Web Scrapers mit Node.js die Grundlagen.
Node.js 16 oder höher. Überprüfen Sie Ihre Version mit node --version. Wenn Sie es nicht haben, installieren Sie es von der Node.js-Website oder über einen Versionsmanager wie nvm.
Ein Crawlbase-Konto und ein Token. Registrieren Sie sich, öffnen Sie Ihr Dashboard und kopieren Sie Ihren Token von der Kontodokumentationsseite. Die kostenlose Stufe gibt Ihnen bis zu 20.000 Anfragen ohne Kreditkarte, und Sie zahlen nur für erfolgreiche Anfragen. Behandeln Sie den Token wie ein Passwort: Er authentifiziert Ihre Anfragen, halten Sie ihn daher aus der Versionskontrolle heraus.
Projekt einrichten
Erstellen Sie einen Projektordner, initialisieren Sie ihn und installieren Sie die zwei Bibliotheken, die der Scraper benötigt.
node --version mkdir craigslist-scraper && cd craigslist-scraper npm init -y npm install crawlbase cheerio
Zwei Abhängigkeiten erledigen die Arbeit: crawlbase ist der offizielle Node-Client für die Crawling API, und cheerio parst das zurückgegebene HTML mit einer jQuery-ähnlichen API, sodass Sie einzelne Felder per CSS-Selektor extrahieren können. Die ursprüngliche Version dieses Tutorials verwendete jsdom zum Parsen des gespeicherten HTML; Cheerio erledigt dieselbe Aufgabe mit einer leichteren, schnelleren API und ist besser für eine Scraping-Pipeline geeignet. Erstellen Sie eine Datei namens scraper.js in diesem Ordner und fügen Sie den Code aus den nachfolgenden Schritten hinzu.
Schritt 1: Suchergebnisseite abrufen
Beginnen Sie damit, das HTML der Seite abzurufen. Importieren Sie die CrawlingAPI-Klasse, initialisieren Sie sie mit Ihrem Token und rufen Sie eine öffentliche Craigslist-Such-URL ab. Wählen Sie eine Suchergebnisseite, die Sie scrapen möchten, zum Beispiel eine Immobiliensuche mit der Galerieansicht, und prüfen Sie den Statuscode vor dem Parsen, damit Fehler laut bleiben statt still.
const { CrawlingAPI } = require('crawlbase'); const fs = require('fs'); const api = new CrawlingAPI({ token: 'YOUR_CRAWLBASE_TOKEN' }); const craigslistPageURL = 'https://chicago.craigslist.org/search/rea?hasPic=1'; api .get(craigslistPageURL) .then((response) => { if (response.statusCode === 200) { fs.writeFileSync('response.html', response.body); console.log('HTML saved to response.html'); } else { console.error(`Request failed: ${response.statusCode}`); } }) .catch((error) => console.error('API request error:', error));
Führen Sie das Skript mit node scraper.js aus. Bei Erfolg schreibt es die Seite nach response.html, sodass Sie das Markup inspizieren und Selektoren gegen eine stabile Kopie entwickeln können, anstatt bei jeder Änderung das Netzwerk zu belasten. Die Crawling API ruft die Seite hinter einer vertrauenswürdigen IP ab, sodass die Anzeigen im zurückgegebenen HTML vorhanden sind und keine blockierte Seite.
Diese erste Anfrage hat soeben eine echte Craigslist-Ergebnisseite zurückgegeben, ohne einen eigenen Proxy-Pool oder CAPTCHA-Lösung. Die Crawling API ruft die Seite serverseitig hinter rotierenden Wohn-IPs ab und bewältigt die Challenges, die Craigslist Scrapern entgegenwirft, sodass Sie aus einem einzigen Aufruf nutzbares HTML erhalten. Richten Sie es zunächst auf eine öffentliche Suche in der kostenlosen Stufe aus und fügen Sie dann Ihren Parser hinzu.
Schritt 2: Jedes Inserat mit Cheerio parsen
Mit dem gespeicherten HTML laden Sie es in Cheerio und durchlaufen die Inserate. Craigslist rendert seine statischen Suchergebnisse in einer ol.cl-static-search-results-Liste, wobei jede Anzeige in einem eigenen li.cl-static-search-result-Element liegt; Sie selektieren also jedes Element und lesen Titel, Preis, Standort, Datum und Link daraus. Das defensive Auslesen jedes Feldes verhindert, dass ein fehlender Wert den gesamten Lauf zum Absturz bringt.
const cheerio = require('cheerio'); function parseListings(html) { const $ = cheerio.load(html); const listings = []; $('ol.cl-static-search-results li.cl-static-search-result').each((_, el) => { const item = $(el); const title = item.find('.title').text().trim(); const price = item.find('.price').text().trim(); const location = item.find('.location').text().trim(); const postDate = item.find('.meta time').attr('datetime') || ''; const link = item.find('a').attr('href') || ''; if (title) { listings.push({ title, price: price || 'N/A', location: location || 'N/A', postDate, url: link, }); } }); return listings; }
Die Selektoren bilden die Seitenstruktur direkt ab. Der Titel einer Anzeige stammt aus .title, der Preis aus .price, der Stadthinweis aus .location und der Link aus dem Anker-href des Elements. Das Datum wird aus dem datetime-Attribut des time-Elements in der .meta-Zeile des Inserats gelesen, was Ihnen ein sauberes maschinenlesbares Datum statt Relativtext liefert. Der Preis bleibt absichtlich als String, weil Craigslist-Werte das Währungssymbol und Tausendertrennzeichen enthalten; konvertieren Sie ihn später in eine Zahl, wenn Ihre Analyse es erfordert.
Craigslist passt sein Markup gelegentlich an, und einzelne Stadt-Subdomains können leicht abweichen. Behandeln Sie diese Selektoren als Ausgangspunkt, nicht als Vertrag. Wenn ein Feld leer zurückkommt, öffnen Sie response.html oder die Live-Seite in den Entwicklertools Ihres Browsers und aktualisieren Sie den Selektor. Regelmäßige Selektor-Wartung ist für jeden produktiven Scraper normal und kein Zeichen dafür, dass etwas kaputt ist.
Schritt 3: Das vollständige Skript mit JSON- und CSV-Export zusammenbauen
Verknüpfen Sie jetzt Abruf und Parsing in einem lauffähigen Skript und schreiben Sie die Datensätze als JSON und CSV auf die Festplatte.
const fs = require('fs'); const { CrawlingAPI } = require('crawlbase'); const cheerio = require('cheerio'); const api = new CrawlingAPI({ token: 'YOUR_CRAWLBASE_TOKEN' }); async function crawl(pageUrl) { const response = await api.get(pageUrl); if (response.statusCode === 200) return response.body; console.error(`Request failed: ${response.statusCode}`); return null; } function toCsv(rows) { const headers = ['title', 'price', 'location', 'postDate', 'url']; const escape = (value) => `"${String(value).replace(/"/g, '""')}"`; const lines = [headers.join(',')]; for (const row of rows) { lines.push(headers.map((h) => escape(row[h])).join(',')); } return lines.join('\n'); } async function main() { const url = 'https://chicago.craigslist.org/search/rea?hasPic=1'; const html = await crawl(url); if (!html) return; const listings = parseListings(html); fs.writeFileSync('listings.json', JSON.stringify(listings, null, 2)); fs.writeFileSync('listings.csv', toCsv(listings)); console.log(`Saved ${listings.length} listings to JSON and CSV`); } main();
Fügen Sie die parseListings-Funktion aus Schritt 2 in dieselbe Datei ein, damit main sie aufrufen kann. Führen Sie es mit node scraper.js aus und Sie erhalten zwei Dateien: listings.json mit den vollständigen strukturierten Datensätzen und listings.csv, die Sie in einer Tabellenkalkulation öffnen können. Der toCsv-Helfer setzt jedes Feld in Anführungszeichen und verdoppelt eingebettete Anführungszeichen, was hier wichtig ist, weil Anzeigentitel häufig Kommas enthalten.
Wie die Ausgabe aussieht
Die JSON-Datei enthält ein Objekt pro Inserat, jedes mit Titel, Preis, Standort, Datum und Link. Die folgenden Werte sind illustrativ und stammen aus einer Immobiliensuche.
[ { "title": "2 bedroom trailer for rent", "price": "$675", "location": "165th & Kennedy", "postDate": "2024-04-05 09:12", "url": "https://chicago.craigslist.org/nwi/reo/d/hammond-bedroom-trailer-for-rent/7732856568.html" }, { "title": "Barrington Village Home", "price": "$439,000", "location": "northwest suburbs", "postDate": "2024-04-04 16:48", "url": "https://chicago.craigslist.org/nwc/reo/d/barrington-barrington-village-home/7734168844.html" } ]
Die CSV-Datei spiegelt dieselben Zeilen mit einer Kopfzeile wider, sodass sie direkt in Excel, Google Sheets oder jede Datenpipeline geladen werden kann, die durch Trennzeichen getrennte Dateien liest.
title,price,location,postDate,url "2 bedroom trailer for rent","$675","165th & Kennedy","2024-04-05 09:12","https://chicago.craigslist.org/nwi/reo/d/hammond-bedroom-trailer-for-rent/7732856568.html" "Barrington Village Home","$439,000","northwest suburbs","2024-04-04 16:48","https://chicago.craigslist.org/nwc/reo/d/barrington-barrington-village-home/7734168844.html"
Paginierung handhaben
Eine Suchseite ist ein Demo; ein echter Auftrag zieht jede Ergebnisseite. Craigslist paginiert seine Such-URLs mit einem numerischen Offset und rückt dabei jeweils 120 Ergebnisse vor, sodass Sie über Offsets schleifen, jede Seite über die Crawling API abrufen, sie mit derselben Funktion parsen und stoppen können, wenn eine Seite keine Inserate zurückgibt. Da jede Ergebnisseite dieselbe Element-Struktur hat, funktioniert der bereits geschriebene Parser ohne Änderungen auf allen Seiten.
async function scrapeAllPages(baseUrl, maxPages) { const all = []; for (let page = 0; page < maxPages; page++) { // Craigslist pages search results in steps of 120 const offset = page * 120; const pageUrl = `${baseUrl}&s=${offset}`; const html = await crawl(pageUrl); if (!html) break; const listings = parseListings(html); if (listings.length === 0) break; // no more results all.push(...listings); console.log(`Page ${page + 1}: ${listings.length} listings`); // Pace requests so you stay under the rate limit await new Promise((r) => setTimeout(r, 2000)); } return all; }
Der genaue Paginierungsparameter kann sich ändern; prüfen Sie daher einige echte „Nächste Seite"-Links in Ihrem Browser und gleichen Sie das Muster ab. Die wichtigen Gewohnheiten übertragen sich auf jedes Ziel: Schleifen bis die Ergebnisse erschöpft sind und zwischen Anfragen kurze Pausen einlegen, damit Sie die Website nicht überlasten. Für mehr zu dieser Arbeitsweise lesen Sie unseren Leitfaden zum Crawlen von JavaScript-Websites; falls Sie Preise über die Zeit verfolgen, finden Sie in unseren Notizen zu Web Scraping für Preisintelligenz weitere Hinweise.
Nicht blockiert werden
Craigslist geht gegen Scraper vor; einige Gewohnheiten halten einen Lauf gesund. Sie gelten für jedes schwierige Ziel.
- Anfragen dosieren. Bauen Sie eine Verzögerung zwischen Seitenabrufen ein, anstatt die Suche in einer engen Schleife zu hämmern. Anfragen zu strecken ist der einzelne größte Faktor, um unter Craigslist-Ratenlimits zu bleiben.
- Rotation nutzen. Ein Pool von Wohn-IPs verteilt Anfragen über viele echte Nutzerkennzeichnungen, sodass keine einzelne ein Limit oder ein CAPTCHA auslöst. Die Crawling API erledigt das für Sie; wenn Sie einen eigenen Stack aufbauen, ist das der Teil, auf den es ankommt.
- Statuscodes beachten. Ein Lauf, der beginnt, Challenges oder Nicht-200-Antworten zurückzuliefern, signalisiert Ihnen, dass die aktuelle Rate oder IP-Stufe nicht mehr ausreicht. Behandeln Sie das als Signal zum Zurückrudern, nicht als Rauschen, das Sie ignorieren können.
Für das umfassendere Vorgehen lesen Sie, wie Sie Websites scrapen, ohne gesperrt zu werden. Wenn Sie ähnliche Anzeigendaten von anderen Kleinanzeigen- und Wohnungsseiten möchten, lässt sich dasselbe Fetch-then-Parse-Muster auf das Scrapen von Apartments.com übertragen.
Ist es legal, Craigslist zu scrapen?
Ob das Scrapen von Craigslist erlaubt ist, hängt von den Nutzungsbedingungen von Craigslist, Ihrer Rechtsordnung und dem ab, was Sie mit den Daten tun. Das ist bei Craigslist wichtiger als bei den meisten Seiten: Craigslist geht aktiv gegen automatisierten Zugriff vor und hat eine lange Geschichte darin, Scraper vor Gericht zu verfolgen. Die Nutzungsbedingungen untersagen automatisiertes Sammeln, sodass das Scrapen gegen diese Bedingungen verstoßen kann, egal wie sorgfältig Ihr Tooling ist. Keiner der hier verwendeten Code ändert das; er macht nur den technischen Teil funktionsfähig. Lesen Sie Craigslist's Nutzungsbedingungen und seine robots.txt, respektieren Sie die darin implizierten Ratenlimits und behandeln Sie beides als Grenze für das, was Sie sammeln.
Dieser Leitfaden beschränkt sich bewusst auf öffentliche, nicht personenbezogene Anzeigendaten: Titel, Preis, Standorthinweis, Datum und Link, die jeder auf einer Suchergebnisseite sieht, ohne sich anzumelden. Das unterscheidet sich von personenbezogenen Daten auf der Plattform. Name, Telefonnummer, E-Mail-Adresse eines Verkäufers oder der Freitext, den er in einem Beitrag verfasst hat, sind personenbezogene Daten. Erfassen Sie keine Kontaktdaten von Verkäufern, erstellen Sie keine Profile von Inserenten und veröffentlichen Sie keine Beiträge, die einer identifizierbaren Person zugeordnet sind. Sobald ein Projekt identifizierbare Personen berührt, gilt Datenschutzrecht wie die DSGVO und der CCPA, was eindeutig außerhalb des Rahmens dieses Leitfadens liegt. Aggregierte Fakten wie „Zweiraumwohnungsmieten in diesem Viertel liegen um X" sind in Ordnung; eine Liste, wer was verkauft, inklusive Kontaktdaten, ist es nicht.
Craigslist veröffentlicht keine allgemeine öffentliche API, obwohl einige Kategorien RSS-Feeds für begrenzten, sanktionierten Zugriff anbieten. Wo ein Feed oder eine ausdrückliche Datenvereinbarung für das, was Sie benötigen, existiert, bevorzugen Sie diesen Weg: Eine sanktionierte Route kommt mit klaren Nutzungsbedingungen und nicht mit dem rechtlichen und technischen Risiko des Scrapens einer Site, die dagegen vorgeht. Wenn Sie unsicher sind, ob eine Nutzung erlaubt ist, holen Sie die Erlaubnis oder eine Datenvereinbarung ein, anstatt anzunehmen, dass Schweigen Zustimmung bedeutet, und halten Sie sowohl das Volumen als auch den Umfang dessen, was Sie sammeln, proportional zu einem legitimen, nicht personenbezogenen Forschungszweck.
Wichtigste Erkenntnisse
- Craigslist geht gegen Scraper vor. Eine enge Schleife von einer Datacenter-IP wird gedrosselt, herausgefordert oder gesperrt; rufen Sie die Seite daher hinter einer vertrauenswürdigen, rotierenden IP ab und dosieren Sie Ihre Anfragen.
- Die Crawling API erledigt den schwierigen Teil in einem Aufruf. Sie ruft die Seite hinter Wohn-IPs ab und verarbeitet CAPTCHAs serverseitig, und liefert Ihnen HTML zum Parsen mit Cheerio zurück.
-
Cheerio extrahiert die Felder. Wählen Sie jedes
li.cl-static-search-resultinnerhalb vonol.cl-static-search-resultsaus, lesen Sie dann Titel, Preis, Standort, Datum und Link und rechnen Sie damit, dass sich das Markup über Städte und die Zeit hinweg verändert. - Paginieren und exportieren. Schleifen Sie über Craigslist's Offset-Parameter bis die Ergebnisse ausgehen, dosieren Sie Ihre Anfragen und schreiben Sie strukturierte Datensätze sowohl als JSON als auch als CSV.
- Bleiben Sie bei öffentlichen, nicht personenbezogenen Daten. Sammeln Sie nur Anzeigenfelder, niemals Verkäuferkontaktdaten oder Beitragstexte, die einer Person zugeordnet sind. Respektieren Sie die AGB und robots.txt und denken Sie daran, dass DSGVO und CCPA gelten, sobald personenbezogene Daten involviert sind.
Häufig gestellte Fragen
Hat Craigslist eine offizielle API?
Craigslist bietet keine allgemeine öffentliche API für den Datenzugriff an. Einige Bereiche bieten RSS-Feeds für begrenzten Zugriff an, aber es gibt keine umfassende API. Wenn für das, was Sie benötigen, ein sanktionierter Feed oder eine Datenvereinbarung existiert, nutzen Sie diesen gegenüber dem Scraping, da er klare Bedingungen für die erlaubte Nutzung mitbringt.
Kann ich einen Craigslist-Scraper in einer anderen Sprache als JavaScript bauen?
Ja. Dieser Leitfaden verwendet JavaScript mit Cheerio, aber der gleiche Ansatz funktioniert in jeder Sprache. Die Crawling API bietet Bibliotheken und SDKs für mehrere Sprachen an; Sie rufen das HTML auf die gleiche Weise ab und parsen es mit dem HTML-Parser, den Ihr Stack bevorzugt, zum Beispiel BeautifulSoup in Python. Selektoren und Felder bleiben dieselben; nur die Parsing-Syntax ändert sich.
Meine Selektoren liefern leere Werte. Was hat sich geändert?
Fast sicher das Markup von Craigslist oder ein Unterschied zwischen Stadt-Subdomains. Öffnen Sie das gespeicherte response.html oder eine Live-Seite in den Entwicklertools Ihres Browsers, bestätigen Sie, dass der Listing-Container noch immer ol.cl-static-search-results mit li.cl-static-search-result-Elementen ist, und aktualisieren Sie die inneren Selektoren in parseListings. Regelmäßige Selektor-Wartung ist für jeden produktiven Scraper normal.
Werde ich beim Scrapen von Craigslist gesperrt?
Das können Sie, besonders bei Craigslist, wenn Sie zu viele Anfragen zu schnell von einer Adresse senden. Die Crawling API reduziert dieses Risiko durch Rotation über Wohn-IPs und CAPTCHA-Handling für Sie, aber Sie sollten Ihre Anfragen dennoch dosieren, Verzögerungen zwischen Seiten einfügen und die Statuscodes im Blick behalten, damit Sie zurückrudern können, wenn Challenges erscheinen.
Kann ich Telefonnummern und Kontaktdaten von Verkäufern aus Beiträgen scrapen?
Nein, und dieser Scraper ist so gebaut, dass er das nicht tut. Name, Telefonnummer, E-Mail-Adresse und der Freitext, den ein Verkäufer verfasst hat, sind personenbezogene Daten. Das Sammeln dieser Daten, das Erstellen von Profilen von Inserenten oder das Veröffentlichen eines Beitrags, der einer Person zugeordnet ist, zieht Datenschutzrecht wie die DSGVO und den CCPA nach sich und verstößt gegen die Nutzungsbedingungen von Craigslist. Beschränken Sie Ihre Sammlung auf die öffentlichen, nicht personenbezogenen Anzeigenfelder, die hier behandelt werden.
Wofür sind Craigslist-Daten nützlich?
Öffentliche Anzeigendaten unterstützen Marktforschung und Preisanalyse: Verfolgung, wie sich Mieten und Gebrauchtwarenpreise zwischen Stadtvierteln und Metropolen entwickeln, Identifizierung von Angebotslücken und Untersuchung der lokalen Nachfrage über die Zeit. Der Wert liegt im aggregierten, nicht personenbezogenen Signal über viele Inserate, nicht in der Identität oder den Kontaktdaten eines einzelnen Inserenten.
Crawlen Sie jede Website im großen Maßstab, ohne gegen die Infrastruktur zu kämpfen.
Crawlbase übernimmt Proxys, Fingerprints und CAPTCHAs, damit Ihr Team Datenpipelines ausliefert, statt Crawl-Infrastruktur zu pflegen. 1.000 Anfragen kostenlos, keine Karte erforderlich.
