mcpField
B
building-twitter-prospect-lists

building-twitter-prospect-lists

github.com/apidojo-ioMarketing & growth1777 installsUpdated 24w ago
Repository

About building-twitter-prospect-lists

A skill for building Twitter/X prospect lists from topic tweets and profile data. It guides marketers through defining an ICP, finding candidate authors, filtering and ranking them, and preparing a contact-ready list.

Key features

  1. 01Search tweets by keywords and topics
  2. 02Collect and deduplicate author profiles
  3. 03Filter by bio, followers, and location
  4. 04Rank prospects by relevance and engagement
  5. 05Format results for outreach

Use cases

  1. 01Find founders or marketers discussing target topics
  2. 02Build a prospect list using job and industry signals
  3. 03Prioritize candidates for personalized outreach

MCP support

Can use the Apify MCP server to run tweet-scraper and twitter-user-scraper actors; alternatively, it provides command-line and REST API methods.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/apidojo-io/apidojo-skills --skill building-twitter-prospect-lists

After installing, type/building-twitter-prospect-listsin Claude Code to confirm it loaded.

Details

From the project README

Building Twitter Prospect Lists

Searches Twitter/X for profiles matching a target ICP (Ideal Customer Profile) using bio keywords and topic-based tweet search. Delivers a contact-ready list with engagement signals and bio context.

Prerequisites

  • APIFY_TOKEN environment variable set
  • Optional: Apify MCP server installed

Inputs

ParameterTypeRequiredDefaultNotes
searchTermsarray✅[]Twitter advanced search queries (e.g. ["#AI lang:en", "from:NASA"])
sortstringOptionalTopSort order: Latest, Top, or Latest+Top
tweetLanguagestringOptional—ISO 639-1 language code (e.g. en)
maxItemsnumberOptionalUnlimitedMaximum tweets to return
onlyVerifiedUsersbooleanOptionalfalseOnly tweets from verified users
onlyTwitterBluebooleanOptionalfalseOnly Twitter Blue subscribers
onlyImagebooleanOptionalfalseOnly tweets with images
onlyVideobooleanOptionalfalseOnly tweets with videos
onlyQuotebooleanOptionalfalseOnly quote tweets
authorstringOptional—Filter to a specific author handle
inReplyTostringOptional—Tweets replying to a specific handle
mentioningstringOptional—Tweets mentioning a specific handle
geotaggedNearstringOptional—Tweets near a location
withinRadiusstringOptional—Radius around geotaggedNear
geocodestringOptional—Lat/lng + radius string
placeObjectIdstringOptional—Tweets tagged with a place
minimumRetweetsnumberOptional—Minimum retweet count
minimumFavoritesnumberOptional—Minimum like count
minimumRepliesnumberOptional—Minimum reply count
startstringOptional—Tweets after this date (YYYY-MM-DD)
endstringOptional—Tweets before this date (YYYY-MM-DD)
includeSearchTermsbooleanOptionalfalseAdd the matched search term to each tweet
customMapFunctionstringOptional—JavaScript function to transform each output object

Workflow

Progress:
- [ ] Step 1: Define ICP and search strategy
- [ ] Step 2: Run tweet-scraper for keyword/topic tweets
- [ ] Step 3: Extract unique authors from results
- [ ] Step 4: Enrich with twitter-user-scraper for bio + follower data
- [ ] Step 5: Filter, rank, and deliver prospect list
Step 1: Define ICP and Strategy

Ask the user:

  • Job title keywords for Twitter bio search (e.g., "Head of Growth", "Founder", "CTO")
  • Topic keywords — what topics does the ICP tweet about? (e.g., "SaaS metrics", "PLG", "RevOps")
  • Industry signals — keywords that suggest the right industry in bio (e.g., "SaaS", "fintech", "healthcare")
  • Follower range (optional) — e.g., 1,000–50,000 (avoids both nobodies and celebrities)
  • Location (optional) — e.g., "San Francisco", "London"
  • List size — how many prospects needed?
Step 2: Search for Topic-Based Tweets

Search Twitter for tweets about topics your ICP cares about. People who actively tweet about a topic are warmer prospects.

Recommended — run_actor.js (handles waiting, output, and file saving automatically):

# Quick answer (prints table to chat)
node scripts/run_actor.js \
  --actor "apidojo~tweet-scraper" \
  --input '{"param": "value"}'

# Save as CSV
node scripts/run_actor.js \
  --actor "apidojo~tweet-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.csv --format csv

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~tweet-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.json --format json

APIFY_TOKEN must be set in environment or .env file.

If Apify MCP is available:

Tool: apify:run-actor
Actor: "apidojo~tweet-scraper"
Input:
{
  "searchTerms": ["[TOPIC_KEYWORD_1]", "[TOPIC_KEYWORD_2]"],
  "maxItems": 200,
  "tweetLanguage": "en"
}

If Apify MCP is not available:

curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "searchTerms": ["[TOPIC_KEYWORD]"],
    "maxItems": 200
  }'

Run for each topic keyword. Collect all author.username values. Deduplicate. This gives you a candidate pool.

Step 3: Enrich Candidates with Profile Data

Take the top 100-200 unique usernames from Step 2. Fetch full profile data to filter by bio keywords and follower count.

If Apify MCP is available:

Tool: apify:run-actor
Actor: "apidojo~twitter-user-scraper"
Input:
{
  "usernames": ["[username1]", "[username2]", "..."],
  "maxItems": 100
}

If Apify MCP is not available:

curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~twitter-user-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "usernames": ["[username1]", "[username2]"]
  }'
Step 4: Filter Against ICP Criteria

From profile data, keep only users where ALL of these are true:

  1. Bio contains at least one job title keyword OR industry signal keyword
  2. Follower count is within the specified range (if given)
  3. Location matches (if specified) — check location field
  4. Account is not a bot (has profile picture, has >10 tweets, account age >6 months)

Remove:

  • Accounts with default profile images
  • Accounts with 0 tweets
  • Verified mega-influencers (follower count above range)
  • Obviously automated accounts
Step 5: Rank and Format

Rank filtered prospects by:

  1. Relevance score = number of ICP keywords matched in bio
  2. Engagement proxy = (likes + retweets on recent tweets) / follower count

Output Format

# Twitter Prospect List: [ICP DESCRIPTION]
Generated: [N] prospects | Filters applied: [summary] | Date: [DATE]

| # | Name | Handle | Followers | Job / Bio | Location | Last Active | Profile |
|---|------|--------|-----------|-----------|----------|-------------|---------|
| 1 | [name] | @[handle] | [N] | [bio excerpt] | [city] | [date] | [url] |
| 2 | [name] | @[handle] | [N] | [bio excerpt] | [city] | [date] | [url] |

## Top 10 Highest-Priority Prospects
1. **@[handle]** — "[bio]" | [N] followers | Recently tweeted about: [topic]
2. **@[handle]** — "[bio]" | [N] followers | Recently tweeted about: [topic]
...

## Notes
- [N] candidates found in topic search
- [N] filtered out (didn't match ICP criteria)
- [N] final prospects delivered
- Engagement signals are 24-48h delayed

Personalizing Outreach

For each top prospect, the recent tweet sample can be used to personalize outreach. Note their recent topics to reference in a first message.

Troubleshooting

Too few results after filtering: Broaden bio keywords (use OR logic, not AND). Try more topic keywords in Step 2. Too many irrelevant accounts: Add industry-specific keywords to bio filter (e.g., require "SaaS" or "B2B" in bio). Location filter not working: Twitter location is self-reported and inconsistent — treat it as a soft signal, not a hard filter.

Comments

Markdown supported