Fiber AI - People & Company Intelligence
Cost Reference
| Endpoint | Cost | Notes |
|---|---|---|
/v1/natural-language-search/profiles | $0.02/record (pageSize × $0.02) | Default $0.50 if no pageSize |
/v1/people-search | $0.02/record (pageSize × $0.02) | Default $0.50 if no pageSize |
/v1/natural-language-search/companies | Varies | |
/v1/kitchen-sink/person | Varies | Single lookup |
/v1/validate-email/single | ~$0.02 |
Cheaper alternative for people search: Apollo mixed_people/search costs $0.01 flat per call regardless of result count. Use $GOOSEWORKS_API_BASE/v1/proxy/apollo/mixed_people/search when possible.
Tip: Use the dedicated proxy route $GOOSEWORKS_API_BASE/v1/proxy/fiber/... instead of the generic orthogonal proxy for cleaner billing tracking.
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"
Comprehensive search and enrichment for people, companies, investors, and jobs.
Capabilities
- Search profiles from text: Takes free-form text (e
- Search companies from text: Takes free-form text (e
- Find person by email: Do a reverse lookup: given an email address, find someone's LinkedIn profile and personal details
- Live fetch LinkedIn profile: Returns an enriched profile with details for a given LinkedIn profile identifier
- Validate a single email: Checks if a given email is likely to bounce using a waterfall of strategies
- Kitchen sink person lookup: Search for a person using a variety of parameters such as LinkedIn slug, LinkedIn URL, or their current company information
- Kitchen sink company lookup: Search for a company using a variety of parameters such as LinkedIn slug, LinkedIn URL, name, etc
- Investor search: Search for investors with flexible filtering capabilities
- Fetch LinkedIn profile posts: Fetches recent posts from a LinkedIn profile
- Live fetch LinkedIn company: Returns an enriched company with details for a given LinkedIn company identifier
- People search: Search for people using filters
- Fetch LinkedIn post comments: Fetches paginated comments for a LinkedIn post
- Company search: Search for companies using filters
- Convert text into company search filters: Takes free-form text (e
- Convert text into profile search filters: Takes free-form text (e
- Job postings search: Search for job postings with flexible filtering capabilities
- Fetch LinkedIn post reactions: Fetches paginated reactions of a specific type for a LinkedIn post
Usage
Search profiles from text
Takes free-form text (e.g., 'Software engineers in US with 5+ years of experience') and returns a list of matching profiles.
Parameters:
- query* (string)
- pageSize (integer) - The number of profiles to return, if you need to get more results, you can paginate.
- getDetailedEducation (['boolean', 'null']) - Whether to include deep details about each educational item, like the school's LinkedIn URL, website, location, etc. That'll be put in the detailedEducation array. This slows down the API call, so only enable this if you need it.
- getDetailedWorkExperience (['boolean', 'null']) - Whether to include deep details about each work experience item, like the company's LinkedIn URL, website, location, etc. That'll be put in the detailedWorkExperience array. This slows down the API call, so only enable this if you need it.
- cursor (['string', 'null']) - A pagination cursor returned from a previous search response. Use this to fetch the next page of results.
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"fiber","path":"/v1/natural-language-search/profiles","body":{"query":"Software engineers in San Francisco with 5+ years experience"}}'
Search companies from text
Takes free-form text (e.g., 'Series A startups in USA with 50–200 employees') and returns a list of matching companies.
Parameters:
- query* (string)
- pageSize (integer) - The number of companies to return, if you need to get more results, you can paginate.
- cursor (['string', 'null']) - A pagination cursor returned from a previous search response. Use this to fetch the next page of results.
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"fiber","path":"/v1/natural-language-search/companies","body":{"query":"Series A startups in fintech with 50-200 employees"}}'
Find person by email
Do a reverse lookup: given an email address, find someone's LinkedIn profile and personal details. Note: if you also have the person's name, company, etc., you'll get better results with the Kitchen Sink endpoint, where you can pass all the information you have.
Parameters:
- email* (string) - The person's email address for which you want to do a reverse lookup
- num_profiles (['number', 'null']) - Number of profiles to return. Maximum 10 profiles can be returned for given query. The returned profiles will be sorted by best match first.
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"fiber","path":"/v1/email-to-person/single","body":{"email":"john@company.com"}}'
Live fetch LinkedIn profile
Returns an enriched profile with details for a given LinkedIn profile identifier
Parameters:
- identifier* (string) - Identifier can be a profile's LinkedIn slug (e.g. 'williamhgates' from <linkedin.com/in/williamhgates>), a Sales Navigator URN (e.g. 'ACwAAA.....'), or a full LinkedIn URL (e.g. 'https://www.linkedin.com/in/williamhgates/')
- getDetailedEducation (['boolean', 'null']) - Whether to include deep details about each educational item, like the school's LinkedIn URL, website, location, etc. That'll be put in the detailedEducation array. This slows down the API call, so only enable this if you need it.
- getDetailedWorkExperience (['boolean', 'null']) - Whether to include deep details about each work experience item, like the company's LinkedIn URL, website, location, etc. That'll be put in the detailedWorkExperience array. This slows down the API call, so only enable this if you need it.
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"fiber","path":"/v1/linkedin-live-fetch/profile/single","body":{"identifier":"https://linkedin.com/in/johndoe"}}'
Validate a single email
Checks if a given email is likely to bounce using a waterfall of strategies. Works for catch-all email addresses, which are increasingly common yet hard for other APIs to validate.
Parameters:
- email* (string) - The email to validate
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"fiber","path":"/v1/validate-email/single","body":{"email":"john@example.com"}}'
Kitchen sink person lookup
Search for a person using a variety of parameters such as LinkedIn slug, LinkedIn URL, or their current company information. Returns profile data for the person if found.
Parameters:
- profileIdentifier (string) - If provided and correct, we would always be ab