Scrapt LinkedIn-Posts von konfigurierten Accounts (Unternehmen, Showcase-Seiten und persönliche Profile) über die Apify API, speichert jeden Post als Markdown-Datei mit Frontmatter und erzeugt einen lesbaren Report mit Executive Summary und Engagement-Statistiken pro Account.
Gedacht für Marketing- und Research-Teams, die systematisch beobachten wollen, was Wettbewerber, Partner oder Branchenkontakte auf LinkedIn veröffentlichen — ohne manuell durch Feeds zu scrollen.
- Company-, Showcase- und Profil-URLs werden automatisch erkannt
- Inkrementelles Scrapen: nur neue Posts werden geladen (Duplikate via Post-ID)
- Markdown-Output mit Frontmatter (Autor, Datum, Likes, Comments, Shares, Reactions, Reposts)
- Report mit Top-Posts nach Engagement und Pro-Account-Tabellen
- Einzelne Accounts gezielt scrapen per CLI-Flag
- Python 3.9+
- Apify Account mit API-Token
- Zugriff auf den Apify-Actor
A3cAPGpwBEG8RJwse(LinkedIn Posts Scraper)
git clone https://github.com/<user>/linkedin-post-scraper.git
cd linkedin-post-scraper
pip install -r requirements.txt- In der Apify Console einloggen
- Personal API Token kopieren
.envaus der Vorlage erstellen:
cp .env.example .env- In der
.envdas Token eintragen:
APIFY_API_TOKEN=apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Die .env ist via .gitignore geschützt und wird nicht committet.
Erstelle eine accounts.json im Projektroot (Beispielstruktur liegt in accounts.example.json):
{
"accounts": [
{
"name": "Firma ABC",
"url": "https://www.linkedin.com/company/firma-abc/"
},
{
"name": "Showcase XY",
"url": "https://www.linkedin.com/showcase/showcase-xy/"
},
{
"name": "Max Mustermann",
"url": "https://www.linkedin.com/in/max-mustermann/"
}
],
"defaultMaxPosts": 20
}URL-Typen:
| Typ | URL-Muster | Beispiel |
|---|---|---|
| Unternehmensseite | /company/<slug>/ |
https://www.linkedin.com/company/example/ |
| Showcase-Seite | /showcase/<slug>/ |
https://www.linkedin.com/showcase/example/ |
| Persönliches Profil | /in/<slug>/ |
https://www.linkedin.com/in/example/ |
defaultMaxPosts steuert, wie viele Posts pro Account beim ersten Lauf geholt werden (default: 20). Bei späteren Läufen werden nur neue Posts seit dem letzten Scrape geladen (max 10 pro Account, es sei denn --full wird übergeben).
Auch accounts.json ist in .gitignore — deine Accountliste bleibt lokal.
python3 scrape.pypython3 scrape.py --accounts "Firma ABC,Max Mustermann"python3 scrape.py --max-posts 50python3 scrape.py --no-reportpython3 scrape.py --fulllinkedin-post-scraper/
├── scrape.py
├── accounts.json # Deine Konfiguration (nicht im Git)
├── .env # Dein API-Token (nicht im Git)
├── posts/ # Gescrapte Posts pro Account
│ ├── firma-abc/
│ │ ├── 2026-04-15-<post-id>.md
│ │ └── 2026-04-10-<post-id>.md
│ └── max-mustermann/
│ └── 2026-04-12-<post-id>.md
└── reports/ # Zeitgestempelte Reports
└── 2026-04-21-0800-scrape-report.md
Jeder Post wird als Markdown mit Frontmatter gespeichert:
---
author: "Firma ABC"
author_url: "https://www.linkedin.com/company/firma-abc/"
author_info: "Packaging Solutions • 5.000 Follower"
date: "2026-04-15"
post_id: "7185..."
post_url: "https://www.linkedin.com/feed/update/..."
likes: 124
comments: 18
shares: 4
is_repost: false
reactions: "like: 98, celebrate: 20, support: 6"
---
Posttext...
## Bilder
Dieser Scraper lässt sich gut als Tool in einen Agent-Workflow integrieren. Typischer Ablauf:
- Accounts einrichten — Agent fragt den User, welche Profile/Companies/Showcases beobachtet werden sollen, und erstellt
accounts.json. - Scrape ausführen —
python3 scrape.py - Report lesen — Agent liest den generierten Report aus
reports/ - Engagement-Analyse — Agent liest die Top-Posts als Markdown aus
posts/und fasst zusammen:- Welches Format performt am besten?
- Welche Themen erzeugen Engagement?
- Content-Ideen für das eigene Team
Das Repo enthält einen fertigen Claude Code Skill unter .claude/skills/linkedin-scraper/SKILL.md. Er steuert den kompletten Ablauf: Config prüfen → Scrape ausführen → Report generieren → Top-Posts analysieren → Takeaways formulieren.
Sobald das Repo geklont ist, erkennt Claude Code den Skill automatisch. Auslöser-Phrasen:
- "linkedin scrapen"
- "posts scrapen"
- "was posten die auf linkedin"
- "linkedin report"
- "konkurrenz linkedin"
Um den Skill auch außerhalb dieses Projekts verfügbar zu machen, einfach den Ordner .claude/skills/linkedin-scraper/ nach ~/.claude/skills/linkedin-scraper/ kopieren.
| Flag | Beschreibung | Default |
|---|---|---|
--max-posts N |
Max Posts pro Account | 20 (bzw. defaultMaxPosts aus accounts.json) |
--accounts "A,B" |
Nur diese Accounts scrapen | alle |
--no-report |
Report-Generierung überspringen | Report wird erzeugt |
--full |
Cache ignorieren, alles neu holen | inkrementell |
Der Actor A3cAPGpwBEG8RJwse rechnet über dein Apify-Konto ab. Preise siehe Actor-Seite in Apify. Bei ca. 10 Accounts × 20 Posts ist ein Lauf meist im Free-Tier möglich — check dein Usage-Dashboard.
MIT — siehe LICENSE