finding-saas-company-leads-twitter
Finds SaaS companies and software startup leads from Twitter/X using apidojo's Twitter scrapers on Apify. Triggers when the user asks to: find SaaS companies on Twitter for partner…
API Dojo
@apidojo-io
Install
$ openclaw skills install @apidojo-io/finding-saas-company-leads-twitterFinding 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_TOKENenvironment variable set- Optional: Apify MCP server installed
Inputs
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
startUrls | array | Optional | [] | Twitter profile or tweet URLs |
twitterHandles | array | Optional | [] | Twitter usernames (without @) |
twitterUserIds | array | Optional | [] | Twitter user IDs |
getFollowers | boolean | Optional | false | Extract follower lists |
getFollowing | boolean | Optional | false | Extract following lists |
getRetweeters | boolean | Optional | false | Extract retweeters of a tweet URL |
includeUnavailableUsers | boolean | Optional | false | Include unavailable/suspended users |
maxItems | number | Optional | Unlimited | Maximum users to return |
customMapFunction | string | Optional | — | 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_TOKENmust be set in environment or.envfile.
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!=usernameand bio describes a product; deprioritize accounts with personal pronouns in bio ("I build...") - < 20 companies found: Widen vertical keywords; try hashtags
#buildinpublic,#indiehacker,#saasdirectly - 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.
Top skills in this category
Skill Vetter
@spclaudehomeSecurity-first skill vetting for AI agents. Use before installing any skill from ClawdHub, GitHub, or other sources. Checks for red flags, permission scope, and suspicious patterns.
Github
@steipeteInteract with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Humanizer
@biostartechnologyRemove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
Free Ride - Unlimited free AI
@shaivpidadiManages free AI models from OpenRouter for OpenClaw. Automatically ranks models by quality, configures fallbacks for rate-limit handling, and updates opencla...
Elite Longterm Memory
@nextfrontierbuildsUltimate AI agent memory system for Cursor, Claude, ChatGPT & Copilot. WAL protocol + vector search + git-notes + cloud backup. Never lose context again. Vibe-coding ready.