SuperAPI AI Directory

analyzing-competitor-twitter-profile-content

Marketing & growth

View repository

Updated 10-16 00:24

About this skill

Analyzing 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.50
  • viewCount → normalized 0-1 (cap at 500K), weight 0.30
  • has_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.