ContactOut

Find emails, phone numbers, and enrich profiles using ContactOut.

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/lead-generation/capabilities/contact-finder-contactout#main ~/.claude/skills/contact-finder-contactout

For one project only, change the path to .claude/skills/contact-finder-contactout.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text268 lines
contact-finder-contactout/SKILL.md268 lines10.4 KBpushed 96d agoRawView on GitHub

ContactOut

Setup

Read your credentials from ~/.gooseworks/credentials.json:

export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")

If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login

All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"

Sales and recruitment intelligence platform. Find anyone's email and phone number, enrich LinkedIn profiles, look up people from email or multiple signals, and get company info from domains.

When to Use

  • Find someone's email or phone from their LinkedIn profile
  • Enrich a person from name + company or email
  • Look up a profile from an email address
  • Get company information from a domain
  • Batch enrich multiple LinkedIn profiles
  • Estimate how many people match a search (free count)

Endpoints

1. LinkedIn Profile Enrichment

Get full profile details (email, phone, work history, education, skills) from a LinkedIn URL.

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/linkedin/enrich","query":{"profile":"https://www.linkedin.com/in/williamhgates"}}'

curl equivalent

curl -X POST "https://api.orth.sh/v1/run" \

  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/linkedin/enrich","query":{"profile":"https://www.linkedin.com/in/williamhgates"}}'

Parameters:

  • profile (required) - LinkedIn profile URL (must start with http and contain linkedin.com/in/)
  • profile_only (optional, boolean) - If true, returns profile without contact info (cheaper)

Returns: Full profile with emails, phones, work history, education, skills, company info, seniority, job function.


2. Contact Details from LinkedIn

Get just contact details (emails, phones) for a LinkedIn profile. Lighter than full enrichment.

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/people/linkedin","query":{"profile":"https://www.linkedin.com/in/williamhgates","include_phone":"true"}}'

curl equivalent

curl -X POST "https://api.orth.sh/v1/run" \

  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/people/linkedin","query":{"profile":"https://www.linkedin.com/in/williamhgates","include_phone":"true"}}'

Parameters:

  • profile (required) - LinkedIn profile URL
  • include_phone (optional, boolean, default: false) - Include phone numbers
  • email_type (optional) - Filter emails: personal, work, personal,work, or none

3. Batch LinkedIn Enrichment (sync, up to 30)

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/people/linkedin/batch","body":{"profiles":["https://linkedin.com/in/person1","https://linkedin.com/in/person2"]}}'

Parameters:

  • profiles (required, array, max 30) - Array of LinkedIn profile URLs

4. Enrich from Email

Get profile details from an email address. Personal emails have higher match rates.

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/email/enrich","query":{"email":"[email protected]","include":"work_email"}}'

Parameters:

  • email (required) - Email address
  • include (optional) - Set to work_email to include work email in response

5. People Enrich (multi-signal)

Enrich a person using multiple data points. Needs at least one primary identifier (linkedin_url, email, or phone) or name + company.

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/people/enrich"}'
  "full_name": "Patrick Collison",
  "company": ["Stripe"],
  "company_domain": ["stripe.com"],
  "include": ["work_email", "personal_email", "phone"]
}'

Parameters:

  • linkedin_url (optional) - LinkedIn profile URL
  • email (optional) - Email address
  • phone (optional) - Phone number
  • full_name (optional) - Full name (or use first_name + last_name)
  • first_name / last_name (optional) - Used together
  • company (optional, array, max 10) - Company names
  • company_domain (optional, array, max 10) - Company domains
  • job_title (optional) - Job title
  • location (optional) - Location
  • education (optional, array, max 10) - Educational institutions
  • include (optional, array) - Data to include: work_email, personal_email, phone

Note: Name-only searches need at least one secondary param (company, domain, education, location, or job_title).


6. Domain Enrichment

Get company information from domain names.

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/domain/enrich","body":{"domains":["stripe.com","google.com"]}}'

Parameters:

  • domains (required, array, max 30) - Domain names

Returns: Company details including name, industry, size, revenue, funding, headquarters, LinkedIn URL, specialties.


7. People Count (free)

Count matching profiles without returning data. Use to estimate results before searching.

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/people/count","body":{"domain":["stripe.com"],"seniority":["VP","CXO","Director"]}}'

