How to use it
- Hit Copy the whole skill.
- 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. - Describe your job in plain words. The AI follows the skill from there.
npx degit gooseworks-ai/goose-skills/skills/lead-generation/capabilities/find-email-by-name#main ~/.claude/skills/find-email-by-nameFor one project only, change the path to .claude/skills/find-email-by-name.
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.
Paste into Claude, ChatGPT or Cursor.
Show the full text132 lines
Find Email by Name
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"
Find a person's email address when you know their name and company/domain. Essential for sales outreach, recruiting, and professional networking.
When to Use
- User needs to contact someone at a company
- User asks "what's [person]'s email at [company]?"
- User wants to reach out to a specific person
- Sales prospecting or lead generation
- Recruiting outreach
How It Works
Uses Hunter or Tomba APIs to find the most likely email address for a person based on their name and company domain.
Usage
Find Email with Hunter
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"hunter","path":"/v2/email-finder","query":{"domain":"stripe.com","first_name":"Patrick","last_name":"Collison"}}'
Find Email with Tomba
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"tomba","path":"/v1/email-finder","query":{"domain":"intercom.com","company":"Intercom","first_name":"Eoghan","last_name":"McCabe"}}'
Find from LinkedIn Profile
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"tomba","path":"/v1/linkedin","query":{"url":"https://linkedin.com/in/johndoe"}}'
Parameters
Hunter
- domain (required) - Company domain (e.g., stripe.com)
- first_name (required) - Person's first name
- last_name (required) - Person's last name
- company (optional) - Company name (alternative to domain)
Tomba
- domain (required) - Company domain
- company (required) - Company name (3-75 chars)
- first_name / last_name or full_name - Person's name
- enrich_mobile (optional) - Set to
trueto include phone number
Response
Hunter Response
Returns data object:
- email (string) - The found email address
- score (integer) - Confidence 0-100 (higher = more likely correct)
- domain (string) - Company domain searched
- accept_all (boolean) - Whether server accepts any address
- company (string) - Company name
- position (string|null) - Job title if known
- twitter (string|null) - Twitter handle if known
- linkedin_url (string|null) - LinkedIn profile URL if known
- phone_number (string|null) - Phone if known
- sources (array) - Web pages where this email appeared
- verification (object) -
dateandstatus(valid/invalid/unknown)
Tomba Response
Returns data.email object with email address and confidence data. Also includes web sources where the email was found.
Examples
User: "Find the email for Sarah Chen at Notion"
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"hunter","path":"/v2/email-finder","query":{"domain":"notion.so","first_name":"Sarah","last_name":"Chen"}}'
User: "I need to contact John Smith who works at Google"
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"tomba","path":"/v1/email-finder","query":{"domain":"google.com","company":"Google","first_name":"John","last_name":"Smith"}}'
Error Handling
- 400 - Missing required parameters (Hunter needs
domain+first_name+last_name) - 422 - Tomba validation error — ensure both
domainandcompanyare provided - 429 - Rate limit exceeded — wait and retry
- Score of 0 means no match found — try alternate name spellings or a different API
- If Hunter returns
accept_all: true, the email format may be correct but the specific mailbox can't be confirmed
Tips
- Use the company's main domain (not subdomains)
- Try both Hunter and Tomba if one doesn't find results
- Check confidence scores - high confidence means the email is likely correct
- Always verify important emails before sending cold outreach
- For LinkedIn profiles, Tomba's LinkedIn finder is very effective
| 1 | |
| 2 | name find-email-by-name |
| 3 | description Find someone's email address given their name and company |
| 4 | source orthogonal |
| 5 | |
| 6 | |
| 7 | |
| 8 | # Find Email by Name |
| 9 | |
| 10 | ## Setup |
| 11 | |
| 12 | Read your credentials from ~/.gooseworks/credentials.json: |
| 13 | |
| 14 | export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])") |
| 15 | export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))") |
| 16 | |
| 17 | |
| 18 | If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login` |
| 19 | |
| 20 | All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"` |
| 21 | |
| 22 | |
| 23 | Find a person's email address when you know their name and company/domain. Essential for sales outreach, recruiting, and professional networking. |
| 24 | |
| 25 | ## When to Use |
| 26 | |
| 27 | User needs to contact someone at a company |
| 28 | User asks "what's [person]'s email at [company]?" |
| 29 | User wants to reach out to a specific person |
| 30 | Sales prospecting or lead generation |
| 31 | Recruiting outreach |
| 32 | |
| 33 | ## How It Works |
| 34 | |
| 35 | Uses Hunter or Tomba APIs to find the most likely email address for a person based on their name and company domain. |
| 36 | |
| 37 | ## Usage |
| 38 | |
| 39 | ### Find Email with Hunter |
| 40 | |
| 41 | |
| 42 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 43 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 44 | -H "Content-Type: application/json" \ |
| 45 | -d '{"api":"hunter","path":"/v2/email-finder","query":{"domain":"stripe.com","first_name":"Patrick","last_name":"Collison"}}' |
| 46 | |
| 47 | |
| 48 | ### Find Email with Tomba |
| 49 | |
| 50 | |
| 51 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 52 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 53 | -H "Content-Type: application/json" \ |
| 54 | -d '{"api":"tomba","path":"/v1/email-finder","query":{"domain":"intercom.com","company":"Intercom","first_name":"Eoghan","last_name":"McCabe"}}' |
| 55 | |
| 56 | |
| 57 | ### Find from LinkedIn Profile |
| 58 | |
| 59 | |
| 60 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 61 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 62 | -H "Content-Type: application/json" \ |
| 63 | -d '{"api":"tomba","path":"/v1/linkedin","query":{"url":"https://linkedin.com/in/johndoe"}}' |
| 64 | |
| 65 | |
| 66 | ## Parameters |
| 67 | |
| 68 | ### Hunter |
| 69 | **domain** (required) - Company domain (e.g., stripe.com) |
| 70 | **first_name** (required) - Person's first name |
| 71 | **last_name** (required) - Person's last name |
| 72 | **company** (optional) - Company name (alternative to domain) |
| 73 | |
| 74 | ### Tomba |
| 75 | **domain** (required) - Company domain |
| 76 | **company** (required) - Company name (3-75 chars) |
| 77 | **first_name** / **last_name** or **full_name** - Person's name |
| 78 | **enrich_mobile** (optional) - Set to `true` to include phone number |
| 79 | |
| 80 | ## Response |
| 81 | |
| 82 | ### Hunter Response |
| 83 | Returns `data` object: |
| 84 | **email** (string) - The found email address |
| 85 | **score** (integer) - Confidence 0-100 (higher = more likely correct) |
| 86 | **domain** (string) - Company domain searched |
| 87 | **accept_all** (boolean) - Whether server accepts any address |
| 88 | **company** (string) - Company name |
| 89 | **position** (string|null) - Job title if known |
| 90 | **twitter** (string|null) - Twitter handle if known |
| 91 | **linkedin_url** (string|null) - LinkedIn profile URL if known |
| 92 | **phone_number** (string|null) - Phone if known |
| 93 | **sources** (array) - Web pages where this email appeared |
| 94 | **verification** (object) - `date` and `status` (`valid`/`invalid`/`unknown`) |
| 95 | |
| 96 | ### Tomba Response |
| 97 | Returns `data.email` object with email address and confidence data. Also includes web sources where the email was found. |
| 98 | |
| 99 | ## Examples |
| 100 | |
| 101 | **User:** "Find the email for Sarah Chen at Notion" |
| 102 | |
| 103 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 104 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 105 | -H "Content-Type: application/json" \ |
| 106 | -d '{"api":"hunter","path":"/v2/email-finder","query":{"domain":"notion.so","first_name":"Sarah","last_name":"Chen"}}' |
| 107 | |
| 108 | |
| 109 | **User:** "I need to contact John Smith who works at Google" |
| 110 | |
| 111 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 112 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 113 | -H "Content-Type: application/json" \ |
| 114 | -d '{"api":"tomba","path":"/v1/email-finder","query":{"domain":"google.com","company":"Google","first_name":"John","last_name":"Smith"}}' |
| 115 | |
| 116 | |
| 117 | ## Error Handling |
| 118 | |
| 119 | **400** - Missing required parameters (Hunter needs `domain` + `first_name` + `last_name`) |
| 120 | **422** - Tomba validation error — ensure both `domain` and `company` are provided |
| 121 | **429** - Rate limit exceeded — wait and retry |
| 122 | Score of 0 means no match found — try alternate name spellings or a different API |
| 123 | If Hunter returns `accept_all: true`, the email format may be correct but the specific mailbox can't be confirmed |
| 124 | |
| 125 | ## Tips |
| 126 | |
| 127 | Use the company's main domain (not subdomains) |
| 128 | Try both Hunter and Tomba if one doesn't find results |
| 129 | Check confidence scores - high confidence means the email is likely correct |
| 130 | Always verify important emails before sending cold outreach |
| 131 | For LinkedIn profiles, Tomba's LinkedIn finder is very effective |
| 132 |