mcpField
F
finding-saas-company-leads-twitter

finding-saas-company-leads-twitter

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

About finding-saas-company-leads-twitter

A skill for discovering SaaS companies and software product accounts through Twitter activity, aimed at lead research. It combines keyword-based post discovery with profile enrichment and classifies companies by follower-based stage.

Key features

  1. 01Find companies using launch signals
  2. 02Search sector keywords and hashtags
  3. 03Enrich account profiles
  4. 04Classify companies by follower count
  5. 05Score and organize potential leads

Use cases

  1. 01Build a lead list for a SaaS vertical
  2. 02Find early-stage software companies on Twitter
  3. 03Prioritize active company accounts for outreach

MCP support

Can use the Apify MCP server's run-actor tool to run the tweet-scraper and twitter-user-scraper.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/apidojo-io/apidojo-skills --skill finding-saas-company-leads-twitter

After installing, type/finding-saas-company-leads-twitterin Claude Code to confirm it loaded.

Details

From the project README

Finding SaaS Company Leads on Twitter

Discovers SaaS companies and software product accounts via Twitter signals — product launches, feature announcements, founder activity, and niche-specific hashtags. Twitter is where early-stage B2B SaaS companies are most active before establishing a formal web presence.

Prerequisites

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

Inputs

ParameterTypeRequiredDefaultNotes
startUrlsarrayOptional[]Twitter profile or tweet URLs
twitterHandlesarrayOptional[]Twitter usernames (without @)
twitterUserIdsarrayOptional[]Twitter user IDs
getFollowersbooleanOptionalfalseExtract follower lists
getFollowingbooleanOptionalfalseExtract following lists
getRetweetersbooleanOptionalfalseExtract retweeters of a tweet URL
includeUnavailableUsersbooleanOptionalfalseInclude unavailable/suspended users
maxItemsnumberOptionalUnlimitedMaximum users to return
customMapFunctionstringOptional—JavaScript function to transform each output object

Workflow

Progress:
- [ ] Step 1: Build keyword and hashtag search list for vertical
- [ ] Step 2: Run tweet-scraper to find active companies
- [ ] Step 3: Extract unique company handles
- [ ] Step 4: Enrich via twitter-user-scraper
- [ ] Step 5: Score and classify by stage
- [ ] Step 6: Deliver lead list
Step 1: Search Keywords

Build from vertical. Example for "project management SaaS":

Keywords: ["project management software", "PM tool", "#pmtools", "task management SaaS",
           "launched a product", "we built", "try our tool", "project management app"]

Standard SaaS signal phrases (always include):

["just launched", "we built", "our product", "sign up free", "#buildinpublic",
 "new feature", "we're hiring", "Series A", "product update", "[vertical] tool"]
Step 2: Run tweet-scraper

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

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

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

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~twitter-user-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": ["[VERTICAL] software", "[VERTICAL] SaaS", "[VERTICAL] tool launch", "we built [VERTICAL]"],
  "maxItems": 300,
  "tweetLanguage": "en"
}

REST API fallback:

curl -X POST   "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{
    "searchTerms": ["HR tech SaaS", "HR software launch", "we built HR tool"],
    "maxItems": 300
  }'

Collect unique author.username values.

Step 3: Enrich Profiles

If Apify MCP is available:

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

REST API fallback:

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

Is a SaaS company? Keep if bio contains:

  • Product keywords: "software", "SaaS", "platform", "app", "tool", "API", "dashboard"
  • Launch signals: "try", "sign up", "free trial", "beta"
  • Funding signals: "backed by", "YC", "Techstars", "seed", "Series A/B"

Stage classification from followerCount:

early: followerCount < 1,000
growing: 1,000–10,000
established: > 10,000

Company score:

lead_score = (is_saas_signal ? 1 : 0) * 0.40
           + (has_website ? 1 : 0) * 0.25
           + (tweeted_in_last_30_days ? 1 : 0) * 0.20
           + min(followerCount / 5000, 1) * 0.15
Step 5: Edge Cases
  • Personal accounts return instead of company: Filter — prefer accounts where name != username and bio describes a product; deprioritize accounts with personal pronouns in bio ("I build...")
  • < 20 companies found: Widen vertical keywords; try hashtags #buildinpublic, #indiehacker, #saas directly
  • Duplicate company (founder + company account both found): Keep company account; link to founder handle as contact

Output Format

# SaaS Company Leads: [VERTICAL]
Companies found: [N] | Early: [N] | Growing: [N] | Established: [N] | Date: [DATE]

## Growing-Stage Companies (Best Outreach Window)
| Company | Handle | Product | Stage | Followers | Website | Score |
|---------|--------|---------|-------|-----------|---------|-------|
| [name] | @[handle] | [1-line description from bio] | Growing | [N] | [url] | [0.XX] |

## Early-Stage (High Receptivity)
| Company | Handle | Product | Followers | Last Active |
|---------|--------|---------|-----------|------------|

## Established (Formal Sales Cycle)
| Company | Handle | Product | Followers | Website |
|---------|--------|---------|-----------|---------|

Troubleshooting

Results are mostly personal accounts: Add "software" OR "app" OR "platform" to search and filter aggressively by bio keywords. Vertical too broad (returns 500+ companies): Narrow to a sub-vertical (e.g., "project management" → "async project management for remote teams"). Companies inactive (last tweet > 60 days): Flag as potentially dormant; cross-reference product website for active status.

Comments

Markdown supported