analyzing-competitor-twitter-profile-content
Extracts and analyzes tweet history from competitor or brand Twitter profiles using apidojo's Twitter Profile Scraper on Apify. Triggers when the user asks to: get all tweets from a competitor's Twitter account, analyze what a company posts on Twitter, audit a brand's tweet history, track what topics a competitor covers on X, compare Twitter content strategy between brands, extract posts from a company's Twitter timeline, or monitor a competitor's messaging and announcements on Twitter. Returns
Install
npx skills add https://github.com/apidojo-io/apidojo-skills --skill analyzing-competitor-twitter-profile-contentSKILL.md
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.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.
Related skills
reddit-automationflowkit-labs682KFind Reddit threads where people are genuinely asking for what you offer, then draft short, genuinely helpful replies — disclosing your affiliation honestly and naming your product only when it truly answers the question. Two moves: discovery — scan the right subreddits for real needs (recommendation asks, expressed pain, competitor mentions) and rank the few threads where you can actually help; drafting — write from real experience, respect each community's self-promo rules, and keep a human intwitter-automation101-skills547KAutomate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automatwitter-automationqu-skills289KAutomate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automaseo-auditcoreyhaines31216KWhen the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," or "indexing issues." Use this even if the user just says something vague like "my SEO is bad" or "help wit
