# Gtm Pipeline:company Search

> Build a list of companies matching ICP criteria. Use when a client needs a company list — no existing list, wants to expand, or signal-based discovery needs enrichment. Providers: Sales Navigator + PhantomBuster, Parallel FindAll, Firecrawl Agent, BC/FE byproduct, web scraping. Also triggers on "build company list", "find companies", "company search".

- **Type:** Skill
- **Install:** `agentstack add skill-keinsaasforever-gtm-pipeline-skills-gtm-company-search`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [keinsaasforever](https://agentstack.voostack.com/s/keinsaasforever)
- **Installs:** 0
- **Category:** [Web & Browser](https://agentstack.voostack.com/c/web-and-browser)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [keinsaasforever](https://github.com/keinsaasforever)
- **Source:** https://github.com/keinsaasforever/gtm-pipeline-skills/tree/main/skills/gtm-company-search
- **Website:** https://www.keinsaas.com/de/research-agent

## Install

```sh
agentstack add skill-keinsaasforever-gtm-pipeline-skills-gtm-company-search
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Company Search

Build a list of companies matching ICP criteria. Returns a CSV with domains and LinkedIn URLs.

**Read `~/.claude/skills/gtm-pipeline/_shared/conventions.md` before executing.**

---

## When to Use

- **Workflow 1 (Company-First):** Client needs a company list — no existing list, or wants to expand beyond what they have
- **Workflow 2 (Signal-First):** Signal-based discovery has found companies — this skill enriches the initial list with domains/LinkedIn URLs if missing

## Inputs

| Input | Required | Source |
|-------|----------|--------|
| ICP definition | Yes | User prompt, `context/icp.md`, or discovery questions |
| SN search URL | Optional | Sales Navigator saved search |
| Existing partial list | Optional | User-provided CSV |

---

## Provider Selection

**Ask the user which provider to use.**

### From Sales Navigator (most comprehensive B2B data)

1. **SN Account Search → PhantomBuster SN Account Scraper**
   - Rich data: name, industry, headcount, location, LinkedIn URL, SN URL, employee search URLs, revenue range, growth metrics, department headcounts
   - PhantomBuster agent: `Sales Navigator Account Scraper`
   - Input: SN search URL
   - Output: full company profile data

2. **SN Lead Search → PhantomBuster Employee Export**
   - When you want contacts directly (skip separate people search)
   - PhantomBuster agent: `Sales Navigator Employee Export`
   - Input: spreadsheet of company URLs

### From Parallel FindAll (signal-based discovery)

**Endpoint:** `POST https://api.parallel.ai/v1beta/findall/runs`
**Required header:** `parallel-beta: findall-2025-09-15`
**Auth:** `x-api-key: $PARALLEL_API_KEY`

**Always ask which processor to use:** `core`, `core2x`, `pro`, `ultra`

Best when combined with signal criteria in the objective. Returns matched companies with reasoning and confidence.

```json
{
  "objective": "Find all DACH-based B2B SaaS companies with 10-200 employees that have shown signals of operational scaling challenges, digital transformation initiatives, or recent funding in the last 4 months. Focus on non-technical sectors: e-commerce, professional services, recruiting agencies, marketing agencies.",
  "entity_type": "companies",
  "match_conditions": [
    {"name": "location", "description": "Company must be headquartered in DACH region (Germany, Austria, Switzerland)"},
    {"name": "size", "description": "Company must have between 10 and 200 employees"},
    {"name": "recent_signals", "description": "Company must have shown at least one buying signal in the last 4 months"}
  ],
  "generator": "core",
  "match_limit": 25
}
```

**Writing good objectives:**
- Write like a research brief — detailed, with source guidance
- Describe what signals/sources to start from
- Include geographic, industry, and size constraints in text AND as match_conditions
- Include a LinkedIn URL condition if needed downstream

**Polling:**
```
GET /v1beta/findall/runs/{findall_id}         # status
GET /v1beta/findall/runs/{findall_id}/result   # results
```
Timeout: 15 min for `core`/`core2x`, 30 min for `pro`/`ultra`

**Enrich FindAll results** to add missing fields:
```
POST /v1beta/findall/runs/{findall_id}/enrich
```
Always include `company_website` and `linkedin_company_url` in output schema.

Always check latest docs via context7 (`libraryName: parallel-web`).

### From Firecrawl Agent (web agent)

`POST https://api.firecrawl.dev/v2/agent` with `spark-1-pro`

- Include structured schema with citation fields for traceability
- Good for niche criteria or specific industry directories

### From BetterContact or FullEnrich (people search as company source)

When running people search via BC Lead Finder or FE Finder, **company data is returned as a byproduct** — no extra API cost:

- **BC Lead Finder:** `company_name`, `company_domain`, `company_linkedin_url` per lead result
- **FE Finder:** `current_company_name`, `current_company_domain` per result

Use this when you already need contacts AND want to build/verify the company list simultaneously.

Both tools also offer **free dashboard search** for one-time manual company lookups.

### From Pipe0 Amplemarket (company search)

**Endpoint:** `POST https://api.pipe0.com/v1/searches/run/sync`
**Search ID:** `companies:profiles:amplemarket@1`
**Auth:** `Authorization: Bearer $PIPE0_API_KEY`

```json
{
  "config": {"environment": "production", "dedup": {"strategy": "default"}},
  "searches": [{
    "search_id": "companies:profiles:amplemarket@1",
    "config": {
      "limit": 100,
      "filters": {}
    }
  }]
}
```

**Response fields:**
```python
results = response.get("results", [])
for r in results:
    name    = r.get("company_name", {}).get("value", "")
    website = r.get("company_website_url", {}).get("value", "")
    desc    = r.get("company_description", {}).get("value", "")
    li_url  = r.get("company_profile_url", {}).get("value", "")
    match   = r.get("amplemarket_company_match", {}).get("value", "")
```

**Cost:** 2.00 credits per page (100 results), per-search billing

---

### From Web Scraping

- Industry directories, association member lists, competitor customer lists
- Firecrawl scrape or manual collection

---

## Missing Data Recovery

| Have | Missing | Solution |
|------|---------|----------|
| Names / LinkedIn URLs | Domains | SerpAPI domain lookup (see people-search Step 0) |
| Names / domains | LinkedIn URLs | PhantomBuster URL Finder |
| LinkedIn company URLs | SN URLs | PhantomBuster can derive |

### SerpAPI Domain Lookup
```
GET https://serpapi.com/search
  ?engine=google_light
  &q={company_name}
  &location={target_country}
  &google_domain={country_google}
  &api_key=$SERPAPI_API_KEY
```

Extract: `urllib.parse.urlparse(organic_results[0]["link"]).netloc.lstrip("www.")`

Always spot-check domains — SerpAPI returns wrong results for generic names and global brands.

---

## PhantomBuster API

```
Auth: X-Phantombuster-Key-1: 
Launch:  POST /api/v2/agents/launch  (agent ID + override arguments)
Poll:    GET /api/v2/agents/fetch?id=  (status == "finished")
Result:  GET /api/v2/containers/fetch-result-object  (or download S3 CSV)
```

Agent IDs and detailed API: see PhantomBuster API learnings doc (requested at runtime if needed).

---

## Execution Protocol

### 1. Clarify ICP
Before searching, ensure these are defined:
- Industry / vertical
- Company size (headcount range)
- Location / geography
- Revenue range (if relevant)
- Exclusions (e.g. no software companies)

### 2. Select Provider
Present options to user with estimated costs. Get approval.

### 3. Test Run
- For FindAll: start with `match_limit: 10`, review results
- For SN+PB: export 10–20 companies, verify data quality
- For Firecrawl Agent: test with a small prompt

### 4. Review
- Check company names, domains, LinkedIn URLs, industries
- Flag mismatches or low confidence results
- Get approval for full run

### 5. Full Run
- Submit full search
- Save results to `csv/input/companies_raw.csv`

---

## Output

CSV at `csv/input/companies_raw.csv`:

```
company_name, company_domain, company_linkedin_url,
industry, location, country, headcount, headcount_range,
source
```

Additional fields from SN (if available):
```
salesNavigatorCompanyUrl, employeeSearchUrl, decisionMakersSearchUrl,
yearFounded, revenue_range, growth_6m, growth_1y, growth_2y,
headcount_engineering, headcount_sales, headcount_operations, headcount_IT
```

---

## What's Missing (To Document)

- PhantomBuster API: full launch/poll/download flow for each agent (SN Account Scraper, Employee Export, URL Finder)
- Firecrawl Agent (`POST /v2/agent`): request/response format with structured schema
- Exa Websets via Pipe0: company discovery endpoint
- n8n workflow API: export/import existing flows for new client instances

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [keinsaasforever](https://github.com/keinsaasforever)
- **Source:** [keinsaasforever/gtm-pipeline-skills](https://github.com/keinsaasforever/gtm-pipeline-skills)
- **License:** MIT
- **Homepage:** https://www.keinsaas.com/de/research-agent

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-keinsaasforever-gtm-pipeline-skills-gtm-company-search
- Seller: https://agentstack.voostack.com/s/keinsaasforever
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
