Mit Stand 7. Oktober 2026 verfügt Shifter über den größten Pool an aktiven US-IPs, mehr als Oxylabs und Bright Data, und das zu einem Bruchteil der Kosten.Shifter hat jetzt den größten Pool aktiver US-IPs

Benchmarks ansehen

Wissen

Erfassung von Social-Media-Daten mit modernen Web-Scraping-APIs

Wie Marken- und Research-Teams öffentliche Social-Daten mit Web-Scraping-APIs erfassen: was erfasst werden sollte, ein Schema für jede Plattform und personenbezogene Daten von vornherein ausgeschlossen.

Priya Nair

21. Oktober 2026 · 7 Min. Lesezeit

Marken wollen wissen, was Menschen über sie, ihre Produkte und ihre Konkurrenten sagen, und ein Großteil dieser Konversation findet öffentlich statt: in Foren, auf Bewertungsportalen, in Community-Boards und auf öffentlichen Social-Profilen. Diese Daten zu sammeln ist die Grundlage von Social Listening, und es ist schwieriger, als es aussieht. Jede Plattform strukturiert ihre Seiten anders, viele rendern Inhalte mit JavaScript, und fast alles, was man sammelt, betrifft Menschen.

Dieser Leitfaden behandelt, wie Teams heute öffentliche Social-Daten mit Web-Scraping-APIs sammeln: welche Quellen wann genutzt werden sollten und wann offizielle APIs der bessere Weg sind, wie man sehr unterschiedliche Plattformen in einen einheitlichen Datensatz überführt, und wie man personenbezogene Daten von vornherein heraushält.

Beginnen Sie damit, was Sie herausfinden wollen

Social-Data-Projekte scheitern, wenn alles gesammelt wird und die Entscheidung erst später fällt. Legen Sie zuerst fest, welche Frage Sie beantworten:

  • Volumen: Wie oft wird die Marke erwähnt, und ändert sich das?
  • Themen: Was sagen die Leute, zu welchen Produkten oder Problemen?
  • Vergleich: Wie schneiden Erwähnungen der Marke im Vergleich zu denen der Konkurrenz ab?
  • Vorfälle: Verbreitet sich eine Beschwerde oder ein Angebot gefälschter Produkte?

Jede Frage benötigt nur wenige Felder: den Link des Beitrags, die Zeit, den Text und die Quelle. Nur wenige Projekte brauchen mehr über die Personen, die gepostet haben.

Die Quelle wählen

QuelleBeste Vorgehensweise
Plattformen mit einer offiziellen API, die Ihren Bedarf abdecktDie offizielle API, innerhalb ihrer Nutzungsbedingungen
Öffentliche Foren, Community-Boards und BewertungsportaleSammlung öffentlicher Seiten
Seiten, die mit JavaScript rendernEine Web-Scraping-API mit Rendering
Alles hinter einem LoginNicht sammeln

Offizielle APIs sind in der Regel der zuverlässigste und eindeutig erlaubte Weg, sofern sie existieren und zu Ihrem Volumen und Budget passen. Für öffentliche Seiten ohne eine solche API übernimmt eine Web-Scraping-API die Teile, die soziale Seiten unhandlich machen: das Rendern von JavaScript, das Warten auf geladene Inhalte und das Abrufen von Seiten so, wie sie in einem bestimmten Land erscheinen. Extraktionsregeln liefern die benötigten Felder als JSON statt als rohes HTML.

Bleiben Sie auf der öffentlichen Seite jeder Website. Inhalte hinter einem Login, private Gruppen und Direktnachrichten sind tabu, sowohl weil der Zugriff darauf in der Regel bedeutet, Nutzungsbedingungen zu akzeptieren, die das Sammeln verbieten, als auch weil die beteiligten Personen Privatsphäre erwarten.

Ein Schema für jede Plattform

