Wie man einen Jobbörsen-Aggregator baut: Quellen, Deduplizierung und Aktualität
Ein guter Job-Aggregator besteht aus drei technischen Herausforderungen: Woher man die Angebote bezieht, wie man sie dedupliziert und wie man sie aktuell hält. Wenn Sie diese lösen, ist das Scraping der einfache Teil — hier ist der Bauplan.
Ein Jobbörsen-Aggregator ist eine Suchmaschine für Stellenanzeigen: Er zieht Angebote aus vielen Quellen und zeigt sie an einem Ort. Die schwierigen Teile sind nicht die HTTP-Anfragen — sie bestehen darin, die richtigen Quellen zu wählen, dieselbe Stelle, die auf fünf Seiten erscheint, zu deduplizieren und alles aktuell zu halten, damit Sie keine Positionen anzeigen, die letzten Monat besetzt wurden. Wenn Sie diese drei Dinge richtig machen, haben Sie ein verteidigungsfähiges Produkt; wenn nicht, haben Sie einen veralteten, duplikatbeladenen Feed, der das Vertrauen untergräbt. Dieser Leitfaden ist der technische Bauplan: Quellenmix, kanonische Deduplizierung, Aktualität, das Jobs SERP Vertical und die rechtlichen Grenzen, die es zu respektieren gilt. Er ist informativ, keine Rechtsberatung.
Quellenstufe 1: öffentliche ATS-Endpunkte
Die saubersten Jobdaten im Internet befinden sich nicht auf Jobbörsen — sie sind auf den Karriereseiten von Unternehmen, die von Bewerber-Tracking-Systemen betrieben werden, von denen die meisten strukturiertes JSON bereitstellen. Greenhouse, Lever, Ashby, BambooHR, iCIMS, Paylocity und Workday bieten alle Angebote, die Sie direkt anfordern können, ohne HTML-Parsing. Ein Open-Source-Aggregator, der alle sieben abruft, holt sie parallel und passt die Anzahl der Worker an die Rate Limits jeder Plattform an — ungefähr 50 gleichzeitig für Workday, 30 für Greenhouse/Lever/iCIMS, 10 für BambooHR und 5 für die strengsten Limits. Diese Stufe liefert Ihnen kanonische Titel, Standorte, Gehaltsbänder und Bewerbungs-URLs direkt vom Arbeitgeber, was sie zum Rückgrat eines jeden ernsthaften Aggregators macht.
import httpx
# Greenhouse exposes a public board JSON endpoint per company slug
def fetch_greenhouse(slug: str) -> list[dict]:
url = f"https://boards-api.greenhouse.io/v1/boards/{slug}/jobs?content=true"
r = httpx.get(url, timeout=20)
r.raise_for_status()
jobs = r.json().get("jobs", [])
return [{
"source": "greenhouse",
"external_id": str(j["id"]),
"title": j["title"],
"company": slug,
"location": (j.get("location") or {}).get("name"),
"apply_url": j["absolute_url"],
"updated_at": j.get("updated_at"),
} for j in jobs]
rows = fetch_greenhouse("examplecompany")
print(len(rows), "roles")
Um Unternehmen zu finden, die abgefragt werden sollen, sammeln Sie ATS-Slugs in großem Maßstab aus einem Webindex statt von Hand — das Scannen der URL-Archive von Common Crawl nach ATS-Domainmustern kann Zehntausende von Unternehmenskennungen aufdecken. Dieser Entdeckungsscrape ist selbst ein Scraping-Job; leiten Sie ihn durch einen Datacenter-Proxy-Pool, da der Index nachsichtig ist und Geschwindigkeit dort mehr zählt als die IP-Reputation.
Quellenstufe 2: das Jobs SERP Vertical
ATS-Feeds verpassen alles, was nur auf Aggregator-Websites, regionalen Boards oder in Googles eigener Job-Erfahrung gepostet wird. Der effiziente Weg, diesen langen Schwanz abzudecken, ohne ein Dutzend Boards einzeln zu scrapen, ist das Jobs SERP Vertical — eine strukturierte Abfrage, die die Jobs zurückgibt, die Google für eine Rolle und einen Standort anzeigt, bereits normalisiert. Unsere SERP API bietet ein Jobs Vertical neben Nachrichten, Bildern und Shopping, sodass Sie Rollenangebote nach Schlüsselwort und Geo als JSON abrufen und in dieselbe Pipeline einfügen können:
import httpx
def fetch_jobs_serp(query: str, location: str) -> list[dict]:
r = httpx.get(
"https://api.quantumproxies.io/serp",
params={"engine": "google_jobs", "q": query,
"location": location, "api_key": "QP_API_KEY"},
timeout=30,
)
jobs = r.json().get("jobs", [])
return [{
"source": "jobs_serp",
"external_id": j.get("job_id"),
"title": j.get("title"),
"company": j.get("company_name"),
"location": j.get("location"),
"apply_url": (j.get("apply_options") or [{}])[0].get("link"),
} for j in jobs]
serp_rows = fetch_jobs_serp("react developer", "Austin, TX")
Führen Sie dieselbe Abfrage nach einem Zeitplan in Ihren Zielstädten aus und Sie haben eine geografische Abdeckung, die kein einzelner ATS-Feed bietet. Da sich SERP-Ergebnisse je nach Standort ändern, richten Sie jede Abfrage geografisch aus — unser Beitrag über wie SERP-Scraping im Jahr 2026 funktioniert behandelt die geografischen und Paginierungsmechanismen.
Holen Sie das Jobs Vertical von der SERP API

