Linkedin profile post scraper
Scrape recent posts from LinkedIn profiles using Apify.
How to use it
- Hit Copy the whole skill.
- Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
ChatGPT: make a Project and paste it into Instructions.
Neither? Paste it at the top of a new chat — it works for that chat. - Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/social/capabilities/linkedin-profile-post-scraper#main ~/.claude/skills/linkedin-profile-post-scraperFor one project only, change the path to .claude/skills/linkedin-profile-post-scraper.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Show the full text52 lines
LinkedIn Profile Post Scraper
Scrape recent posts from specific LinkedIn profiles using the Apify harvestapi/linkedin-profile-posts actor.
Quick Start
Requires APIFY_API_TOKEN env var (or --token flag). Install dependency: pip install requests.
# Scrape recent posts from a profile
python3 skills/linkedin-profile-post-scraper/scripts/scrape_linkedin_posts.py \
--profiles "https://www.linkedin.com/in/marcelsantilli" --max-posts 10
# Multiple profiles with keyword filtering
python3 skills/linkedin-profile-post-scraper/scripts/scrape_linkedin_posts.py \
--profiles "https://www.linkedin.com/in/person1,https://www.linkedin.com/in/person2" \
--keywords "AI,growth" --days 30
# Summary table
python3 skills/linkedin-profile-post-scraper/scripts/scrape_linkedin_posts.py \
--profiles "https://www.linkedin.com/in/marcelsantilli" --output summary
CLI Reference
| Flag | Default | Description |
|---|---|---|
--profiles |
required | LinkedIn profile URL(s), comma-separated |
--max-posts |
20 | Max posts to scrape per profile |
--keywords |
none | Keywords to filter (comma-separated, OR logic) |
--days |
30 | Only include posts from last N days |
--output |
json | Output format: json or summary |
--token |
env var | Apify token (prefer APIFY_API_TOKEN env var) |
--timeout |
300 | Max seconds to wait for the Apify run |
Cost
~$2 per 1,000 posts scraped. The script prints a cost estimate before running.
Notes
- No native date filtering — dates are filtered client-side on
postedAt/postedDate - Profile URLs must be full LinkedIn URLs (e.g.
https://www.linkedin.com/in/username)
| 1 | |
| 2 | name linkedin-profile-post-scraper |
| 3 | description > |
| 4 | Scrape recent posts from LinkedIn profiles using Apify. Use when you need to |
| 5 | monitor what specific people are posting on LinkedIn, track founder/exec activity, |
| 6 | or gather LinkedIn content for competitive intelligence. |
| 7 | |
| 8 | |
| 9 | # LinkedIn Profile Post Scraper |
| 10 | |
| 11 | Scrape recent posts from specific LinkedIn profiles using the Apify `harvestapi/linkedin-profile-posts` actor. |
| 12 | |
| 13 | ## Quick Start |
| 14 | |
| 15 | Requires `APIFY_API_TOKEN` env var (or `--token` flag). Install dependency: `pip install requests`. |
| 16 | |
| 17 | |
| 18 | # Scrape recent posts from a profile |
| 19 | python3 skills/linkedin-profile-post-scraper/scripts/scrape_linkedin_posts.py \ |
| 20 | --profiles "https://www.linkedin.com/in/marcelsantilli" --max-posts 10 |
| 21 | |
| 22 | # Multiple profiles with keyword filtering |
| 23 | python3 skills/linkedin-profile-post-scraper/scripts/scrape_linkedin_posts.py \ |
| 24 | --profiles "https://www.linkedin.com/in/person1,https://www.linkedin.com/in/person2" \ |
| 25 | --keywords "AI,growth" --days 30 |
| 26 | |
| 27 | # Summary table |
| 28 | python3 skills/linkedin-profile-post-scraper/scripts/scrape_linkedin_posts.py \ |
| 29 | --profiles "https://www.linkedin.com/in/marcelsantilli" --output summary |
| 30 | |
| 31 | |
| 32 | ## CLI Reference |
| 33 | |
| 34 | | Flag | Default | Description | |
| 35 | |------|---------|-------------| |
| 36 | | `--profiles` | *required* | LinkedIn profile URL(s), comma-separated | |
| 37 | | `--max-posts` | 20 | Max posts to scrape per profile | |
| 38 | | `--keywords` | none | Keywords to filter (comma-separated, OR logic) | |
| 39 | | `--days` | 30 | Only include posts from last N days | |
| 40 | | `--output` | json | Output format: `json` or `summary` | |
| 41 | | `--token` | env var | Apify token (prefer `APIFY_API_TOKEN` env var) | |
| 42 | | `--timeout` | 300 | Max seconds to wait for the Apify run | |
| 43 | |
| 44 | ## Cost |
| 45 | |
| 46 | ~$2 per 1,000 posts scraped. The script prints a cost estimate before running. |
| 47 | |
| 48 | ## Notes |
| 49 | |
| 50 | No native date filtering — dates are filtered client-side on `postedAt`/`postedDate` |
| 51 | Profile URLs must be full LinkedIn URLs (e.g. `https://www.linkedin.com/in/username`) |
| 52 |
Discussion
Alternatives
Also in Company & contact dataApollo lead finderTwo-phase Apollo.io prospecting: free People Search to discover ICP-matching leads, then selective enrichment to reveal emails/phones (credits per contact). Creates Apollo lists. Deduplicates against existing contacts by LinkedIn URL.Company contact finderFind decision-makers at a specific company using Apollo, Crustdata, Fiber, and PDL people search via Gooseworks MCP. Given a company name and target titles, returns a list of contacts with name, title, LinkedIn URL, and location.Company funding searchFind company funding history, investors, and investment detailsCompany Intelligence - Comprehensive Company ReportsFull company intelligence report - overview, team, funding, products, news