Parameters: Same search filters as People Search (name, job_title, company, domain, location, industry, seniority). Returns only total_results.

Cost: Free, no credits consumed.

Accepted Values (for People Count)

Seniority Levels

Owner / Founder, CXO, Partner, VP, Head, Director, Manager, Senior, Entry, Intern

Job Functions

Operations, Business Development, Sales, Education, Engineering, Healthcare Services, Information Technology, Administrative, Arts and Design, Customer Success and Support, Finance, Community and Social Services, Media and Communication, Accounting, Marketing, Human Resources, Research, Program and Project Management, Legal, Military and Protective Services, Consulting, Entrepreneurship, Real Estate, Quality Assurance, Purchasing, Product Management, Leadership

Company Size

1_10, 11_50, 51_200, 201_500, 501_1000, 1001_5000, 5001_10000, 10001

Industries

Computer Software, Internet, Financial Services, Hospital & Health Care, Marketing and Advertising, Information Technology and Services, Telecommunications, Management Consulting, Real Estate, Retail, and many more. Full list: https://docs.google.com/spreadsheets/d/14drLUuDLgxPflIsPNgV_w05N6guY4GtCCCd36zT4vg0

Examples

"Get Bill Gates' email"

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/linkedin/enrich","query":{"profile":"https://www.linkedin.com/in/williamhgates"}}'

"Look up who this email belongs to"

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/email/enrich","query":{"email":"[email protected]"}}'

"Find Patrick Collison's contact info"

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/people/enrich","body":{"full_name":"Patrick Collison","company":["Stripe"],"include":["work_email","personal_email","phone"]}}'

"Get company info for stripe.com"

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/domain/enrich","body":{"domains":["stripe.com"]}}'

"How many CTOs are there at fintech companies in SF?"

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/people/count","body":{"job_title":["CTO"],"industry":["Financial Services"],"location":["San Francisco"]}}'

"Get contact details for these 3 LinkedIn profiles"

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"contactout","path":"/v1/people/linkedin/batch","body":{"profiles":["https://linkedin.com/in/person1","https://linkedin.com/in/person2","https://linkedin.com/in/person3"]}}'

Error Handling

  • 400 - Invalid parameter values. Check accepted values lists above (especially seniority and industry).
  • 404 - Person/company not found. Try different identifiers or broader search.
  • 429 - Rate limited. People Search: 60/min, Email Verify: 150/min, Others: 1000/min.

Tips

  • Use /v1/people/count first (free) to estimate results before committing to paid calls
  • Personal emails have higher match rates than work emails for email enrichment
  • For batch operations, v1 batch supports up to 30 profiles synchronously
  • People enrich works best with a LinkedIn URL as the primary identifier
