FullEnrich Search API
Synchronously search 800M people and 50M companies with structured filters across role, seniority, function, industry, location, company size and more. Values within a field are OR'd; fields are AND'd.
Synchronously search 800M people and 50M companies with structured filters across role, seniority, function, industry, location, company size and more. Values within a field are OR'd; fields are AND'd.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/fullenrich-search-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: FullEnrich Search API
description: Synchronous search for people and companies across 800M people and 50M companies using structured filters. FullEnrich API enables you to enrich B2B contacts with emails and phone numbers using data from 20+ providers. We are GDPR and CCPA compliant.
version: 2.0.0
contact:
name: FullEnrich Support
url: https://docs.fullenrich.com
termsOfService: https://fullenrich.com/tos
servers:
- url: https://app.fullenrich.com/api/v2
security:
- BearerAuth: []
tags:
- name: Search
description: Synchronous search for people and companies across 800M people and 50M companies using structured filters.
paths:
/people/search:
post:
summary: Search people
description: Search for people based on various filters. Multiple filters within the same field are combined with AND logic.
operationId: postPeopleSearch
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SearchPeopleRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/SearchPeopleResponse'
- $ref: '#/components/schemas/Metadata'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
AuthorizationHeaderNotSet:
value:
code: error.authorization.not_set
message: Authorization headers not set
AuthorizationHeaderNotAnBearer:
value:
code: error.authorization.not_bearer
message: Authorization headers do not have prefix 'bearer'
UnknownApiKey:
value:
code: error.api.key
message: Unknown api key
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
RateLimitExceeded:
value:
code: error.rate.limit
message: Too many requests. Try again in 1m
security:
- BearerAuth: []
tags:
- Search
/company/search:
post:
summary: Search company
description: Search for companies based on various filters. Multiple filters within the same field are combined with AND logic.
operationId: postCompanySearch
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SearchCompanyRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/SearchCompanyResponse'
- $ref: '#/components/schemas/Metadata'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
AuthorizationHeaderNotSet:
value:
code: error.authorization.not_set
message: Authorization headers not set
AuthorizationHeaderNotAnBearer:
value:
code: error.authorization.not_bearer
message: Authorization headers do not have prefix 'bearer'
UnknownApiKey:
value:
code: error.api.key
message: Unknown api key
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
RateLimitExceeded:
value:
code: error.rate.limit
message: Too many requests. Try again in 1m
security:
- BearerAuth: []
tags:
- Search
components:
schemas:
Employment:
type: object
properties:
title:
type: string
description: Job title or position
example: Senior Software Engineer
seniority:
type: string
description: Seniority level of the person in the company
example: Senior
job_functions:
type: array
description: Job functions of the person in the company
items:
type: object
properties:
function:
type: string
description: Job function
example: Not Employed
sub_function:
type: string
description: Sub function of the job function
example: Freelancer
description:
type: string
description: Description of the role and responsibilities. Not always present.
example: Leading the backend team and designing microservices architecture.
company:
type: object
description: Company information
allOf:
- $ref: '#/components/schemas/EmploymentCompany'
is_current:
type: boolean
description: Whether this is the current employment
example: true
start_at:
type: string
format: date-time
description: Employment start date in ISO 8601 format with T separator (YYYY-MM-DDTHH:MM:SSZ)
example: '2022-03-15T00:00:00Z'
end_at:
type: string
format: date-time
description: Employment end date in ISO 8601 format with T separator (YYYY-MM-DDTHH:MM:SSZ). This field is not returned for current employment (when is_current is true).
example: '2024-06-30T00:00:00Z'
SearchPeopleRequest:
type: object
properties:
offset:
type: integer
description: Number of people to skip (use this for pagination). Maximum value is 10,000. To paginate beyond 10,000 results, use search_after instead.
example: 0
limit:
type: integer
description: 'Number of people to return (default: 10, max: 100)'
example: 20
search_after:
type: string
description: Cursor-based pagination. Pass the search_after value from the previous response to get the next page. Works at any point in the result set, but is required to access results beyond the 10,000 offset limit. The search_after token does not have any expiration date. However, when the database is updated (every month), if the position of a contact changes, the same search_after token might display different results.
example: WzE1LjUzNDU2MywiYjQ5MDBiYmQtOTg5MS01Mzk1LWIyODUtOWEyOGNiZThjOTM3Il0=
current_company_names:
type: array
description: Filter by current company names. Use exact_match for precise company name matching.
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: Anthropic
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: true
example:
- value: Anthropic
exact_match: true
exclude: false
- value: OpenAI
exact_match: true
exclude: false
current_company_domains:
type: array
description: Filter by current company domains (e.g., 'google.com', 'microsoft.com'). Exact match recommended for domains.
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: google.com
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: true
example:
- value: google.com
exact_match: true
exclude: false
current_company_professional_network_ids:
type: array
description: Filter by current company professional network IDs.
items:
type: object
properties:
value:
type: integer
description: The integer value to filter by
example: 1234
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the exact term must appear within the value, but can still be part of a longer string. When false (default), matching is flexible and tolerates slight variations such as missing or extra words. Matching is never case-sensitive.
example: true
example:
- value: 1234
exact_match: true
exclude: false
current_company_professional_network_urls:
type: array
description: Filter by current company professional network URLs.
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: https://www.linkedin.com/company/fullenrich
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: true
example:
- value: https://www.linkedin.com/company/fullenrich
exact_match: true
exclude: false
current_company_specialties:
type: array
description: Filter by current company specialties.
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: artificial intelligence
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: true
example:
- value: artificial intelligence
exact_match: true
exclude: false
current_company_industries:
type: array
description: Filter by company industries (e.g., 'Software Development', 'Computer Hardware Manufacturing', 'Housing and Community Development', 'Warehousing'). See [Industries](/api/v2/general/enums#company-industry) for the full list.
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: Software Development
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: false
example:
- value: Software Development
exact_match: false
exclude: false
- value: Computer Hardware Manufacturing
exact_match: false
exclude: false
past_company_names:
type: array
description: Filter by past company names. Useful for finding people with specific work history.
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: Meta
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: true
example:
- value: Meta
exact_match: true
exclude: false
past_company_domains:
type: array
description: Filter by past company domains
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: facebook.com
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: true
example:
- value: facebook.com
exact_match: true
exclude: false
current_company_types:
type: array
description: Filter by company types (e.g., 'Public Company', 'Privately Held', 'Nonprofit', 'Self-Employed', 'Partnership', 'Educational', 'Government Agency'). See [Company Types](/api/v2/general/enums#company-type) for the full list.
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: Public Company
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: true
example:
- value: Public Company
exact_match: true
exclude: false
current_company_headquarters:
type: array
description: Filter by company headquarters locations (city names, regions, or countries)
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: San Francisco
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: false
example:
- value: San Francisco
exact_match: false
exclude: false
- value: New York
exact_match: false
exclude: false
current_company_headcounts:
type: array
description: Filter by company size (number of employees). Use ranges to target specific company sizes.
items:
type: object
properties:
min:
type: integer
description: Minimum number of employees (inclusive)
example: 50
max:
type: integer
description: Maximum number of employees (inclusive)
example: 500
exclude:
type: boolean
description: If true, excludes companies in this range
example: false
example:
- min: 50
max: 200
exclude: false
- min: 1000
max: 5000
exclude: false
current_company_founded_years:
type: array
description: Filter by company founding year. Useful for targeting startups or established companies.
items:
type: object
properties:
min:
type: integer
description: Minimum founding year (inclusive)
example: 2015
max:
type: integer
description: Maximum founding year (inclusive)
example: 2024
exclude:
type: boolean
description: If true, excludes companies founded in this range
example: false
example:
- min: 2020
max: 2024
exclude: false
current_company_ids:
type: array
description: Filter by specific company IDs
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: true
person_ids:
type: array
description: Filter by specific person IDs
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: 746e4816-19c8-54d8-b558-65a5a52cc85c
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: true
person_names:
type: array
description: Filter by person names (first name, last name, or full name)
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: John Smith
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: false
example:
- value: John Smith
exact_match: false
exclude: false
person_professional_network_ids:
type: array
description: Filter by person professional network IDs.
items:
type: object
properties:
value:
type: integer
description: The integer value to filter by
example: 1234
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the exact term must appear within the value, but can still be part of a longer string. When false (default), matching is flexible and tolerates slight variations such as missing or extra words. Matching is never case-sensitive.
example: true
example:
- value: 1234
exact_match: true
exclude: false
person_professional_network_urls:
type: array
description: Filter by person professional network URLs.
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: https://www.linkedin.com/in/john-doe
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: true
example:
- value: https://www.linkedin.com/in/john-doe
exact_match: true
exclude: false
person_locations:
type: array
description: Filter by person locations (city, region, or country)
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: San Francisco
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: false
example:
- value: San Francisco
exact_match: false
exclude: false
- value: California
exact_match: false
exclude: false
person_languages:
type: array
description: Filter by languages spoken by the person
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: English
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: false
example:
- value: English
exact_match: false
exclude: false
- value: French
exact_match: false
exclude: false
person_skills:
type: array
description: Filter by skills (e.g., 'JavaScript', 'Python', 'Project Management')
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: JavaScript
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: false
example:
- value: JavaScript
exact_match: false
exclude: false
- value: Python
exact_match: false
exclude: false
- value: Project Management
exact_match: false
exclude: false
current_position_seniority_level:
type: array
description: Filter by person seniority levels (e.g., 'Owner', 'Founder', 'C-level', 'Partner', 'VP', 'Head', 'Director', 'Senior', 'Manager'). See [Seniority Levels](/api/v2/general/enums#seniority) for the full list.
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: Director
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: false
example:
- value: Director
exact_match: false
exclude: false
- value: VP
exact_match: false
exclude: false
current_position_job_functions:
type: array
description: Filter by current job functions (e.g., 'Administrative', 'Agriculture & Environment', 'Construction & Trades', ...). See [Functions & Subfunctions](/api/v2/general/enums#functions-and-subfunctions) for the full list.
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: Software Development
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: false
example:
- value: Software Development
exact_match: false
exclude: false
current_position_sub_functions:
type: array
description: Filter by current sub functions (e.g., 'Data Entry', 'Agriculture/Landscaping', 'Carpenter'). See [Functions & Subfunctions](/api/v2/general/enums#functions-and-subfunctions) for the full list.
items:
type: object
properties:
value:
type: string
description: The string value to filter by
example: Freelancer
exclude:
type: boolean
description: If true, excludes results matching this value. If false or omitted (default), includes only matching results.
example: false
exact_match:
type: boolean
description: When true, the value must match exactly as stored (case-insensitive), with no tolerance for variations. When false (default), the API tolerates minor differences such as missing words, extra words, or slight reordering. Matching is never case-sensitive.
example: false
example:
- value: Freelancer
exact_match: false
exclude: false
current_position_titles:
type: array
description: Filter by current job titles (e.g., 'Software Engineer', 'Product Manager', 'CEO')
items:
type: object
properties:
# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fullenrich/refs/heads/main/openapi/fullenrich-search-api-openapi.yml