finding-saas-company-leads-twitter

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Finding 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

前提条件

  • APIFY_TOKEN
    environment variable set
  • Optional: Apify MCP server installed
  • 已设置
    APIFY_TOKEN
    环境变量
  • 可选:已安装Apify MCP服务器

Inputs

输入参数

ParameterTypeRequiredDefaultNotes
startUrls
arrayOptional
[]
Twitter profile or tweet URLs
twitterHandles
arrayOptional
[]
Twitter usernames (without @)
twitterUserIds
arrayOptional
[]
Twitter user IDs
getFollowers
booleanOptional
false
Extract follower lists
getFollowing
booleanOptional
false
Extract following lists
getRetweeters
booleanOptional
false
Extract retweeters of a tweet URL
includeUnavailableUsers
booleanOptional
false
Include unavailable/suspended users
maxItems
numberOptionalUnlimitedMaximum users to return
customMapFunction
stringOptionalJavaScript function to transform each output object
参数类型是否必填默认值说明
startUrls
数组可选
[]
Twitter个人主页或推文URL
twitterHandles
数组可选
[]
Twitter用户名(不含@)
twitterUserIds
数组可选
[]
Twitter用户ID
getFollowers
布尔值可选
false
提取粉丝列表
getFollowing
布尔值可选
false
提取关注列表
getRetweeters
布尔值可选
false
提取推文的转发者
includeUnavailableUsers
布尔值可选
false
包含不可用/被封禁用户
maxItems
数字可选无限制返回的最大用户数量
customMapFunction
字符串可选用于转换每个输出对象的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
undefined

Quick answer (prints table to chat)

快速输出(在聊天中打印表格)

node scripts/run_actor.js
--actor "apidojo~twitter-user-scraper"
--input '{"param": "value"}'
node scripts/run_actor.js
--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
node scripts/run_actor.js
--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
> `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
author.username
values.
node scripts/run_actor.js
--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.username
值。

Step 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,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
是否为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.15

Step 5: Edge Cases

步骤5:边缘情况处理

  • 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
  • 返回个人账号而非公司账号:筛选规则——优先选择
    name
    !=
    username
    且简介描述产品的账号;降低简介中包含人称代词(如"I build...")的账号优先级
  • 找到的公司不足20家:扩大垂直领域关键词范围;直接尝试话题标签
    #buildinpublic
    ,
    #indiehacker
    ,
    #saas
  • 重复公司(同时找到创始人账号和公司账号):保留公司账号;将创始人账号作为联系方式关联

Output Format

输出格式

undefined
undefined

SaaS 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)

成长阶段公司(最佳拓展窗口)

CompanyHandleProductStageFollowersWebsiteScore
[name]@[handle][1-line description from bio]Growing[N][url][0.XX]
公司名称账号产品阶段粉丝数官网评分
[name]@[handle][来自简介的一行描述]成长中[N][url][0.XX]

Early-Stage (High Receptivity)

早期阶段(高响应度)

CompanyHandleProductFollowersLast Active
公司名称账号产品粉丝数最后活跃时间

Established (Formal Sales Cycle)

成熟阶段(正式销售周期)

CompanyHandleProductFollowersWebsite
undefined
公司名称账号产品粉丝数官网
undefined

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.
结果大多为个人账号:在搜索中添加
"software" OR "app" OR "platform"
,并根据简介关键词严格筛选。 垂直领域过宽(返回500+家公司):缩小至子垂直领域(例如:"项目管理" → "面向远程团队的异步项目管理")。 公司不活跃(最后一条推文超过60天):标记为可能已休眠;交叉验证产品官网的活跃状态。