Aus dem Quell-Repository gerendert; Überschriften, Beispiele, Code, Tabellen, Links und Bilder bleiben erhalten.
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-DDHH:MM:SSUTC) |
end | string | Optional | — | Tweets before this date (YYYY-MM-DD or YYYY-MM-DDHH:MM:SSUTC) |
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 jsonREST 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 | HIGHIMPACTTWEET |
| 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.

