apify-competitor-intelligence
Competitor Intelligence
Analyze competitors using Apify Actors to extract data from multiple platforms.
Prerequisites
(No need to check it upfront)
.envfile withAPIFY_TOKEN- Node.js 20.6+ (for native
--env-filesupport)
Workflow
Copy this checklist and track progress:
Task Progress:
- [ ] Step 1: Identify competitor analysis type (select Actor)
- [ ] Step 2: Fetch Actor schema
- [ ] Step 3: Ask user preferences (format, filename)
- [ ] Step 4: Run the analysis script
- [ ] Step 5: Summarize findings
Step 1: Identify Competitor Analysis Type
Select the appropriate Actor based on analysis needs:
| User Need | Actor ID | Best For |
|---|---|---|
| Competitor business data | compass/crawler-google-places |
Location analysis |
| Competitor contact discovery | poidata/google-maps-email-extractor |
Email extraction |
| Feature benchmarking | compass/google-maps-extractor |
Detailed business data |
| Competitor review analysis | compass/Google-Maps-Reviews-Scraper |
Review comparison |
| Hotel competitor data | voyager/booking-scraper |
Hotel benchmarking |
| Hotel review comparison | voyager/booking-reviews-scraper |
Review analysis |
| Competitor ad strategies | apify/facebook-ads-scraper |
Ad creative analysis |
| Competitor page metrics | apify/facebook-pages-scraper |
Page performance |
| Competitor content analysis | apify/facebook-posts-scraper |
Post strategies |
| Competitor reels performance | apify/facebook-reels-scraper |
Reels analysis |
| Competitor audience analysis | apify/facebook-comments-scraper |
Comment sentiment |
| Competitor event monitoring | apify/facebook-events-scraper |
Event tracking |
| Competitor audience overlap | apify/facebook-followers-following-scraper |
Follower analysis |
| Competitor review benchmarking | apify/facebook-reviews-scraper |
Review comparison |
| Competitor ad monitoring | apify/facebook-search-scraper |
Ad discovery |
| Competitor profile metrics | apify/instagram-profile-scraper |
Profile analysis |
| Competitor content monitoring | apify/instagram-post-scraper |
Post tracking |
| Competitor engagement analysis | apify/instagram-comment-scraper |
Comment analysis |
| Competitor reel performance | apify/instagram-reel-scraper |
Reel metrics |
| Competitor growth tracking | apify/instagram-followers-count-scraper |
Follower tracking |
| Comprehensive competitor data | apify/instagram-scraper |
Full analysis |
| API-based competitor analysis | apify/instagram-api-scraper |
API access |
| Competitor video analysis | streamers/youtube-scraper |
Video metrics |
| Competitor sentiment analysis | streamers/youtube-comments-scraper |
Comment sentiment |
| Competitor channel metrics | streamers/youtube-channel-scraper |
Channel analysis |
| TikTok competitor analysis | clockworks/tiktok-scraper |
TikTok data |
| Competitor video strategies | clockworks/tiktok-video-scraper |
Video analysis |
| Competitor TikTok profiles | clockworks/tiktok-profile-scraper |
Profile data |
Step 2: Fetch Actor Schema
Fetch the Actor's input schema and details:
node --env-file=.env ${CLAUDE_PLUGIN_ROOT}/reference/scripts/fetch_actor_details.js --actor "ACTOR_ID"
Replace ACTOR_ID with the selected Actor (e.g., compass/crawler-google-places).
This returns:
- Actor info (title, description, URL, categories, stats, rating)
- README summary
- Input schema (required and optional parameters)
Step 3: Ask User Preferences
Skip this step for simple lookups (e.g., "what's Nike's follower count?", "find me 5 coffee shops in Prague") — just use quick answer mode and move to Step 4.
For larger scraping tasks, ask:
- Output format:
- Quick answer - Display top few results in chat (no file saved)
- CSV - Full export with all fields
- JSON - Full export in JSON format
- Number of results: Based on character of use case
Cost safety: Always set a sensible result limit in the Actor input (e.g., maxResults, resultsLimit, maxCrawledPages, or equivalent field from the input schema). Default to 100 results unless the user explicitly asks for more. Warn the user before running large scrapes (1000+ results) as they consume more Apify credits.
Step 4: Run the Script
Quick answer (display in chat, no file):
node --env-file=.env ${CLAUDE_PLUGIN_ROOT}/reference/scripts/run_actor.js \
--actor "ACTOR_ID" \
--input 'JSON_INPUT'
CSV:
node --env-file=.env ${CLAUDE_PLUGIN_ROOT}/reference/scripts/run_actor.js \
--actor "ACTOR_ID" \
--input 'JSON_INPUT' \
--output YYYY-MM-DD_OUTPUT_FILE.csv \
--format csv
JSON:
node --env-file=.env ${CLAUDE_PLUGIN_ROOT}/reference/scripts/run_actor.js \
--actor "ACTOR_ID" \
--input 'JSON_INPUT' \
--output YYYY-MM-DD_OUTPUT_FILE.json \
--format json
Step 5: Summarize Findings
After completion, report:
- Number of competitors analyzed
- File location and name
- Key competitive insights
- Suggested next steps (deeper analysis, benchmarking)
Error Handling
APIFY_TOKEN not found - Ask user to create .env with APIFY_TOKEN=your_token
Actor not found - Check Actor ID spelling
Run FAILED - Ask user to check Apify console link in error output
Timeout - Reduce input size or increase --timeout