Deduplizierung durch kanonischen Schlüssel
Dieselbe Stelle erscheint routinemäßig auf der Unternehmensseite, zwei Aggregatoren und einer Google-Jobs-Karte. Sie viermal anzuzeigen, ist der schnellste Weg, kaputt zu wirken. Die Standardlösung ist ein kanonischer Schlüssel: Normalisieren und hashen Sie die Kombination aus Jobtitel, Unternehmen, Standort und — wenn verfügbar — der externen Job-ID der Quelle. Kleinschreibung, Interpunktion entfernen und Leerzeichen vor dem Hashen zusammenfassen, damit "Sr. Software Engineer" und "senior software engineer" zusammenfallen.
import re, hashlib
def canonical_key(job: dict) -> str:
def norm(s):
return re.sub(r"[^a-z0-9]+", " ", (s or "").lower()).strip()
basis = "|".join([
norm(job.get("title")),
norm(job.get("company")),
norm(job.get("location")),
(job.get("external_id") or ""),
])
return hashlib.sha1(basis.encode()).hexdigest()
def dedupe(rows: list[dict]) -> list[dict]:
seen, out = set(), []
for job in rows:
k = canonical_key(job)
if k not in seen:
seen.add(k)
out.append(job)
return out
Aktualität ist ein Merkmal, kein Nachgedanke
Die Glaubwürdigkeit einer Jobbörse liegt in ihrer Aktualität. Zwei Mechanismen halten sie ehrlich: Jede Quelle nach einem Zeitplan erneut abrufen (stündlich für hochvolumige ATS-Feeds, täglich für den langen Schwanz) und alles entfernen, was Sie in einem rollierenden Fenster nicht erneut gesehen haben — 30 Tage sind ein vernünftiger Standard, kürzer für schnelllebige Märkte. Verfolgen Sie einen letzten Sichtbarkeitszeitstempel pro Quelle und eine tägliche Zählung, damit Sie erkennen, wann eine Quelle stillschweigend ausfällt; ein Aggregator, der sein eigenes Volumen überwacht, kann eine Warnung öffnen, sobald die Zahlen einer Plattform abstürzen. Unser Hinweis auf das Ausführen von Scrapers als Produktionssoftware behandelt Planung, Drift-Erkennung und Alarmierung.
Die rechtlichen Grenzen, die es zu respektieren gilt
Jobdaten sind der Bereich, in dem das Scraping-Recht real wird, da Postings personenbezogene Daten (Namen von Personalvermittlern, Kontaktdaten) enthalten können und detaillierte Beschreibungen urheberrechtlich geschützt sind. Die französische Datenschutzbehörde verhängte gegen das Unternehmen KASPR eine Geldstrafe von 240.000 € für das Scraping von LinkedIn-Kontaktdaten ohne ordnungsgemäße Zustimmung; GDPR-Strafen können bis zu 20 Millionen € oder 4 % des weltweiten Umsatzes erreichen, und Urheberrechtsverletzungen haben in US-Fällen bis zu 150.000 $ pro Werk betragen. Die sicherere Haltung ist strukturell: Bevorzugen Sie autorisierte ATS-Feeds und das Jobs SERP gegenüber dem gewaltsamen Durchbrechen von login-geschützten Boards, speichern Sie faktische Felder (Titel, Unternehmen, Standort) anstatt vollständige urheberrechtlich geschützte Beschreibungen zu veröffentlichen, und entfernen Sie personenbezogene Daten, die Sie nicht benötigen. Unser Überblick über die Legalität von Web-Scraping im Jahr 2026 und die LinkedIn-Compliance-Saga gehen tiefer.

