사용 방법
- 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
- 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
- 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/apidojo-io/apidojo-skills --skill finding-saas-company-leads-twitter시작 전 확인
- 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
- 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.
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_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 listStep 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 jsonAPIFY_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,000Company 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.15Step 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.



