ContactOut People Search API

The People Search API API from ContactOut — 1 operation(s) for people search api.

Operations 1

POST /v1/people/search People Search API #

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/contactout:contactout-people-search-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

contactout-people-search-api-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ContactOut People Search API
  version: v1
  summary: 'B2B contact data: people and company enrichment, search, contact checks, email verification, campaigns and usage stats.'
  description: Welcome to ContactOut's API. Find anyone's email & phone number 10x faster with the most powerful sales and recruitment intelligence software available. (Generated from the published API reference at https://api.contactout.com; every operation carries x-source pointing at the section it was read from.)
  contact:
    name: ContactOut
    url: https://contactout.com/meeting?utm_source=api_docs
  termsOfService: https://contactout.com/terms
  x-generated-from: documentation
  x-generated-on: '2026-10-07'
  x-generator: 'api-evangelist enrichment pass: deterministic parse of the Slate API reference HTML (headings, parameter tables, example blocks); the pipeline generator generate-contract-from-docs.py was run first and its path-collapse heuristic merged the literal resources linkedin/email/domain into a {v1id} template, so its output was replaced by this parse'
servers:
- url: https://api.contactout.com
security:
- apiToken: []
tags:
- name: People Search API
paths:
  /v1/people/search:
    post:
      summary: People Search API
      tags:
      - People Search API
      operationId: peopleSearch
      description: 'POST https://api.contactout.com/v1/people/search


        Boolean Equations: Few input parameters mentioned in the table above can accept boolean equations as input. Check the "Accepts Boolean" column to know which input fields can accept boolean equations. You can use boolean equations to filter based on a specific criteria. e.g. If you are looking for profiles who have the skills ReactJS and Python, but not Java, you can format the skills parameter as: { "skills": ["(ReactJS AND Python) NOT Java"] }. Always add brackets to ensure the boolean logic is applied correctly. The same logic will apply for the rest of the mentioned paramters. The supported boolean operators are: Boolean operators must be capitalized. Lowercase and, or, and not are treated as part of the search phrase, not as operators. For example, Financial Planning and Analysis is searched as a single phrase. For the industry parameter, prefix a value with NOT to exclude that industry (e.g. { "industry": ["NOT Computer Software", "Banking"] } returns profiles in Banking but not Computer Software). AND and OR are not supported for industry filters.'
      x-source: https://api.contactout.com#search-profiles-http-request
      x-section: People Search API
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleSearchResponse'
              example:
                status_code: 200
                metadata:
                  page: 1
                  page_size: 25
                  total_results: 0
                profiles:
                  https://linkedin.com/in/at-JqjtXv:
                    li_vanity: at-JqjtXv
                    title: Research Assistant
                    contact_availability:
                      personal_email: true
                      work_email: true
                      phone: true
                    contact_info:
                      emails: []
                      personal_emails: []
                      work_emails: []
                      work_email_status: []
                      phones: []
        '400':
          $ref: '#/components/responses/BadCredentials'
        '401':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PeopleSearchRequest'
      x-cost:
      - Consumes 1 search credit for each profile returned.
      - Consumes 1 email/phone credit for every profile where email/phone info is found, if reveal_info=true is specified.
components:
  responses:
    Forbidden:
      description: 'You''re out of credits, please email your sales manager or book a meeting; or: No access to endpoint'
    RateLimited:
      description: 'Rate limit reached. Check header retry-after: <time_in_seconds> for when rate limit will reset'
      headers:
        retry-after:
          schema:
            type: integer
          description: Seconds until the rate limit resets
    BadCredentials:
      description: Bad credentials or invalid headers
    BadRequest:
      description: Bad request or invalid input
  schemas:
    PeopleSearchResponse:
      type: object
      properties:
        status_code:
          type: integer
        metadata:
          type: object
          properties:
            page:
              type: integer
            page_size:
              type: integer
            total_results:
              type: integer
        profiles:
          type: object
          properties:
            https://linkedin.com/in/at-JqjtXv:
              type: object
              properties:
                li_vanity:
                  type: string
                title:
                  type: string
                contact_availability:
                  type: object
                  properties:
                    personal_email:
                      type: boolean
                    work_email:
                      type: boolean
                    phone:
                      type: boolean
                contact_info:
                  type: object
                  properties:
                    emails:
                      type: array
                      items: {}
                    personal_emails:
                      type: array
                      items: {}
                    work_emails:
                      type: array
                      items: {}
                    work_email_status:
                      type: array
                      items: {}
                    phones:
                      type: array
                      items: {}
        contact_info:
          type: array
          items: {}
          description: Returns an array containing contact information including email and phone numbers (array)
        contact_availability:
          type: array
          items: {}
          description: Returns an array determining whether the profile contains the contact information (array)
    PeopleSearchRequest:
      type: object
      properties:
        name:
          type: string
          description: Name of the profile (text)
        job_title:
          type: array
          items: {}
          description: Accepts an array of job titles. (array, max:50)
        past_job_title:
          type: array
          items: {}
          description: 'Returns profiles that held these job titles in past (non-current) roles. Cannot be combined with current_titles_only: false. Cannot be combined with match_experience when both job_title and company are set. (array, max:50)'
        job_function:
          type: array
          items: {}
          description: Accepts an array of job functions to filter profiles by their functional area (e.g., Engineering, Marketing, Sales, Finance). Accepted values list (array, max:50)
        seniority:
          type: array
          items: {}
          description: Accepts an array of seniority levels to filter profiles by their career level. Accepted values list (array, max:50)
        current_titles_only:
          type: boolean
          default: 'true'
          description: 'Returns profiles matching the current job title. If specified false, the response will return profiles matching the current or past job title. (boolean, default: true)'
        include_related_job_titles:
          type: boolean
          default: 'false'
          description: 'Returns profiles with related job titles (boolean, default: false)'
        match_experience:
          type: string
          default: current
          description: 'Ensures job_title and company match in the same experience. current – Returns profiles that match the current experience.past – Returns profiles that match any past experience.both – Returns profiles matching either current or past experience.If set, current_titles_only and company_filter should not be used; otherwise, an error is returned. (string, default: current)'
        skills:
          type: array
          items: {}
          description: Accepts an array of skills (array, max:50)
        languages:
          type: array
          items: {}
          description: Accepts an array of language objects. Each object must have a language field (required string) and optionally a proficiency field (array of strings). If proficiency is not provided, any proficiency level is accepted. Accepted values list for proficiency. (array, max:50)
        education:
          type: array
          items: {}
          description: Accepts an array of schools/degrees (array, max:50)
        educations:
          type: array
          items: {}
          description: 'Accepts an array of education objects. Each object can have optional fields: school_name (string), field_of_study (string), and location (string). At least one field must be provided. (array, max:50)'
        location:
          type: array
          items: {}
          description: Accepts an array of locations (array, max:50)
        location_radius:
          type: integer
          description: Search radius in miles (1-500). Only works when location is provided and the location is a city / area. Filters profiles within the specified radius of the location. (integer)
        current_work_location:
          type: array
          items: {}
          description: Accepts an array of location strings (cities or countries). Filters profiles who currently work in any of the specified locations. (array, max:50)
        past_work_location:
          type: array
          items: {}
          description: Accepts an array of location strings (cities or countries). Filters profiles who previously worked in any of the specified locations. (array, max:50)
        company:
          type: array
          items: {}
          description: Accepts an array of company names (array, max:50)
        past_company:
          type: array
          items: {}
          description: Returns profiles that worked at these companies in past (non-current) roles. Cannot be combined with company_filter set to past, past_only, or both. Cannot be combined with match_experience when both job_title and company are set. (array, max:50)
        company_filter:
          type: string
          default: current
          description: 'current – Returns profiles matching the current company name    past – Returns profiles matching any past company name  past_only – Returns profiles where the company appears in past experience and is not their current employer.  both – Returns profiles matching either current or past experience (string, default: current)'
        current_company_only:
          type: boolean
          default: 'true'
          description: 'Returns profiles matching the current company name (boolean, default: true)'
        domain:
          type: array
          items: {}
          description: Accepts an array of domains (array, max:50)
        industry:
          type: array
          items: {}
          description: Accepts an array of industries. Prefix an industry with NOT to exclude it (e.g. "NOT Computer Software"). Accepted values list (array, max:50)
        keyword:
          type: string
          description: Returns profiles that contain the mentioned keyword anywhere in their profile (text)
        company_size:
          type: array
          items: {}
          description: Accepts an array of company size ranges. Accepted values list (array)
        years_of_experience:
          type: array
          items: {}
          description: Accepts an array of ranges in the format X_Y where X and Y are integers representing the minimum and maximum years of experience. e.g. ["2_5", "6_10"] means 2-5 years OR 6-10 years. (array)
        years_in_current_role:
          type: array
          items: {}
          description: Accepts an array of ranges in the format X_Y where X and Y are integers representing the minimum and maximum years in current role. e.g. ["1_3", "4_6"] means 1-3 years OR 4-6 years in current role. Cannot be used with recently_changed_jobs. (array)
        recently_changed_jobs:
          type: boolean
          default: 'false'
          description: 'If set to true, returns profiles whose current job started within the last 3 calendar months. Cannot be used with years_in_current_role. (boolean, default: false)'
        is_currently_working:
          type: boolean
          description: If true, returns only profiles with an active current role. If false, returns only profiles with no active current role. Omit to return both. (boolean)
        page:
          type: integer
          description: Provides results for the given page (integer)
        page_size:
          type: integer
          default: '25'
          description: 'Maximum number of profiles to return per page. Valid range is 1-25. When not provided, 25 profiles are returned. Search credits are charged only for the number of profiles returned. (integer, default: 25)'
        data_types:
          type: array
          items: {}
          description: Returns profiles containing atleast one of the specified data types. It accepts an array of one more values from this list [personal_email, work_email, phone] (array)
        reveal_info:
          type: boolean
          default: 'false'
          description: 'If set to true, contact_info will contain the emails and phone numbers of the profile and credits will be charged (boolean, default: false)'
        detailed_experience:
          type: boolean
          default: 'false'
          description: 'If set to true, the experience field returns detailed data like title, company_name, summary, start_date_year, start_date_month, end_date_year, end_date_month, is_current, linkedin_url, logo_url. If false, returns simple text strings. (boolean, default: false)'
        detailed_education:
          type: boolean
          default: 'false'
          description: 'If set to true, the education field returns detailed data like school_name, degree, field_of_study, description, start_date_year, end_date_year, url. If false, returns simple text strings. (boolean, default: false)'
        exclude_job_titles:
          type: array
          items: {}
          description: Accepts an array of job titles to exclude from results. (array)
        exclude_companies:
          type: array
          items: {}
          description: Accepts an array of company names to exclude from results. (array)
        exclude_companies_filter:
          type: string
          default: both
          description: 'Applies when exclude_companies is non-empty. current – Exclude if the company appears as the profile''s current employer only.past – Exclude if it appears in past roles only.both – Exclude if it appears in either current or past experience. (string, default: both)'
      required:
      - education
      - job_title
      - keyword
      - past_job_title
      - skills
  securitySchemes:
    apiToken:
      type: apiKey
      in: header
      name: token
      description: 'ContactOut uses API keys to allow access to the API. You can request an API key by booking a meeting. ContactOut expects the API key to be included in all API requests to the server in a header that looks like the following: token : <YOUR_API_TOKEN>'
externalDocs:
  url: https://api.contactout.com
  description: ContactOut API Reference
x-rate-limits:
- 'People Search API: 60 requests per minute'
- 'Contact Checker APIs: 150 requests per minute'
- 'Other APIs: 1000 requests per minute'