A
analyzing-competitor-twitter-profile-content
About analyzing-competitor-twitter-profile-content
A skill for analyzing competitors’ Twitter profiles by collecting tweets and ranking their competitive intelligence value using engagement, views, and media. It supports date ranges and filters for replies, images, and retweets.
Key features
- 01Scrape tweets by handle or profile URL
- 02Filter by date range
- 03Filter images, retweets, and replies
- 04Score engagement, views, and media
- 05Group tweets into three impact tiers
Use cases
- 01Compare multiple competitors’ tweet performance
- 02Find high-engagement or media-rich tweets
- 03Compile competitive intelligence for a date range
MCP support
Can call the apidojo~twitter-profile-scraper actor through Apify MCP’s call_actor tool.
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ apidojo-io/ apidojo-skills --skill analyzing-competitor-twitter-profile-contentAfter installing, type/analyzing-competitor-twitter-profile-contentin Claude Code to confirm it loaded.
Details
From the project READMEAnalyzing Competitor Twitter Profile Content
Inputs
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
startUrls | array | Optional | [] | Twitter profile URLs (x.com or twitter.com formats) |
twitterHandles | array | Optional | [] | Twitter usernames (without @) |
start | string | Optional | — | Tweets after this date (YYYY-MM-DD or YYYY-MM-DD_HH:MM:SS_UTC) |
end | string | Optional | — | Tweets before this date (YYYY-MM-DD or YYYY-MM-DD_HH:MM:SS_UTC) |
includeNativeRetweets | boolean | Optional | false | Include native retweets in results |
onlyImages | boolean | Optional | false | Only tweets containing images |
getReplies | boolean | Optional | false | Include tweet replies |
minReplyCount | number | Optional | — | Minimum reply count threshold |
getAboutData | boolean | Optional | false | Fetch full profile about data |
maxItems | number | Optional | Unlimited | Maximum tweets to return |
customMapFunction | string | Optional | — | JavaScript function to transform each output object |
How to Run
Using run_actor.js (recommended)
# Quick answer (table)
node scripts/run_actor.js --actor "apidojo~twitter-profile-scraper" --input '{"twitterHandles": ["competitor_handle"], "maxItems": 100}'
# Save as CSV
node scripts/run_actor.js --actor "apidojo~twitter-profile-scraper" --input '{"twitterHandles": ["competitor_handle"], "maxItems": 100}' --output results.csv --format csv
# Save as JSON
node scripts/run_actor.js --actor "apidojo~twitter-profile-scraper" --input '{"twitterHandles": ["competitor_handle"], "maxItems": 100}' --output results.json --format json
REST API fallback
curl -X POST "https://api.apify.com/v2/acts/apidojo~twitter-profile-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"twitterHandles": ["competitor_handle"], "maxItems": 100}'
If Apify MCP is available:
Use the Apify MCP call_actor tool with actor apidojo~twitter-profile-scraper and the input above.
Scoring & Ranking
Score each tweet for competitive intelligence value:
engagement_total = likeCount + retweetCount + replyCount + quoteCount→ normalized 0-1 (cap at 10K), weight 0.50viewCount→ normalized 0-1 (cap at 500K), weight 0.30has_media(contains image or video) → 0 or 1, weight 0.20
score = 0.50 * min(engagement_total / 10000, 1.0) + 0.30 * min(viewCount / 500000, 1.0) + 0.20 * int(has_media)
Classification
| Score | Tier | Label |
|---|---|---|
| ≥ 0.70 | A | HIGH_IMPACT_TWEET |
| 0.40–0.69 | B | NOTABLE_TWEET |
| < 0.40 | C | LOW_ENGAGEMENT |
Edge Cases
- Private account: Returns 0 tweets. Check if competitor locked their account.
- Minimum 40 tweets: First 40 are included at base pricing. For more, cost is $0.0004/tweet.
- Retweets included: Results include RTs. Filter by checking if text starts with "RT @".
- Date range + few results: Some accounts tweet rarely — widen date range or remove filter.
- Multiple competitors: Run for each handle separately and combine datasets.
Comments
Markdown supported