Wo Proxies passen
Die ATS-Stufe benötigt selten Wohn-IP-Adressen, aber der Entdeckungsscrape, das SERP Vertical und jedes direkte Board-Scraping schon — Google und die größeren Boards begrenzen die Rate nach IP und variieren ihre Ergebnisse geografisch. Leiten Sie diese durch rotierende Wohnproxies mit Rotation pro Anfrage und geografischer Ausrichtung, sodass jede Stadtabfrage aus einem passenden Standort stammt. Halten Sie die Stufen getrennt: günstige Datacenter für den nachsichtigen Index, Wohnproxies für die sensiblen Ziele.
Häufig gestellte Fragen
Was ist ein Jobbörsen-Aggregator?
Es ist eine Suchmaschine für Stellenanzeigen, die Angebote aus vielen Quellen sammelt — Unternehmenskarriereseiten, ATS-Plattformen, andere Boards und das Jobs SERP — sie in ein Schema normalisiert, Duplikate entfernt und sie Arbeitssuchenden an einem einzigen durchsuchbaren Ort präsentiert. Die technische Arbeit liegt in der Beschaffung, Deduplizierung und Aktualität, nicht nur im Scraping.
Wie deduplizieren Sie Stellenanzeigen aus mehreren Quellen?
Erstellen Sie einen kanonischen Schlüssel, indem Sie Jobtitel, Unternehmen, Standort und die externe Job-ID der Quelle normalisieren und hashen. Kleinschreibung, Interpunktion entfernen und Leerzeichen zuerst zusammenfassen, damit Varianten zusammenfallen. Behalten Sie das erste Vorkommen und lassen Sie Übereinstimmungen fallen. Dies erfasst dieselbe Rolle, die auf der Arbeitgeberseite, Aggregatoren und Google-Jobs erscheint.
Ist das Scraping von Jobbörsen legal?
Es hängt von der Quelle, den Daten und Ihrer Gerichtsbarkeit ab. Öffentliche faktische Felder von Angeboten sind weniger riskant als personenbezogene Daten oder vollständige urheberrechtlich geschützte Beschreibungen, und das Umgehen von Login-Walls erhöht das Risiko einer CFAA-ähnlichen Exposition. Autorisierte ATS-Feeds und das Jobs SERP sind die saubereren Wege. Unternehmen wurden stark für das Scraping personenbezogener Daten bestraft — holen Sie sich rechtlichen Rat für kommerzielle Nutzung.
Wie aktuell sollten aggregierte Jobdaten sein?
Rufen Sie hochvolumige Quellen wie ATS-Feeds stündlich und den langen Schwanz täglich erneut ab, und entfernen Sie dann jede Anzeige, die Sie innerhalb eines rollierenden Fensters nicht erneut gesehen haben — 30 Tage sind ein gängiger Standard. Verfolgen Sie einen letzten Sichtbarkeitszeitstempel pro Job und überwachen Sie das Volumen pro Quelle, damit Sie eine defekte Quelle erkennen, bevor Benutzer veraltete Rollen sehen.
Behandeln Sie die Aggregation als drei Probleme — Quellen, Deduplizierung, Aktualität — und das Scraping wird zu einem unterstützenden Detail. Beginnen Sie mit sauberen ATS-Feeds und dem Jobs SERP Vertical, deduplizieren Sie mit einem kanonischen Schlüssel, schneiden Sie aggressiv und halten Sie die sensiblen Scrapes auf rotierenden Wohn-IP-Adressen. Das ist der Unterschied zwischen einem Produkt, dem Menschen vertrauen, und einem Friedhof toter Links.