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.

Operations 2

POST /people/search Search people #
POST /company/search Search company #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fullenrich-search-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

fullenrich-search-api-openapi.yml Raw ↑
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