Jede Quelle benennt ihre Felder unterschiedlich: Ein Forum hat einen Permalink und einen Textkörper, ein Bewertungsportal hat einen Link und einen Bewertungstext, und Daten kommen in unterschiedlichen Formaten und Zeitzonen. Wenn Sie diese getrennt analysieren, scheitern Vergleiche. Bilden Sie jede Quelle beim Sammeln auf ein kleines, einheitliches Schema ab:

  • source: woher der Beitrag stammt;
  • url: die kanonische Adresse, damit derselbe Beitrag nur einmal zählt;
  • published_at: die Zeit in UTC;
  • text: der Text des Beitrags, mit normalisierten Leerzeichen;
  • author_key: ein pseudonymer Schlüssel anstelle des Namens des Autors.

Das folgende Modul führt dieses Mapping durch, entfernt doppelte URLs (Tracking-Parameter und Fragmente lassen einen Beitrag oft wie mehrere aussehen) und zählt tägliche Erwähnungen pro Marke:

import hashlib
from collections import Counter
from datetime import datetime, timezone
from urllib.parse import urlsplit, urlunsplit

# Where each source keeps the fields we need, after extraction rules have run.
FIELD_MAPS = {
    "forum":  {"url": "permalink", "text": "body", "author": "username", "time": "created"},
    "review": {"url": "link", "text": "review_text", "author": "reviewer", "time": "date"},
}


def canonical(url):
    """Drop query strings and fragments so the same post counts once."""
    parts = urlsplit(url)
    return urlunsplit((parts.scheme, parts.netloc.lower(), parts.path.rstrip("/"), "", ""))


def normalise(source, raw, salt):
    """One post in a common shape, with the author pseudonymised and no other personal data."""
    m = FIELD_MAPS[source]
    when = datetime.fromisoformat(raw[m["time"]].replace("Z", "+00:00")).astimezone(timezone.utc)
    return {
        "source": source,
        "url": canonical(raw[m["url"]]),
        "published_at": when.isoformat(timespec="seconds"),
        "text": " ".join(raw[m["text"]].split()),
        "author_key": hashlib.sha256((salt + raw[m["author"]]).encode()).hexdigest()[:16],
    }


def daily_mentions(posts, brands):
    """Count posts per day that mention each brand, counting each URL once."""
    seen, counts = set(), Counter()
    for post in posts:
        if post["url"] in seen:
            continue
        seen.add(post["url"])
        day = post["published_at"][:10]
        for brand in brands:
            if brand.lower() in post["text"].lower():
                counts[(day, brand)] += 1
    return dict(sorted(counts.items()))

Angewendet auf drei beispielhafte Datensätze, von denen einer ein Duplikat mit einem Tracking-Parameter ist:

import os

from social import daily_mentions, normalise

salt = os.environ.get("MENTIONS_SALT", "rotate-me-per-project")
raw = [
    ("forum", {"permalink": "https://forum.example/t/88?ref=home", "body": "Acme kettle died after a week",
               "username": "kitchen_fan", "created": "2026-10-20T08:15:00Z"}),
    ("forum", {"permalink": "https://forum.example/t/88", "body": "Acme kettle died after a week",
               "username": "kitchen_fan", "created": "2026-10-20T08:15:00Z"}),
    ("review", {"link": "https://reviews.example/p/42", "review_text": "Better than my old Brandly one",
                "reviewer": "J. D.", "date": "2026-10-20T19:40:00+02:00"}),
]
posts = [normalise(source, item, salt) for source, item in raw]
print(daily_mentions(posts, ["Acme", "Brandly"]))
{('2026-10-20', 'Acme'): 1, ('2026-10-20', 'Brandly'): 1}

Das Duplikat zählt nur einmal, die Ortszeit der Bewertung wird in UTC umgerechnet, und keine Benutzernamen gelangen in die Ausgabe.

Personenbezogene Daten, von vornherein ausgeschlossen

