Find leads by scraping engagers from a competitor's top
Competitor post engagers

Find leads by scraping engagers from a competitor's top LinkedIn posts. Given one or more company page URLs, scrapes recent posts, ranks by engagement, selects the top N, extracts all reactors and commenters, ICP-classifies, and exports…
--- name: competitor-post-engagers description: > Find leads by scraping engagers from a competitor's top LinkedIn posts. Given one or more company page URLs, scrapes recent posts, ranks by engagement, selects the top N, extracts all reactors and commenters, ICP-classifies, and exports CSV. Use when someone wants to "find leads engaging with competitor content" or "scrape people who interact with [company]'s LinkedIn posts". tags: [lead-generation] --- # Competitor Post Engagers Find ICP-fit leads by scraping engagers from a competitor's top-performing LinkedIn posts. Given one or more company page URLs, this skill finds their highest-engagement recent posts, extracts everyone who reacted or commented, and classifies by ICP fit. **Core principle:** Scrape all posts in one call per company, then locally rank and select the top N. This minimizes Apify costs while maximizing lead quality.
Overview
Find ICP-fit leads by scraping engagers from a competitor's top-performing LinkedIn posts. Given one or more company page URLs, this skill finds their highest-engagement recent posts, extracts everyone who reacted or commented, and classifies by ICP fit.
Manual install (npx, ZIP)
npx skills add gooseworks-ai/goose-skills --skill competitor-post-engagers -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \
| tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/lead-generation/capabilities/competitor-post-engagersNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/6493fb3815a2dc503f2b/competitor-post-engagers.zip" -OutFile "$env:TEMP\competitor-post-engagers.zip"; Expand-Archive "$env:TEMP\competitor-post-engagers.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md7.2 KBskill.meta.json315 Bscripts/1 file · 34.4 KB
Read the files here
Show the full text169 lines
Competitor Post Engagers
Find ICP-fit leads by scraping engagers from a competitor's top-performing LinkedIn posts. Given one or more company page URLs, this skill finds their highest-engagement recent posts, extracts everyone who reacted or commented, and classifies by ICP fit.
Core principle: Scrape all posts in one call per company, then locally rank and select the top N. This minimizes Apify costs while maximizing lead quality.
Phase 0: Intake
Ask the user these questions:
Target Companies
- LinkedIn company page URL(s) to scrape (e.g.,
https://www.linkedin.com/company/11x-ai/) - Time window — how many days back to look (default: 30)
- Top N posts per company to extract engagers from (default: 1)
ICP Criteria
- ICP keywords — job title/role terms that indicate a good lead (e.g., "sales", "SDR", "revenue")
- Exclude keywords — roles to filter out (e.g., "software engineer", "designer")
- Geographic focus (optional, e.g., "United States")
Save config in the current working directory (or user-specified path):
competitor-post-engagers-config.json
Config JSON structure:
{
"name": "<run-name>",
"company_urls": ["https://www.linkedin.com/company/<competitor>/"],
"days_back": 30,
"max_posts": 50,
"max_reactions": 500,
"max_comments": 200,
"top_n_posts": 1,
"icp_keywords": ["sales", "revenue", "growth", "SDR", "BDR", "outbound"],
"exclude_keywords": ["software engineer", "developer", "designer"],
"enrich_companies": true,
"competitor_company_names": ["<competitor-name>"],
"industry_keywords": ["freight", "logistics", "trucking", "transportation", "3pl", "supply chain", "carrier", "brokerage", "shipping", "warehousing"],
"output_dir": "output"
}
enrich_companies— Enable Apollo company enrichment (default: true). Set to false or use--skip-company-enrichto skip.competitor_company_names— Company names to exclude from enrichment (the competitor itself).industry_keywords— Industry terms that indicate ICP fit. Matched against Apollo's industry field.
The output_dir is relative to the script directory by default. Override it with an absolute path to write output to a specific location.
Phase 1: Run the Pipeline
python3 skills/competitor-post-engagers/scripts/competitor_post_engagers.py \
--config competitor-post-engagers-config.json \
[--test] [--yes] [--skip-company-enrich] [--top-n 3] [--max-runs 30]
Flags:
--config(required) — path to config JSON--test— small limits (20 posts, 50 profiles, 1 top post)--yes— skip cost confirmation prompts--skip-company-enrich— skip Apollo company enrichment step (saves credits)--top-n— override top_n_posts from config--max-runs— override Apify run limit
Pipeline Steps
Step 1: Scrape company posts + engagers — For each company URL, one Apify call using harvestapi/linkedin-company-posts with scrapeReactions: true, scrapeComments: true. Returns posts, reactions, and comments in a single dataset.
Step 2: Rank & select top posts — Filter posts by time window (days_back), rank by total engagement (reactions + comments), select top N per company. Then extract engagers (reactors + commenters) only from those selected posts. Deduplication by name. Score engagers by position:
+3Commenter (higher intent)+2Position matches ICP keywords-5Position matches exclude keywords
Step 3: Company enrichment (Apollo) — Extract unique company names from engagers, call apollo.enrich_organization(name=...) for each. Returns industry, employee count, description, and location. ~1 Apollo credit per unique company. Merge data back to all engagers from that company. Skip with --skip-company-enrich or "enrich_companies": false.
Step 4: ICP classify & export — Classify as Likely ICP / Possible ICP / Unknown / Tech Vendor. Uses both headline keyword matching AND company industry data (from Step 3) — if the engager's company industry matches industry_keywords, they're classified as "Likely ICP" regardless of role. Export CSV.
Cost Estimates
| Parameter | Test | Standard |
|---|---|---|
| Posts scraped per company | 20 | 50 |
| Max reactions | 50 | 500 |
| Max comments | 50 | 200 |
| Est. Apify cost (1 company) | ~$0.10 | ~$0.50-1 |
| Est. Apollo credits (company enrich) | ~10-20 | ~30-80 unique companies |
| Est. Apollo cost | ~$0.05-0.10 | ~$0.15-0.40 |
Phase 2: Review & Refine
Present results:
- Post selection — which posts were chosen and why (engagement counts, preview)
- Per-company breakdown — how many leads from each competitor
- ICP breakdown — counts by tier
- Top 15 leads — name, role, company, engagement type
Common adjustments:
- Too many irrelevant leads — tighten
icp_keywordsor addexclude_keywords - Missing ICP leads — broaden
icp_keywords - Wrong posts selected — increase
top_n_postsor adjustdays_back - Too expensive — use
--testmode or lowermax_reactions/max_comments
Phase 3: Output
CSV exported to {output_dir}/{name}-engagers-{date}.csv:
| Column | Description |
|---|---|
| Name | Full name |
| LinkedIn URL | Profile link |
| Role | Parsed from headline |
| Company | Parsed from headline |
| Company Industry | From Apollo enrichment |
| Company Size | Estimated employee count from Apollo |
| Company Description | Short company description from Apollo |
| Company Location | City, State, Country from Apollo |
| Source Page | Which competitor's page |
| Post URL | Link to the specific post |
| Post Preview | First 120 chars of post content |
| Engagement Type | Comment or Reaction |
| Comment Text | Their comment (personalization gold) |
| ICP Tier | Likely ICP / Possible ICP / Unknown / Tech Vendor |
| Pre-Filter Score | Priority score from pre-filter |
Tools Required
- Apify API token — set as
APIFY_API_TOKENin.env - Apollo API key — set as
APOLLO_API_KEYin.env(for company enrichment) - Apify actors used:
harvestapi/linkedin-company-posts(post + engager scraping)
- Apollo endpoints used:
organizations/enrich(company industry/size lookup, 1 credit per company)
Example Usage
Trigger phrases:
- "Find leads engaging with [competitor]'s LinkedIn posts"
- "Scrape engagers from [company]'s top posts"
- "Who is interacting with [competitor]'s content?"
- "Run competitor-post-engagers for [company]"
Test mode:
python3 skills/competitor-post-engagers/scripts/competitor_post_engagers.py \
--config competitor-post-engagers-config.json --test --yes
Full run:
python3 skills/competitor-post-engagers/scripts/competitor_post_engagers.py \
--config competitor-post-engagers-config.json --yes
| 1 | |
| 2 | name competitor-post-engagers |
| 3 | description > |
| 4 | Find leads by scraping engagers from a competitor's top LinkedIn posts. |
| 5 | Given one or more company page URLs, scrapes recent posts, ranks by |
| 6 | engagement, selects the top N, extracts all reactors and commenters, |
| 7 | ICP-classifies, and exports CSV. Use when someone wants to "find leads |
| 8 | engaging with competitor content" or "scrape people who interact with |
| 9 | [company]'s LinkedIn posts". |
| 10 | tags [lead-generation] |
| 11 | |
| 12 | |
| 13 | # Competitor Post Engagers |
| 14 | |
| 15 | Find ICP-fit leads by scraping engagers from a competitor's top-performing LinkedIn posts. Given one or more company page URLs, this skill finds their highest-engagement recent posts, extracts everyone who reacted or commented, and classifies by ICP fit. |
| 16 | |
| 17 | **Core principle:** Scrape all posts in one call per company, then locally rank and select the top N. This minimizes Apify costs while maximizing lead quality. |
| 18 | |
| 19 | ## Phase 0: Intake |
| 20 | |
| 21 | Ask the user these questions: |
| 22 | |
| 23 | ### Target Companies |
| 24 | |
| 25 | LinkedIn company page URL(s) to scrape (e.g., `https://www.linkedin.com/company/11x-ai/`) |
| 26 | Time window — how many days back to look (default: 30) |
| 27 | Top N posts per company to extract engagers from (default: 1) |
| 28 | |
| 29 | ### ICP Criteria |
| 30 | |
| 31 | ICP keywords — job title/role terms that indicate a good lead (e.g., "sales", "SDR", "revenue") |
| 32 | Exclude keywords — roles to filter out (e.g., "software engineer", "designer") |
| 33 | Geographic focus (optional, e.g., "United States") |
| 34 | |
| 35 | Save config in the current working directory (or user-specified path): |
| 36 | |
| 37 | competitor-post-engagers-config.json |
| 38 | |
| 39 | |
| 40 | Config JSON structure: |
| 41 | |
| 42 | { |
| 43 | "name": "<run-name>", |
| 44 | "company_urls": ["https://www.linkedin.com/company/<competitor>/"], |
| 45 | "days_back": 30, |
| 46 | "max_posts": 50, |
| 47 | "max_reactions": 500, |
| 48 | "max_comments": 200, |
| 49 | "top_n_posts": 1, |
| 50 | "icp_keywords": ["sales", "revenue", "growth", "SDR", "BDR", "outbound"], |
| 51 | "exclude_keywords": ["software engineer", "developer", "designer"], |
| 52 | "enrich_companies": true, |
| 53 | "competitor_company_names": ["<competitor-name>"], |
| 54 | "industry_keywords": ["freight", "logistics", "trucking", "transportation", "3pl", "supply chain", "carrier", "brokerage", "shipping", "warehousing"], |
| 55 | "output_dir": "output" |
| 56 | } |
| 57 | |
| 58 | |
| 59 | `enrich_companies` — Enable Apollo company enrichment (default: true). Set to false or use `--skip-company-enrich` to skip. |
| 60 | `competitor_company_names` — Company names to exclude from enrichment (the competitor itself). |
| 61 | `industry_keywords` — Industry terms that indicate ICP fit. Matched against Apollo's industry field. |
| 62 | |
| 63 | The `output_dir` is relative to the script directory by default. Override it with an absolute path to write output to a specific location. |
| 64 | |
| 65 | ## Phase 1: Run the Pipeline |
| 66 | |
| 67 | |
| 68 | python3 skills/competitor-post-engagers/scripts/competitor_post_engagers.py \ |
| 69 | --config competitor-post-engagers-config.json \ |
| 70 | [--test] [--yes] [--skip-company-enrich] [--top-n 3] [--max-runs 30] |
| 71 | |
| 72 | |
| 73 | **Flags:** |
| 74 | `--config` (required) — path to config JSON |
| 75 | `--test` — small limits (20 posts, 50 profiles, 1 top post) |
| 76 | `--yes` — skip cost confirmation prompts |
| 77 | `--skip-company-enrich` — skip Apollo company enrichment step (saves credits) |
| 78 | `--top-n` — override top_n_posts from config |
| 79 | `--max-runs` — override Apify run limit |
| 80 | |
| 81 | ### Pipeline Steps |
| 82 | |
| 83 | **Step 1: Scrape company posts + engagers** — For each company URL, one Apify call using `harvestapi/linkedin-company-posts` with `scrapeReactions: true, scrapeComments: true`. Returns posts, reactions, and comments in a single dataset. |
| 84 | |
| 85 | **Step 2: Rank & select top posts** — Filter posts by time window (`days_back`), rank by total engagement (reactions + comments), select top N per company. Then extract engagers (reactors + commenters) only from those selected posts. Deduplication by name. Score engagers by position: |
| 86 | `+3` Commenter (higher intent) |
| 87 | `+2` Position matches ICP keywords |
| 88 | `-5` Position matches exclude keywords |
| 89 | |
| 90 | **Step 3: Company enrichment (Apollo)** — Extract unique company names from engagers, call `apollo.enrich_organization(name=...)` for each. Returns industry, employee count, description, and location. ~1 Apollo credit per unique company. Merge data back to all engagers from that company. Skip with `--skip-company-enrich` or `"enrich_companies": false`. |
| 91 | |
| 92 | **Step 4: ICP classify & export** — Classify as Likely ICP / Possible ICP / Unknown / Tech Vendor. Uses both headline keyword matching AND company industry data (from Step 3) — if the engager's company industry matches `industry_keywords`, they're classified as "Likely ICP" regardless of role. Export CSV. |
| 93 | |
| 94 | ### Cost Estimates |
| 95 | |
| 96 | | Parameter | Test | Standard | |
| 97 | |-----------|------|----------| |
| 98 | | Posts scraped per company | 20 | 50 | |
| 99 | | Max reactions | 50 | 500 | |
| 100 | | Max comments | 50 | 200 | |
| 101 | | Est. Apify cost (1 company) | ~$0.10 | ~$0.50-1 | |
| 102 | | Est. Apollo credits (company enrich) | ~10-20 | ~30-80 unique companies | |
| 103 | | Est. Apollo cost | ~$0.05-0.10 | ~$0.15-0.40 | |
| 104 | |
| 105 | ## Phase 2: Review & Refine |
| 106 | |
| 107 | Present results: |
| 108 | **Post selection** — which posts were chosen and why (engagement counts, preview) |
| 109 | **Per-company breakdown** — how many leads from each competitor |
| 110 | **ICP breakdown** — counts by tier |
| 111 | **Top 15 leads** — name, role, company, engagement type |
| 112 | |
| 113 | Common adjustments: |
| 114 | **Too many irrelevant leads** — tighten `icp_keywords` or add `exclude_keywords` |
| 115 | **Missing ICP leads** — broaden `icp_keywords` |
| 116 | **Wrong posts selected** — increase `top_n_posts` or adjust `days_back` |
| 117 | **Too expensive** — use `--test` mode or lower `max_reactions`/`max_comments` |
| 118 | |
| 119 | ## Phase 3: Output |
| 120 | |
| 121 | CSV exported to `{output_dir}/{name}-engagers-{date}.csv`: |
| 122 | |
| 123 | | Column | Description | |
| 124 | |--------|-------------| |
| 125 | | Name | Full name | |
| 126 | | LinkedIn URL | Profile link | |
| 127 | | Role | Parsed from headline | |
| 128 | | Company | Parsed from headline | |
| 129 | | Company Industry | From Apollo enrichment | |
| 130 | | Company Size | Estimated employee count from Apollo | |
| 131 | | Company Description | Short company description from Apollo | |
| 132 | | Company Location | City, State, Country from Apollo | |
| 133 | | Source Page | Which competitor's page | |
| 134 | | Post URL | Link to the specific post | |
| 135 | | Post Preview | First 120 chars of post content | |
| 136 | | Engagement Type | Comment or Reaction | |
| 137 | | Comment Text | Their comment (personalization gold) | |
| 138 | | ICP Tier | Likely ICP / Possible ICP / Unknown / Tech Vendor | |
| 139 | | Pre-Filter Score | Priority score from pre-filter | |
| 140 | |
| 141 | ## Tools Required |
| 142 | |
| 143 | **Apify API token** — set as `APIFY_API_TOKEN` in `.env` |
| 144 | **Apollo API key** — set as `APOLLO_API_KEY` in `.env` (for company enrichment) |
| 145 | **Apify actors used:** |
| 146 | `harvestapi/linkedin-company-posts` (post + engager scraping) |
| 147 | **Apollo endpoints used:** |
| 148 | `organizations/enrich` (company industry/size lookup, 1 credit per company) |
| 149 | |
| 150 | ## Example Usage |
| 151 | |
| 152 | **Trigger phrases:** |
| 153 | "Find leads engaging with [competitor]'s LinkedIn posts" |
| 154 | "Scrape engagers from [company]'s top posts" |
| 155 | "Who is interacting with [competitor]'s content?" |
| 156 | "Run competitor-post-engagers for [company]" |
| 157 | |
| 158 | **Test mode:** |
| 159 | |
| 160 | python3 skills/competitor-post-engagers/scripts/competitor_post_engagers.py \ |
| 161 | --config competitor-post-engagers-config.json --test --yes |
| 162 | |
| 163 | |
| 164 | **Full run:** |
| 165 | |
| 166 | python3 skills/competitor-post-engagers/scripts/competitor_post_engagers.py \ |
| 167 | --config competitor-post-engagers-config.json --yes |
| 168 | |
| 169 |
Details
- Updated
- Sep 21, 2026
- License
- MIT
- Stars on the repo
- ★ 1,220
- Checked
- Source
- gooseworks-ai/goose-skills ↗
- Creator
- gooseworks-ai · 206 listings
Made with competitor-post-engagers

Similar skills
See all →
SkillEstimate the intrinsic value of a public company using DCFCompany valuation
SkillFind keywords a competitor ranks for that the user's siteCompetitor gap
SkillMine the highest-converting ad angles from customer reviewsAd angle miner
SkillAnalyze competitor content coverageCompetitor content intelligence
SkillCreates competitive battlecards for sales deal conversations
SkillRead your X audience and niche from real dataX audience insightsMore from gooseworks-ai
SkillMine the highest-converting ad angles from customer reviewsAd angle miner
SkillAnalyze ad campaign performance data to identify what'sAd campaign analyzer
SkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzer
SkillAnalyze the message match between your ads and landing pagesAd to landing page auditor
SkillCheck and improve your brand's visibility across AI searchAeo
SkillSearch Amazon products - find items, compare pricesAmazon Product Search