Tony Wang4 Min. LesezeitInstagram scrapen 2026 (API & Python)
Drei Wege, Instagram 2026 zu scrapen — DIY-Python, No-Code-Tools oder strukturierte API für öffentliche Profile, Posts und Reels, mit Rechtsgrundlagen.
Am schnellsten scrapst du Instagram 2026, indem du eine strukturierte Instagram-API aufrufst, die normalisiertes JSON zurückgibt — öffentliche Profile, Posts und Reels — statt einen Headless-Browser durch Instagrams Logins und Anti-Bot-Abwehr zu steuern. DIY ist möglich, aber Instagram ist stark abgeschottet und wird aggressiv verteidigt, und personenbezogene Daten werfen echte Datenschutzfragen auf. Dieser Guide behandelt alle drei Ansätze, was jeder zurückgibt, wo jeder scheitert und die rechtlichen Grundlagen.
Is it legal to scrape Instagram?
Sei vorsichtig. Öffentliche Instagram-Daten zu scrapen (öffentliche Profile, öffentliche Posts) ist risikoärmer als abgeschottete Daten, und hiQ v. LinkedIn stellte fest, dass der Zugriff auf öffentliche Daten kein CFAA-Verstoß ist — aber Instagrams Nutzungsbedingungen verbieten automatisierten Zugriff, ein Großteil des Werts sind personenbezogene Daten nach DSGVO/CCPA, und alles hinter einem Login ist tabu. Faustregeln: nur öffentliche, nicht personenbezogene Daten; niemals Logins umgehen; keine personenbezogenen Daten ohne Rechtsgrundlage sammeln; Instagrams Nutzungsbedingungen prüfen. Siehe is web scraping legal. Keine Rechtsberatung.
Option 1: DIY in Python (and why it breaks)
Für öffentliche Profile stellt Instagram einen Web-Endpoint bereit, der das Profil plus die neuesten ~12 Posts ohne Login zurückgibt — alles darüber hinaus braucht einen eingeloggten Headless-Browser:
import requests
resp = requests.get(
"https://www.instagram.com/api/v1/users/web_profile_info/",
params={"username": "example"},
headers={"User-Agent": "Mozilla/5.0", "X-IG-App-ID": "936619743392459"}, # required, undocumented
)
user = resp.json()["data"]["user"]
print(user["full_name"], user["edge_followed_by"]["count"])
Im Demo funktioniert es, danach bricht es:
- Starkes Rate-Limiting — der Endpoint deckelt bei rund 200 Requests/Stunde pro IP und sperrt Datacenter-IPs sofort, du brauchst also viele rotierende Residential-IPs mit Sticky Sessions.
- Login-Schranken jenseits von Profilen — vollständige Post-Historie, Kommentare, Stories und Follower erfordern Authentifizierung, was ToS- und Datenschutzgrenzen überschreitet.
- TLS- & Header-Fingerprinting — Python-Clients haben erkennbare TLS-Signaturen, und die erforderlichen
X-IG-App-ID-/Header wechseln, sodass Requests markiert werden. - Die Graph-API hilft nicht — Metas Instagram Graph API bedient nur deine eigenen Business-/Creator-Accounts, nicht beliebige öffentliche Nutzer.
Option 2: No-code tools
Visuelle Extraktoren und Browser-Erweiterungen exportieren CSV/JSON — passend für einmalige öffentliche Abrufe, weniger für produktinterne Pipelines mit vorhersehbaren Feldern.
Option 3: A structured Instagram API
Für wiederholbare Workflows über öffentliche Daten gibt eine Instagram scraping API normalisiertes JSON zurück, ohne dass ein Browser laufen muss. Ein öffentliches Profil abrufen:
curl https://api.crawlora.net/api/v1/instagram/profile/USERNAME \
-H "x-api-key: $CRAWLORA_API_KEY"
Derselbe Aufruf in Python:
import requests
profile = requests.get(
"https://api.crawlora.net/api/v1/instagram/profile/USERNAME",
headers={"x-api-key": "YOUR_API_KEY"},
).json()["data"]
print(profile.get("username"), profile.get("followers"))
Eine Antwort ist normalisiertes JSON (die Felder sind beispielhaft — prüfe die docs):
{
"code": 200,
"msg": "OK",
"data": {
"username": "example",
"full_name": "Example Brand",
"followers": 184000,
"posts_count": 420,
"is_verified": true
}
}
Posts und Reels werden über die numerische ID des Nutzers adressiert (aus dem Profil), nicht über das @handle — hol dir also zuerst das Profil:
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/instagram"
profile = requests.get(f"{base}/profile/example", headers=h).json()["data"]
uid = profile["id"]
reels = requests.get(f"{base}/reels/{uid}", headers=h, params={"max_id": ""}).json()["data"]
post = requests.get(f"{base}/post/{uid}/POST_ID", headers=h).json()["data"]
Reels paginieren über max_id. Bleib bei öffentlichen, nicht personenbezogenen Feldern.
What you can collect
Sofern das öffentliche Profil sie preisgibt: Username, Anzeigename, Follower-/Post-Zahlen, Verifizierung, öffentliche Post- und Reel-Metadaten sowie Engagement-Zahlen — plus der Username oder die ID, die du angefragt hast. Bleib bei öffentlichen, nicht personenbezogenen Feldern.
Limitations and common challenges
- Der meiste Wert ist abgeschottet. Öffentliche Profile und ihre neuesten Posts sind erreichbar, aber vollständige Post-Historie, Kommentare, Stories und Follower liegen hinter einem Login — tabu, ohne ToS- und Datenschutzgrenzen zu überschreiten.
- Die Graph-API hilft nicht. Metas Instagram Graph API bedient nur deine eigenen Business-/Creator-Accounts, nicht beliebige öffentliche Nutzer.
- Starkes Rate-Limiting. Instagram deckelt nicht authentifizierte Requests (~200/Stunde pro IP) und sperrt Datacenter-IPs sofort, weshalb DIY viele rotierende Residential-IPs braucht; eine strukturierte API übernimmt das hinter einem einzigen Key.
- Der Umweg über die User-ID. Posts und Reels werden über die numerische User-ID aus dem Profil adressiert, nicht über das
@handle. - Identitäten sind personenbezogene Daten. Usernames, Namen und Post-Inhalte sind nach DSGVO/CCPA personenbezogen — sammle nur öffentliche, nicht personenbezogene Felder mit einer Rechtsgrundlage.
Where this gets used
- Brand-Monitoring — verfolge die öffentliche Präsenz von Marken und Wettbewerbern. Siehe den Use Case brand monitoring.
- Creator-Recherche — bewerte öffentliche Creator-Profile und ihre Reichweite.
- Trend-Recherche — kombiniere mit TikTok- und YouTube-Signalen.
Sources
Start collecting
Probier es zuerst kostenlos aus: Jage eine beliebige öffentliche URL durch den Free Web Scraper oder prüfe mit dem Anti-Bot Checker, ob eine Seite Bots blockiert — ohne Anmeldung.
Teste den Profil-Endpoint im Playground, sieh dir das Schema in den API docs an und wirf einen Blick auf die pricing. Siehe auch how to scrape TikTok, how to scrape YouTube how to scrape LinkedIn und how to scrape Twitter/X für den Rest des Social-Stacks, how to choose a web scraping API und is web scraping legal.
Häufig gestellte Fragen
Kann ich Instagram scrapen, ohne blockiert zu werden?
Mit einer strukturierten API laufen Proxy-Routing und Browser-Ausführung für unterstützte öffentliche Daten hinter dem Endpoint. DIY ist schwierig: Instagram deckelt nicht authentifizierte Requests (~200/Stunde pro IP), sperrt Datacenter-IPs sofort und fingerprintet TLS und Header, es braucht also viele rotierende Residential-IPs.
Funktioniert die Instagram Graph API für öffentliche Daten?
Nein. Metas Instagram Graph API bedient nur deine eigenen Business- oder Creator-Accounts, nicht beliebige öffentliche Nutzer — deshalb bedeutet das Sammeln öffentlicher Profil-, Post- und Reel-Daten Scraping.
Kann ich private oder personenbezogene Daten scrapen?
Nein. Crawloras Endpoints sind nur für öffentliche Daten; vollständige Post-Historie, Kommentare, Stories und Follower liegen hinter einem Login. Behandle Usernames, Namen und Post-Inhalte als personenbezogene Daten nach DSGVO/CCPA und sammle sie nicht ohne Rechtsgrundlage.
Wie bekomme ich die Posts und Reels eines Nutzers?
Ruf das Profil zuerst über den Username ab, um die numerische User-ID zu bekommen, und rufe dann die Reels- und Post-Endpoints mit dieser ID auf (Posts und Reels werden über die User-ID adressiert, nicht über das @handle); Reels paginieren über max_id.
Ist das die offizielle Instagram-API?
Nein. Sie extrahiert öffentliche Instagram-Daten und ist unabhängig von Metas offiziellen APIs.
Wie oft kann ich aktualisieren?
Fahre geplante Snapshots innerhalb deines Plans und der Fair-Use-Grenzen.