Öffentliche Beiträge sind in Europa und vielen anderen Orten dennoch personenbezogene Daten, und Datenschutzregeln gelten unabhängig davon, wie öffentlich der Beitrag war. Das sicherste Design behält so wenig über Menschen wie die Frage es erfordert:

  • Autoren pseudonymisieren. Ein gesalzener Hash erlaubt es, eindeutige Poster zu zählen oder ein Konto zu erkennen, das wiederholt postet, ohne den Benutzernamen zu speichern. Verwenden Sie ein unterschiedliches Salt pro Projekt und halten Sie es geheim.
  • Keine Profile sammeln. Followerzahlen, Biografien, Fotos und Standorte einzelner Personen werden für Markenfragen selten benötigt.
  • Aufbewahrung kurz halten. Aggregierte Zählungen und Themen können aufbewahrt werden; roher Text kann meist nach der Analyse gelöscht werden.
  • In aggregierter Form berichten. Veröffentlichen Sie Trends und Beispiele, ohne Personen zu identifizieren.

Unser Leitfaden zum Scraping sozialer Plattformen für Sentiment-Analyse behandelt die Analyseseite, sobald die Daten bereinigt sind, und unser Leitfaden zum Verfolgen von Markenerwähnungen online behandelt den Aufbau des Abfragesets und den Umgang mit regionalen Unterschieden.

Behutsam sammeln

Social- und Community-Seiten werden für ihre Nutzer betrieben. Sammeln Sie in einem Tempo, in dem auch ein Leser browsen würde, bevorzugen Sie die Seiten, die neue Beiträge auflisten, gegenüber dem Durchsuchen ganzer Archive, und stoppen Sie das Sammeln von jeder Quelle, die darum bittet. Markenbeobachtung braucht selten mehr als einen täglichen Durchlauf über die relevanten Quellen.

FAQ

Ist es legal, Social-Media-Daten zu sammeln?

Das Sammeln öffentlicher Beiträge ist oft rechtmäßig, aber die Nutzungsbedingungen der Plattform, die Art des Zugriffs auf die Daten und das Datenschutzrecht gelten alle. Nutzen Sie offizielle APIs, wo sie passen, meiden Sie Inhalte hinter Logins und beschränken Sie personenbezogene Daten auf das, was der Zweck erfordert. Holen Sie für Ihren konkreten Fall rechtlichen Rat ein.

Sollte ich die API einer Plattform oder eine Web-Scraping-API verwenden?

Nutzen Sie die offizielle API, wenn sie die benötigten Daten und das benötigte Volumen innerhalb ihrer Bedingungen abdeckt. Nutzen Sie eine Web-Scraping-API für öffentliche Seiten, für die keine geeignete API existiert, besonders für Seiten, die mit JavaScript rendern.

Wie vermeide ich das Sammeln personenbezogener Daten aus sozialen Medien?

Sammeln Sie nur die Felder, die Ihre Frage benötigt, ersetzen Sie Benutzernamen durch gesalzene pseudonyme Schlüssel, lassen Sie Profile ganz aus, bewahren Sie rohen Text nur so lange wie nötig auf und berichten Sie Ergebnisse aggregiert.

Wie oft sollte ich Social-Erwähnungen sammeln?

Täglich reicht für die meisten Markenbeobachtungen aus. Sammeln Sie nur während eines Launches oder eines Vorfalls häufiger, und konzentrieren Sie sich auf die Quellen, auf denen Ihr Publikum tatsächlich postet.

Fazit

Social-Daten sind wertvoll, weil sie das sind, was echte Menschen öffentlich sagen, und genau deshalb braucht es Sorgfalt. Legen Sie zuerst die Frage fest, nutzen Sie offizielle APIs, wo sie passen, und eine Web-Scraping-API für öffentliche Seiten, bilden Sie jede Quelle auf ein kleines einheitliches Schema ab, und schließen Sie personenbezogene Daten von Anfang an aus dem Design aus. Das Ergebnis ist ein Datensatz, der Markenfragen beantwortet, ohne mehr zu sammeln, als er sollte.

Bereit, loszulegen?

Testen Sie Shifters Residential-Proxys, 205M+ IPs, 195+ Länder, ab 0,75 $/GB.

Jetzt starten