finding-saas-company-leads-twitter
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseFinding SaaS Company Leads on Twitter
在Twitter上获取SaaS公司线索
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.
通过Twitter信号(产品上线、功能更新、创始人动态及细分领域话题标签)发现SaaS公司及软件产品账号。Twitter是早期B2B SaaS公司在建立正式网络存在感之前最活跃的平台。
Prerequisites
前提条件
- environment variable set
APIFY_TOKEN - Optional: Apify MCP server installed
- 已设置环境变量
APIFY_TOKEN - 可选:已安装Apify MCP服务器
Inputs
输入参数
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
| array | Optional | | Twitter profile or tweet URLs |
| array | Optional | | Twitter usernames (without @) |
| array | Optional | | Twitter user IDs |
| boolean | Optional | | Extract follower lists |
| boolean | Optional | | Extract following lists |
| boolean | Optional | | Extract retweeters of a tweet URL |
| boolean | Optional | | Include unavailable/suspended users |
| number | Optional | Unlimited | Maximum users to return |
| string | Optional | — | JavaScript function to transform each output object |
| 参数 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| 数组 | 可选 | | Twitter个人主页或推文URL |
| 数组 | 可选 | | Twitter用户名(不含@) |
| 数组 | 可选 | | Twitter用户ID |
| 布尔值 | 可选 | | 提取粉丝列表 |
| 布尔值 | 可选 | | 提取关注列表 |
| 布尔值 | 可选 | | 提取推文的转发者 |
| 布尔值 | 可选 | | 包含不可用/被封禁用户 |
| 数字 | 可选 | 无限制 | 返回的最大用户数量 |
| 字符串 | 可选 | — | 用于转换每个输出对象的JavaScript函数 |
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进度:
- [ ] 步骤1:为垂直领域构建关键词和话题标签搜索列表
- [ ] 步骤2:运行tweet-scraper查找活跃公司
- [ ] 步骤3:提取唯一的公司账号
- [ ] 步骤4:通过twitter-user-scraper丰富信息
- [ ] 步骤5:按阶段评分和分类
- [ ] 步骤6:交付线索列表Step 1: Search Keywords
步骤1:搜索关键词
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"]根据垂直领域构建。以“项目管理SaaS”为例:
关键词:["project management software", "PM tool", "#pmtools", "task management SaaS",
"launched a product", "we built", "try our tool", "project management app"]标准SaaS信号短语(需始终包含):
["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
步骤2:运行tweet-scraper
Recommended — run_actor.js (handles waiting, output, and file saving automatically):
bash
undefined推荐方式 — run_actor.js(自动处理等待、输出和文件保存):
bash
undefinedQuick answer (prints table to chat)
快速输出(在聊天中打印表格)
node scripts/run_actor.js
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
node scripts/run_actor.js
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
Save as CSV
保存为CSV
node scripts/run_actor.js
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
node scripts/run_actor.js
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
Save as JSON
保存为JSON
node scripts/run_actor.js
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
--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:**
```bash
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 values.
author.usernamenode scripts/run_actor.js
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
> 必须在环境变量或`.env`文件中设置`APIFY_TOKEN`。
**如果Apify MCP可用:**工具:apify:run-actor
Actor: "apidojo~tweet-scraper"
输入:
{
"searchTerms": ["[VERTICAL] software", "[VERTICAL] SaaS", "[VERTICAL] tool launch", "we built [VERTICAL]"],
"maxItems": 300,
"tweetLanguage": "en"
}
**REST API备选方案:**
```bash
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
}'收集唯一的值。
author.usernameStep 3: Enrich Profiles
步骤3:丰富个人主页信息
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:
bash
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"]}'如果Apify MCP可用:
工具:apify:run-actor
Actor: "apidojo~twitter-user-scraper"
输入:
{
"usernames": ["[username1]", "[username2]", "...最多100个用户名"]
}REST API备选方案:
bash
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
步骤4:筛选与分类
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.15是否为SaaS公司? 如果简介包含以下内容则保留:
- 产品关键词:"software", "SaaS", "platform", "app", "tool", "API", "dashboard"
- 上线信号:"try", "sign up", "free trial", "beta"
- 融资信号:"backed by", "YC", "Techstars", "seed", "Series A/B"
根据粉丝数量进行阶段分类:
早期:followerCount < 1,000
成长中:1,000–10,000
成熟:> 10,000公司评分:
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
步骤5:边缘情况处理
- Personal accounts return instead of company: Filter — prefer accounts where !=
nameand bio describes a product; deprioritize accounts with personal pronouns in bio ("I build...")username - < 20 companies found: Widen vertical keywords; try hashtags ,
#buildinpublic,#indiehackerdirectly#saas - Duplicate company (founder + company account both found): Keep company account; link to founder handle as contact
- 返回个人账号而非公司账号:筛选规则——优先选择!=
name且简介描述产品的账号;降低简介中包含人称代词(如"I build...")的账号优先级username - 找到的公司不足20家:扩大垂直领域关键词范围;直接尝试话题标签,
#buildinpublic,#indiehacker#saas - 重复公司(同时找到创始人账号和公司账号):保留公司账号;将创始人账号作为联系方式关联
Output Format
输出格式
undefinedundefinedSaaS Company Leads: [VERTICAL]
SaaS公司线索:[VERTICAL]
Companies found: [N] | Early: [N] | Growing: [N] | Established: [N] | Date: [DATE]
找到的公司数量:[N] | 早期:[N] | 成长中:[N] | 成熟:[N] | 日期:[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] |
| 公司名称 | 账号 | 产品 | 阶段 | 粉丝数 | 官网 | 评分 |
|---|---|---|---|---|---|---|
| [name] | @[handle] | [来自简介的一行描述] | 成长中 | [N] | [url] | [0.XX] |
Early-Stage (High Receptivity)
早期阶段(高响应度)
| Company | Handle | Product | Followers | Last Active |
|---|
| 公司名称 | 账号 | 产品 | 粉丝数 | 最后活跃时间 |
|---|
Established (Formal Sales Cycle)
成熟阶段(正式销售周期)
| Company | Handle | Product | Followers | Website |
|---|
undefined| 公司名称 | 账号 | 产品 | 粉丝数 | 官网 |
|---|
undefinedTroubleshooting
故障排除
Results are mostly personal accounts: Add 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.
"software" OR "app" OR "platform"结果大多为个人账号:在搜索中添加,并根据简介关键词严格筛选。
垂直领域过宽(返回500+家公司):缩小至子垂直领域(例如:"项目管理" → "面向远程团队的异步项目管理")。
公司不活跃(最后一条推文超过60天):标记为可能已休眠;交叉验证产品官网的活跃状态。
"software" OR "app" OR "platform"