1---
2name: contact-finder-contactout
3description: Find emails, phone numbers, and enrich profiles using ContactOut. LinkedIn enrichment, people search, company enrichment, and batch operations.
4source: orthogonal
5---
6 
7 
8# ContactOut
9 
10## Setup
11 
12Read your credentials from ~/.gooseworks/credentials.json:
13```bash
14export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
15export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
16```
17 
18If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`
19 
20All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"`
21 
22 
23Sales and recruitment intelligence platform. Find anyone's email and phone number, enrich LinkedIn profiles, look up people from email or multiple signals, and get company info from domains.
24 
25## When to Use
26 
27- Find someone's email or phone from their LinkedIn profile
28- Enrich a person from name + company or email
29- Look up a profile from an email address
30- Get company information from a domain
31- Batch enrich multiple LinkedIn profiles
32- Estimate how many people match a search (free count)
33 
34## Endpoints
35 
36### 1. LinkedIn Profile Enrichment
37 
38Get full profile details (email, phone, work history, education, skills) from a LinkedIn URL.
39 
40```bash
41curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
42 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
43 -H "Content-Type: application/json" \
44 -d '{"api":"contactout","path":"/v1/linkedin/enrich","query":{"profile":"https://www.linkedin.com/in/williamhgates"}}'
45```
46 
47<details>
48<summary>curl equivalent</summary>
49 
50```bash
51curl -X POST "https://api.orth.sh/v1/run" \
52 
53 -H "Content-Type: application/json" \
54 -d '{"api":"contactout","path":"/v1/linkedin/enrich","query":{"profile":"https://www.linkedin.com/in/williamhgates"}}'
55```
56</details>
57 
58**Parameters:**
59- **profile** (required) - LinkedIn profile URL (must start with http and contain linkedin.com/in/)
60- **profile_only** (optional, boolean) - If true, returns profile without contact info (cheaper)
61 
62**Returns:** Full profile with emails, phones, work history, education, skills, company info, seniority, job function.
63 
64---
65 
66### 2. Contact Details from LinkedIn
67 
68Get just contact details (emails, phones) for a LinkedIn profile. Lighter than full enrichment.
69 
70```bash
71curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
72 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
73 -H "Content-Type: application/json" \
74 -d '{"api":"contactout","path":"/v1/people/linkedin","query":{"profile":"https://www.linkedin.com/in/williamhgates","include_phone":"true"}}'
75```
76 
77<details>
78<summary>curl equivalent</summary>
79 
80```bash
81curl -X POST "https://api.orth.sh/v1/run" \
82 
83 -H "Content-Type: application/json" \
84 -d '{"api":"contactout","path":"/v1/people/linkedin","query":{"profile":"https://www.linkedin.com/in/williamhgates","include_phone":"true"}}'
85```
86</details>
87 
88**Parameters:**
89- **profile** (required) - LinkedIn profile URL
90- **include_phone** (optional, boolean, default: false) - Include phone numbers
91- **email_type** (optional) - Filter emails: `personal`, `work`, `personal,work`, or `none`
92 
93---
94 
95### 3. Batch LinkedIn Enrichment (sync, up to 30)
96 
97```bash
98curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
99 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
100 -H "Content-Type: application/json" \
101 -d '{"api":"contactout","path":"/v1/people/linkedin/batch","body":{"profiles":["https://linkedin.com/in/person1","https://linkedin.com/in/person2"]}}'
102```
103 
104**Parameters:**
105- **profiles** (required, array, max 30) - Array of LinkedIn profile URLs
106 
107---
108 
109### 4. Enrich from Email
110 
111Get profile details from an email address. Personal emails have higher match rates.
112 
113```bash
114curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
115 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
116 -H "Content-Type: application/json" \
117 -d '{"api":"contactout","path":"/v1/email/enrich","query":{"email":"[email protected]","include":"work_email"}}'
118```
119 
120**Parameters:**
121- **email** (required) - Email address
122- **include** (optional) - Set to `work_email` to include work email in response
123 
124---
125 
126### 5. People Enrich (multi-signal)
127 
128Enrich a person using multiple data points. Needs at least one primary identifier (linkedin_url, email, or phone) or name + company.
129 
130```bash
131curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
132 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
133 -H "Content-Type: application/json" \
134 -d '{"api":"contactout","path":"/v1/people/enrich"}'
135 "full_name": "Patrick Collison",
136 "company": ["Stripe"],
137 "company_domain": ["stripe.com"],
138 "include": ["work_email", "personal_email", "phone"]
139}'
140```
141 
142**Parameters:**
143- **linkedin_url** (optional) - LinkedIn profile URL
144- **email** (optional) - Email address
145- **phone** (optional) - Phone number
146- **full_name** (optional) - Full name (or use first_name + last_name)
147- **first_name** / **last_name** (optional) - Used together
148- **company** (optional, array, max 10) - Company names
149- **company_domain** (optional, array, max 10) - Company domains
150- **job_title** (optional) - Job title
151- **location** (optional) - Location
152- **education** (optional, array, max 10) - Educational institutions
153- **include** (optional, array) - Data to include: `work_email`, `personal_email`, `phone`
154 
155**Note:** Name-only searches need at least one secondary param (company, domain, education, location, or job_title).
156 
157---
158 
159### 6. Domain Enrichment
160 
161Get company information from domain names.
162 
163```bash
164curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
165 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
166 -H "Content-Type: application/json" \
167 -d '{"api":"contactout","path":"/v1/domain/enrich","body":{"domains":["stripe.com","google.com"]}}'
168```
169 
170**Parameters:**
171- **domains** (required, array, max 30) - Domain names
172 
173**Returns:** Company details including name, industry, size, revenue, funding, headquarters, LinkedIn URL, specialties.
174 
175---
176 
177### 7. People Count (free)
178 
179Count matching profiles without returning data. Use to estimate results before searching.
180 
181```bash
182curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
183 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
184 -H "Content-Type: application/json" \
185 -d '{"api":"contactout","path":"/v1/people/count","body":{"domain":["stripe.com"],"seniority":["VP","CXO","Director"]}}'
186```
187 
188**Parameters:** Same search filters as People Search (name, job_title, company, domain, location, industry, seniority). Returns only `total_results`.
189 
190**Cost:** Free, no credits consumed.
191 
192## Accepted Values (for People Count)
193 
194### Seniority Levels
195`Owner / Founder`, `CXO`, `Partner`, `VP`, `Head`, `Director`, `Manager`, `Senior`, `Entry`, `Intern`
196 
197### Job Functions
198`Operations`, `Business Development`, `Sales`, `Education`, `Engineering`, `Healthcare Services`, `Information Technology`, `Administrative`, `Arts and Design`, `Customer Success and Support`, `Finance`, `Community and Social Services`, `Media and Communication`, `Accounting`, `Marketing`, `Human Resources`, `Research`, `Program and Project Management`, `Legal`, `Military and Protective Services`, `Consulting`, `Entrepreneurship`, `Real Estate`, `Quality Assurance`, `Purchasing`, `Product Management`, `Leadership`
199 
200### Company Size
201`1_10`, `11_50`, `51_200`, `201_500`, `501_1000`, `1001_5000`, `5001_10000`, `10001`
202 
203### Industries
204`Computer Software`, `Internet`, `Financial Services`, `Hospital & Health Care`, `Marketing and Advertising`, `Information Technology and Services`, `Telecommunications`, `Management Consulting`, `Real Estate`, `Retail`, and many more. Full list: https://docs.google.com/spreadsheets/d/14drLUuDLgxPflIsPNgV_w05N6guY4GtCCCd36zT4vg0
205 
206## Examples
207 
208**"Get Bill Gates' email"**
209```bash
210curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
211 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
212 -H "Content-Type: application/json" \
213 -d '{"api":"contactout","path":"/v1/linkedin/enrich","query":{"profile":"https://www.linkedin.com/in/williamhgates"}}'
214```
215 
216**"Look up who this email belongs to"**
217```bash
218curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
219 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
220 -H "Content-Type: application/json" \
221 -d '{"api":"contactout","path":"/v1/email/enrich","query":{"email":"[email protected]"}}'
222```
223 
224**"Find Patrick Collison's contact info"**
225```bash
226curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
227 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
228 -H "Content-Type: application/json" \
229 -d '{"api":"contactout","path":"/v1/people/enrich","body":{"full_name":"Patrick Collison","company":["Stripe"],"include":["work_email","personal_email","phone"]}}'
230```
231 
232**"Get company info for stripe.com"**
233```bash
234curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
235 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
236 -H "Content-Type: application/json" \
237 -d '{"api":"contactout","path":"/v1/domain/enrich","body":{"domains":["stripe.com"]}}'
238```
239 
240**"How many CTOs are there at fintech companies in SF?"**
241```bash
242curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
243 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
244 -H "Content-Type: application/json" \
245 -d '{"api":"contactout","path":"/v1/people/count","body":{"job_title":["CTO"],"industry":["Financial Services"],"location":["San Francisco"]}}'
246```
247 
248**"Get contact details for these 3 LinkedIn profiles"**
249```bash
250curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
251 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
252 -H "Content-Type: application/json" \
253 -d '{"api":"contactout","path":"/v1/people/linkedin/batch","body":{"profiles":["https://linkedin.com/in/person1","https://linkedin.com/in/person2","https://linkedin.com/in/person3"]}}'
254```
255 
256## Error Handling
257 
258- **400** - Invalid parameter values. Check accepted values lists above (especially seniority and industry).
259- **404** - Person/company not found. Try different identifiers or broader search.
260- **429** - Rate limited. People Search: 60/min, Email Verify: 150/min, Others: 1000/min.
261 
262## Tips
263 
264- Use `/v1/people/count` first (free) to estimate results before committing to paid calls
265- Personal emails have higher match rates than work emails for email enrichment
266- For batch operations, v1 batch supports up to 30 profiles synchronously
267- People enrich works best with a LinkedIn URL as the primary identifier
268 

Discussion

Alternatives

Also in Company & contact data