NAV
shell

Introduction

Welcome to ContactOut's API. Find anyone's email & phone number 10x faster with the most powerful sales and recruitment intelligence software available.

Authentication

To authorize, use this code:

# With shell, you can just pass the correct header with each request
curl "https://api.contactout.com" \
  -H "authorization: basic"
  -H "token: <YOUR_API_TOKEN>"

ContactOut uses API keys to allow access to the API. You can request an API key by booking a meeting here.

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>

Rate limits

Please note that for all endpoints, the rate limit is 1200 requests per minute. Additionally, our search endpoint has a specific limit of 60 requests per minute.

Get Profile Details

from LinkedIn URL

Get profile details for a single linkedin profile URL. The input only accepts LinkedIn regular URLs, not Sales Navigator or Talent / Recruiter LinkedIn products.

This API allows you to retrieve various details such as email addresses, phone numbers, work experience, education, skills, and more associated with a LinkedIn profile.


curl "  https://api.contactout.com/v1/linkedin/enrich?profile=https://www.linkedin.com/in/example-person" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "status_code": 200,
  "profile": {
    "url": "https://www.linkedin.com/in/example-person",
    "email": ["[email protected]", "[email protected]"],
    "work_email": ["[email protected]"],
    "personal_email": ["[email protected]"],
    "phone": ["+1234567891"],
    "github": ["github_name"],
    "twitter": ["twitter_username"],
    "fullName": "Example Person",
    "headline": "Manager, Business Operations & Marketing at OBM",
    "industry": "Broadcast Media",
    "company": {
      "name": "OBM",
      "url": "https://www.linkedin.com/company/obm",
      "website": "http://obm.in",
      "headquarter": "HQ"
    },
    "location": "Bermuda",
    "summary": "An experienced professional with over 19 years in Marketing (digital, print, radio, television), Communications, Content Creation, Copy Writing, Website Maintenance, Social Media Exploitation, Relationship Building, Business Development, Business Operations, Training and Leadership.\\n",
    "experience": [
      {
        "end": "Present",
        "start": 2018,
        "title": "Manager, Business Operations & Marketing",
        "description": "Established in 1936, OBMI is a global master planning, architecture and design firm, with a rich history of shaping the architectural landscape of Bermuda. Within the firm, I support the OBMI Bermuda office on a multi-faceted level. My commitment to relationship building & client management, together with my passion and proficiency in marketing & communications, allows me to be an integral member of the team. Currently, my mandates include:Marketing•\tLead all marketing initiatives for the OBMI Bermuda office•\tCreation all print and digital ads for the local market•\tCreate, design and execute the quarterly newsletter•\tCopy & creative of OBMI Bermuda articles for local and international publication•\tManage Google My Business content•\tOversee see all aspects of the OBMI Bermuda website•\tCapture and analyze various metrics to identify areas of enhancement•\tExplore industry trends, best practices and innovative marketing solutions for potential adoptionBusiness Operations•\tProject management •\tClient relationship management•\tVendor & consultant management•\tOffice administration•\tPrimary point of contact for Bermuda office•\tCollaborate with corporate office in Miami on marketing & company-wide initiatives/roll-outs",
        "organization": [
          {
            "name": "OBM International",
            "profile_url": "https://www.linkedin.com/company/obm-international"
          }
        ]
      }
    ],
    "education": [
      {
        "end": "2004",
        "name": "George Brown College",
        "major": "Journalism",
        "start": "2002",
        "degrees": ["Journalism"],
        "profile_url": "http://www.linkedin.com/edu/george-brown-college-19978"
      }
    ],
    "skills": [
      "Digital Marketing",
      "Content Creation",
      "Business Development",
      "Project Management",
      "Client Relationship Management"
    ]
  }
}

Empty Results

{
  "status_code": 200,
  "profile": []
}

HTTP Request

GET https://api.contactout.com/v1/linkedin/enrich?{profile=}

Query Parameters

Parameter Type Description
profile string, URL encoded, required The fully formed URL of the LinkedIn profile. URL must begin with http and must contain linkedin.com/in/ or linkedin.com/pub/

Response Parameters

Field Type Description
status_code integer The HTTP status code of the response. Indicates the success or failure of the API request.
profile object Contains profile details related to the URL

url - The URL of the LinkedIn profile.

email - An array of email addresses associated with the profile.

work_email - An array of work email addresses associated with the profile.

personal_email An array of personal email addresses associated with the profile.

phone - An array of phone numbers associated with the profile.

github - An array of GitHub usernames associated with the profile.

twitter - An array of Twitter usernames associated with the profile.

fullName - The full name of the profile owner.

headline The headline or job title of the profile owner.

industry - The industry in which the profile owner works.

company - An object containing information about the current company of the profile owner, including name, URL, website, and headquarters location.

location - The location of the profile owner.

summary - A summary or description of the profile owner's professional background.

experience - An array of objects containing details about the profile owner's work experience, including start and end dates, job title, and description.

education - An array of objects containing details about the profile owner's education, including institution name, major, start and end dates, degrees, and profile URL.

skills - An array of skills associated with the profile owner.

Cost

Consumes 1 email credit if email is found and 1 phone credit if phone number is found.

from email address

Get profile details for a single email address. The match rate is typically higher with a personal email address as they change less frequently.


curl "https://api.contactout.com/v1/email/[email protected]" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "status_code": 200,
  "profile": {
    "email": "[email protected]",
    "workEmail": "[email protected]",
    "workEmailStatus": "Verified | Unverified",
    "fullName": "Bobbi Singh",
    "headline": "Manager, Business Operations & Marketing at OBM International",
    "industry": "Broadcast Media",
    "linkedinUrl": "https://www.linkedin.com/in/bobbisingh",
    "confidenceLevel": "",
    "altMatches": [],
    "phone": " +61.438347437",
    "twitter": "",
    "github": "",
    "company": {
      "name": "OBM International",
      "url": "https://www.linkedin.com/company/obm-international",
      "website": "http://obm.international",
      "headquarter": "HQ",
      "locations": [
        {
          "line1": "Address Line 1",
          "line2": "Address Line 2",
          "city": "City",
          "state": "State",
          "country": "US",
          "postalCode": "12345",
          "description": "Headquarters"
        }
      ]
    },
    "location": "Bermuda",
    "summary": "An experienced professional with over 19 years in Marketing (digital, print, radio, television), Communications, Content Creation, Copy Writing, Website Maintenance, Social Media Exploitation, Relationship Building, Business Development, Business Operations, Training and Leadership.\\n",
    "experience": [
      {
        "end": "Present",
        "start": 2018,
        "title": "Manager, Business Operations & Marketing",
        "description": "Established in 1936, OBMI is a global master planning, architecture and design firm, with a rich history of shaping the architectural landscape of Bermuda. Within the firm, I support the OBMI Bermuda office on a multi-faceted level. My commitment to relationship building & client management, together with my passion and proficiency in marketing & communications, allows me to be an integral member of the team. Currently, my mandates include:Marketing•\tLead all marketing initiatives for the OBMI Bermuda office•\tCreation all print and digital ads for the local market•\tCreate, design and execute the quarterly newsletter•\tCopy & creative of OBMI Bermuda articles for local and international publication•\tManage Google My Business content•\tOversee see all aspects of the OBMI Bermuda website•\tCapture and analyze various metrics to identify areas of enhancement•\tExplore industry trends, best practices and innovative marketing solutions for potential adoptionBusiness Operations•\tProject management •\tClient relationship management•\tVendor & consultant management•\tOffice administration•\tPrimary point of contact for Bermuda office•\tCollaborate with corporate office in Miami on marketing & company-wide initiatives/roll-outs",
        "organization": [
          {
            "name": "OBM International",
            "profile_url": "https://www.linkedin.com/company/obm-international"
          }
        ]
      }
    ],
    "education": [
      {
        "end": "2004",
        "name": "George Brown College",
        "major": "Journalism",
        "start": "2002",
        "degrees": ["Journalism"],
        "profile_url": "http://www.linkedin.com/edu/george-brown-college-19978"
      }
    ],
    "skills": [
      "Digital Marketing",
      "Content Creation",
      "Business Development",
      "Project Management",
      "Client Relationship Management"
    ]
  }
}

Empty Results

{
  "status_code": 404,
  "message": "Not Found"
}

HTTP Request

GET https://api.contactout.com/v1/email/enrich?{email=}

Query Parameters

Parameter Type Description
email string, required Email Address
include string, optional Data to be returned. Currently support work_email

Response Parameters

Field Type Description
status_code integer The HTTP status code of the response. Indicates the success or failure of the API request.
profile object object containing all profile details associated with the email address. Also includes phone number if available.

email - The user's personal email address.

workEmail - The user's work email address. (if include=work_email in request)

workEmailStatus - The status of the work email address, whether it's verified or unverified

fullName - The full name of the user.

headline - The job title or professional headline of the user.

industry - The industry in which the user works.

linkedinUrl - The LinkedIn profile URL of the user.

confidenceLevel - Confidence level in the accuracy of the profile information.

altMatches - Alternative matches or suggestions related to the user's profile.

phone - The user's phone number.

twitter - The user's Twitter handle.

github - The user's GitHub username.

company - An object containing information about the user's current company.

name - The name of the user's company.url - The LinkedIn URL of the company.

website - The website URL of the company.

headquarter- Location of the company's headquarters.

locations - An array containing details of the company's locations.

location - The current location of the user.

summary - A brief summary of the user's professional experience and skills.

experience - An array containing details of the user's work experience.

education - An array containing details of the user's educational background.

skills - An array containing the user's skills and expertise.

Cost

Consumes 1 email credit if email is found and 1 phone credit if phone number is found.

Get Contact Info API - Single

from LinkedIn Profile

Get contact details for a single LinkedIn profile. Requesting real-time work_emails via &email_type=work may increase the response time. This endpoint does not provide real-time verified work_email by default. If you need it in the response, you must pass the additional argument: email_type.


curl "https://api.contactout.com/v1/people/linkedin?profile=https://www.linkedin.com/in/example-person&include_phone=true" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "status_code": 200,
  "profile": {
    "url": "https://www.linkedin.com/in/example-person",
    "email": [
      "[email protected]",
      "[email protected]"
    ],
    "work_email": [
      "[email protected]"
    ],
    "work_email_status": [
      "[email protected]" => "Verified | Unverified"
    ],
    "personal_email": [
      "[email protected]"
    ],
    "phone": [
      "phone number 1"
    ],
    "github":[
      "github_name"
    ]
  }
}

Empty Results

{
  "status_code": 404,
  "message": "Not Found"
}

HTTP Request

GET https://api.contactout.com/v1/people/linkedin?{profile=&include_phone=}

Query Parameters

Parameter Type Description
profile profile: (string, URL encoded, required) The fully formed URL of the LinkedIn profile. URL must begin with http and must contain linkedin.com/in/ or linkedin.com/pub/
include_phone boolean, optional, Defaults to false If set to true, it will include phone information in the response and deduct phone credits.
email_type string, optional email_type="personal" — we don't return a work email, only personal emails

email_type="work" — we don't return personal emails, only work emails. If we don't have a work email in our database, we attempt to guess + verify work email

email_type="personal,work" — we return both personal and work emails. If we don't have a work email in our database, we attempt to guess + verify work email

no email_type param specified — we return both personal and work emails. If we don't have a work email in our database, we don't attempt to guess + verify a work email.

Response Parameters

Field Type Description
status_code integer The HTTP status code of the response.
profile object An object containing contact details for the LinkedIn profile.

url - The URL of the LinkedIn profile.

email - An array of email addresses associated with the profile.

work_email - An array of work email addresses.

work_email_status - A dictionary indicating the verification status of work emails.

personal_email - An array of personal email addresses.

phone - An array of phone numbers associated with the profile.

github - An array of GitHub usernames associated with the profile.

Cost

Consumes 1 email credit if email is found and 1 phone credit if phone number is found.(and include_phone is set to true).

from LinkedIn MemberId

Get contact details for a single LinkedIn profile using memberId


curl "https://api.contactout.com/v1/people/linkedin_member_id?member_id=12345&include_phone=true" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "status_code": 200,
  "profile": {
    "member_id": 12345,
    "email": [
      "[email protected]",
      "[email protected]"
    ],
    "work_email": [
      "[email protected]"
    ],
    "work_email_status": [
      "[email protected]" => "Verified | Unverified"
    ],
    "personal_email": [
      "[email protected]"
    ],
    "phone": [
      "phone number 1"
    ],
    "github":[
      "github_name"
    ]
  }
}

Empty Results

{
  "status_code": 404,
  "message": "Not Found"
}

HTTP Request

GET https://api.contactout.com/v1/people/linkedin_member_id?{member_id=&include_phone=}

Query Parameters

Parameter Type Description
member_id integer, required LinkedIn Member ID is a unique identifier assigned to each member on the LinkedIn platform. It is a numeric value associated with a user's LinkedIn account and serves as a way to distinguish one user from another.
include_phone boolean, optional, Defaults to false If set to true, it will include phone information in the response and deduct phone credits.

Response Parameters

Field Type Description
status_code integer The HTTP status code of the response. Indicates the success or failure of the API request.
profile object An object containing various details related to the LinkedIn profile.

member_id - The unique identifier (ID) of the LinkedIn member.

email - An array containing email addresses associated with the LinkedIn profile.

work_email - An array containing work email addresses associated with the LinkedIn profile.

work_email_status - A dictionary indicating the verification status of each work email address.
  • Key - Work email address
  • Value - Verification status (Verified or Unverified)

personal_email - An array containing personal email addresses associated with the LinkedIn profile.

phone - An array containing phone numbers associated with the LinkedIn profile.

github - An array containing GitHub usernames associated with the LinkedIn profile.

Cost

Consumes 1 email credit if email is found and 1 phone credit if phone number is found (and include_phone is set to true).

Get Contact Info API - Bulk

V1 Bulk ContactInfo

Get contact details for a batch of 30 LinkedIn Profiles per API call

curl 'https://api.contactout.com/v1/people/linkedin/batch' \
--header 'Content-Type: application/json' \
--header 'Authorization: basic' \
--header "token: <YOUR_API_TOKEN>"
--data '{
    "profiles": [
        "https://linkedin.com/in/example-person-1",
        "https://linkedin.com/in/example-person-2",
        "https://linkedin.com/in/example-person-3"
    ]
}'

The above command returns JSON structured like this:

{
  "status_code": 200,
  "profiles": {
    "https://linkedin.com/in/example-person-1": [
      "[email protected]",
      "[email protected]",
      "[email protected]"
    ],
    "https://linkedin.com/in/example-person-2": ["[email protected]"],
    "https://linkedin.com/in/example-person-3": ["[email protected]"]
  }
}

If no contact info found

{
  "status_code": 200,
  "profiles": {
    "https://linkedin.com/in/example-person-1": [],
    "https://linkedin.com/in/example-person-2": [],
    "https://linkedin.com/in/example-person-3": []
  }
}

HTTP Request

POST https://api.contactout.com/v1/people/linkedin/batch

Query Parameters

Parameter Type Description
profiles Array, required, max:30 An array of LinkedIn profile URLs. URL must begin with http and must contain linkedin.com/in/ or linkedin.com/pub/

Response Parameters

Field Type Description
status_code integer The HTTP status code of the response. Indicates the success or failure of the API request.
profiles object An object containing multiple LinkedIn profiles and their associated email addresses. Each profile URL serves as a key in the profiles object, and the associated value is an array containing the email addresses associated with that LinkedIn profile.

Cost

Consumes 1 email credit per profile if email is found

V2 Bulk ContactInfo

”improves on upon v1 by incorporating ContactOut's real-time work email finder.” + ie if we didn't find any work emails in ContactOut’s database, we attempt to guess and verify it in real-time.

curl 'https://api.contactout.com/v2/people/linkedin/batch' \
--header 'Content-Type: application/json' \
--header 'Authorization: basic' \
--header "token: <YOUR_API_TOKEN>"
--data '{
    "callback_url": "https://api.contactout.com/enrich-test-callback-endpoint",
    "profiles": [
        "https://linkedin.com/in/example-person-1",
        "https://linkedin.com/in/example-person-2",
        "https://linkedin.com/in/example-person-3"
    ]
}'

The above command returns JSON structured like this:

{
  "status": "QUEUED",
  "job_id": "96d1c156-fc66-46ef-b053-be6dbb45cf1f"
}

To get the contact information

curl "https://api.contactout.com/v2/people/linkedin/batch/96d1c156-fc66-46ef-b053-be6dbb45cf1f" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "data": {
    "uuid": "96d1d610-f163-484e-a433-3006c862c14d",
    "status": "SENT",
    "result": {
      "https://www.linkedin.com/in/example-person-1": {
        "emails": ["[email protected]"],
        "personal_emails": [],
        "work_emails": ["[email protected]"]
      },
      "https://www.linkedin.com/in/example-person-2": {
        "emails": ["[email protected]", "[email protected]"],
        "personal_emails": ["[email protected]"],
        "work_emails": ["[email protected]"]
      },
      "https://www.linkedin.com/in/example-person-3": {
        "emails": ["[email protected]", "[email protected]"],
        "personal_emails": ["[email protected]"],
        "work_emails": ["[email protected]"]
      }
    }
  }
}

HTTP Request

POST https://api.contactout.com/v2/people/linkedin/batch

GET https://api.contactout.com/v2/people/linkedin/batch/{job_uuid}

Query Parameters

Parameter Type Description
callback_url String, optional A URL where the results will be posted once the enrichment operation is completed.
profiles Array, required, Max:1000 An array of LinkedIn profile URLs. URL must begin with http and must contain linkedin.com/in/ or linkedin.com/pub/

Response Parameters

Field Type Description
uuid string The unique identifier for the email lookup request. This uuid can be used to call the endpoint anytime and retrieve results GET https://api.contactout.com/v2/people/linkedin/batch/{uuid}
status string The status of the email lookup request (e.g., "SENT" indicating the request has been sent)
result object An object containing multiple LinkedIn profiles and their associated email addresses.

emails - An array of all email addresses associated with the LinkedIn profile.

personal_emails - An array of personal email addresses associated with the LinkedIn profile.

work_emails - An array of work email addresses associated with the LinkedIn profile.

Cost

Consumes 1 email credit per profile if email is found

Company information from domains

Get company information based on given input domains.


curl "https://api.contactout.com/v1/domain/enrich" \
--header 'Content-Type: application/json' \
--header 'Authorization: basic' \
--header "token: <YOUR_API_TOKEN>"
--data '{
    "domains": [
        "test.com"
    ]
}'

The above command returns JSON structured like this:

{
  "status_code": 200,
  "companies": {
    "contactout.com": {
      "li_vanity": "https://www.linkedin.com/company/test",
      "name": "Test",
      "domain": "test.com",
      "description": "This company specializes in innovative software solutions to streamline business operations and enhance productivity.",
      "website": "http://test.com",
      "logo_url": "https://images.contactout.com/companies/328ffa89a83a83042329f8181b7fbfaf",
      "type": "Privately Held",
      "headquarter": "San Francisco, US",
      "country": "United States",
      "size": 89,
      "founded_at": 2015,
      "locations": [
        {
          "city": "San Francisco",
          "country": "US",
          "isPrimary": true
        }
      ],
      "industry": "Computer Software",
      "specialties": [],
      "technologies_used": [
        "laravel",
        "microsoft",
        "lever",
        "ahrefs",
        "vidyard",
        "entelo",
        "help desk",
        "salesforce",
        "reuse",
        "to go",
        "unicorn",
        "facebook",
        "sales navigator",
        "linkedin",
        "for business",
        "asx",
        "convey",
        "salesloft",
        "roadmap",
        "pipedrive",
        "tasker",
        "elasticsearch",
        "bitly",
        "trajectory",
        "crm",
        "data management"
      ],
      "revenue": "$5.4M"
    }
  }
}

Empty Results

{
  "status_code": 200,
  "companies": []
}

HTTP Request

POST https://api.contactout.com/v1/domain/enrich

Query Parameters

Parameter Type Description
domains array, required, max:30 An array of domain names. Each domain should be in a valid format, for ex: example.com

Response Parameters

Field Type Description
status_code integer HTTP status code indicating the success or failure of the request.
companies object An object containing information about the company associated with the provided domain.

company_domain - The domain name of the company, serving as the key for the company object.

li_vanity-LinkedIn vanity URL for the company.

name - Name of the company.

domain - Domain name of the company.

description - Brief description of the company.

website - URL of the company's website.

logo_url - URL of the company's logo image.

type - Type of the company (e.g., Privately Held, Public).

headquarter - Headquarters location of the company.

country - Country where the company is located.

size - Size of the company (e.g., number of employees).

founded_at - Year the company was founded.

locations - Array containing locations where the company operates.

city - City of the location.

country - Country of the location.

isPrimary - Indicates if this location is the primary one.

industry - Industry in which the company operates.specialties - Specialties or areas of expertise of the company

technologies_used - Technologies used by the company.

revenue - Revenue of the company.

Cost

Does not consume credits

Search API

Get profiles matching the search criteria.

curl "https://api.contactout.com/v1/people/search" \
--header 'Content-Type: application/json' \
--header 'Authorization: basic' \
--header "token: <YOUR_API_TOKEN>"
--data '
  {
    "page": 1,
    "name": "John Smith",
    "job_title": [
      "Vice President",
      "VP Of Product"
    ],
    "exclude_job_titles": [
      "Sales"
    ],
    "current_titles_only": false,
    "include_related_job_titles": false,
    "skills": [
      "Network Security",
      "Networking"
    ],
    "location": [
      "Sydney, Australia"
    ],
    "company": [
      "ContactOut"
    ],
    "exclude_companies": [
      "Google"
    ],
    "domain":[
      "https://contactout.com"
    ],
    "industry: [
      "Computer Software",
      "Computer Networking"
    ],
    "company_size": [
      "1_10",
      "11_50"
    ],
    "years_of_experience": [
      "6_10",
      "10"
    ],
    "current_company_only": false,
    "data_types" : [
      "personal_email",
      "work_email",
      "phone"
    ],
    "reveal_info" : true
  }
'

The above command returns JSON structured like this:

{
  "status_code": 200,
  "metadata": {
    "page": 1,
    "page_size": 25,
    "total_results": 45
  },
  "profiles": {
    "https://linkedin.com/in/at-JqjtXv": {
      "li_vanity": "at-JqjtXv",
      "full_name": "Llewellyn Ruecker",
      "title": "Research Assistant",
      "headline": "Research Assistant at Legros, Smitham and Kessler",
      "company": {
        "name": "Legros, Smitham and Kessler",
        "website": "nemo",
        "headquarter": "535 Kuhic Gardens Apt. 044",
        "domain": "hamill.net",
        "company_size": 3
      },
      "location": "Faheybury",
      "industry": "Dr. Trenton Hane III",
      "experience": [
        "Research Assistant at Legros, Smitham and Kessler in 2014 - Present"
      ],
      "education": [
        "Doctorate degree at Vertapple University in 2017 - 2021"
      ],
      "skills": [
        "Research",
        "Algorithms",
        "Budget Planning",
        "Storage",
        "Requirements Gathering",
        "Coding"
      ],
      "updated_at": "2023-03-31 00:00:00",
      "contact_availability" : {
        "personal_email" : true,
        "work_email": true,
        "phone": true
      },
      "contact_info": {
        "emails": ["[email protected]", "[email protected]"],
        "personal_emails": ["[email protected]"],
        "work_emails": ["[email protected]"],
        "work_email_status": [
          "[email protected]" => "Verified | Unverified"
        ],
        "phones": ["+123456789"]
      }
    },
    "https://www.linkedin.com/in/maxime-IX12tS": {
      ....
    },
    .....
  }
}

No matching profiles

{
  "status_code": 200,
  "metadata": {
    "page": 1,
    "page_size": 25,
    "total_results": 0
  },
  "profiles": []
}

HTTP Request

POST https://api.contactout.com/v1/people/search

Query Parameters

Parameter Type Description Accepts Boolean
name text Name of the profile No
job_title array, max:50 Accepts an array of job titles. Yes
current_titles_only boolean, default: true Returns profiles matching the current job title. If specified false, the response will return profiles matching the current or past job title. No
include_related_job_titles boolean, default: false Returns profiles with related job titles No
skills array, max:50 Accepts an array of skills Yes
location array, max:50 Accepts an array of locations No
company array, max:50 Accepts an array of company names No
current_company_only boolean, default: true Returns profiles matching the current company name No
domain array, max:50 Accepts an array of domains No
industry array, max:50 Accepts an array of industries. Accepted values list Yes
company_size array Accepts an array of company size ranges. Accepted values list No
years_of_experience array Accepts an array representing ranges of years of experience. Accepted values list No
page integer Provides results for the given page No
data_types array 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] No
reveal_info boolean, default: false If set to true, contact_info will contain the emails and phone numbers of the profile and credits will be charged No

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"] }

The same logic will apply for the rest of the mentioned paramters.

The supported boolean operators are:

Response

Response contains the meta information and the matching list of profiles. Each profile contains the information like title, headline, company details, experience, skills etc. It also lists the contact availability and contact information fields.

Parameter Type Description
contact_info array Returns an array containing contact information including email and phone numbers
contact_availability array Returns an array determining whether the profile contains the contact information

For customizing the output fields, use the below command with list of fields to be returned in the output:

curl "https://api.contactout.com/v1/people/search" \
--header 'Content-Type: application/json' \
--header 'Authorization: basic' \
--header "token: <YOUR_API_TOKEN>"
--data '
  {
    "page": 1,
    "name": "John Smith",
    "output_fields" : [
        "title",
        "li_vanity"
    ]
  }

The above command returns JSON structured like this:

{
  "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": []
      }
    }
  }
}

Cost

Consumes 1 email/phone credit for every profile where email/phone info is found, if reveal_info=true is specified.

Decision Makers API

Get profiles of key decision makers within a specified company.

curl "https://api.contactout.com/v1/people/decision-makers?reveal_info=true&linkedin_url=https://linkedin.com/company/contactout" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "status_code": 200,
  "metadata": {
    "page": 1,
    "page_size": 25,
    "total_results": 8
  },
  "profiles": {
    "https://www.linkedin.com/in/rob-liu": {
      "full_name": "Rob Liu",
      "li_vanity": "robliu",
      "title": "CEO / Founder",
      "headline": "Founder at Contactout",
      "company": {
        "name": "ContactOut",
        "website": "http://contactout.com",
        "domain": "contactout.com",
        "email_domain": "contactout.com",
        "headquarter": "San Francisco, US",
        "size": 96,
        "revenue": 10000,
        "industry": "Computer Software"
      },
      "location": "Singapore",
      "industry": "Computer Software",
      "experience": [
        "CEO / Founder at ContactOut in 2015 - Present",
        "Limited Partner at Blackbird in 2020 - Present",
        "Limited Partner at Hustle Fund in 2021 - Present",
        "Visiting Partner at Iterative in 2023 - Present"
      ],
      "education": ["UNSW in 2008 - 2011"],
      "skills": [
        "Start-ups",
        "Entrepreneurship",
        "Online Advertising",
        "Social Media Marketing",
        "Digital Marketing",
        "Web Analytics",
        "Digital Media",
        "Project Management",
        "Laravel",
        "Test Driven Development"
      ],
      "updated_at": "2024-04-03 17:15:14",
      "contact_availability": {
        "work_email": true,
        "personal_email": true,
        "phone": true
      },
      "contact_info": {
        "emails": ["[email protected]", "[email protected]"],
        "personal_emails": ["[email protected]"],
        "work_emails": ["[email protected]"],
        "work_email_status": {
          "[email protected]": "Verified"
        },
        "phones": ["+123456789"]
      }
    }
  }
}

HTTP Request

GET https://api.contactout.com/v1/people/decision-makers?{domain=&name=&linkedin_url=&reveal_info=}

Query Parameters

This endpoint requires at least one of the following three parameters: linkedin_url, domain, or name. The endpoint accepts any combination of these parameters to identify the most relevant company match.

Parameter Type Description
linkedin_url string, optional The fully formed URL of the company's LinkedIn profile. URL must begin with http and must contain linkedin.com/company/. Accepts both the numeric or string version of the URL, e.g. https://linkedin.com/company/contactout or https://linkedin.com/company/27090845
domain string, optional The domain name of the company's website, e.g. example.com
name string, optional The name of the company
reveal_info boolean, default: false If set to true, contact_info will contain the emails and phone numbers of the profile and credits will be charged

Response Parameters

Response contains the meta information and the matching list of profiles. Each profile contains the information like title, headline, company details, experience, skills etc. It also lists the contact availability and contact information fields.

Field Type Description
contact_info array Returns an array containing contact information including email and phone numbers
contact_availability array Returns an array determining whether the profile contains the contact information

Cost

Consumes 1 email/phone credit for every profile where email/phone info is found, if reveal_info=true is specified.

LinkedIn Profile from Email

Get LinkedIn profile url for a given email


curl "https://api.contactout.com/v1/people/[email protected]" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "status_code": 200,
  "profile": {
    "email": "[email protected]",
    "linkedin": "https://www.linkedin.com/in/terry"
  }
}

Empty Results

{
  "status_code": 404,
  "message": "Not Found"
}

HTTP Request

GET https://api.contactout.com/v1/people/person?{email=}

Query Parameters

Parameter Type Description
email string, required Email Address

Response Parameters

Field Type Description
status_code integer HTTP status code indicating the success or failure of the request.
profile object An object containing basic information about the user's profile.

email (string) - Email address associated with the user's profile.

linkedin (string) - LinkedIn profile URL of the user.

Cost

Consumes 1 email credit if profile is found.

Checker API

Personal Email Checker

Get personal email availability status for a single Linkedin profile


curl "https://api.contactout.com/v1/people/linkedin/personal_email_status?profile=https://www.linkedin.com/in/example-person" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "status_code": 200,
  "profile": {
    "email": true
  }
}

HTTP Request

GET https://api.contactout.com/v1/people/linkedin/personal_email_status?{profile=}

Query Parameters

Parameter Type Description
profile profile: (string, URL encoded, required) The fully formed URL of the LinkedIn profile. URL must begin with http and must contain linkedin.com/in/ or linkedin.com/pub/

Response Parameters

Field Type Description
status_code integer The HTTP status code of the response. Indicates the success or failure of the API request.
profile object Contains personal email availability status for a single LinkedIn profile.

email - returns true if personal email is present

Cost

Does not consume credits

Work Email Checker

Get work email availability status for a single LinkedIn profile

curl "https://api.contactout.com/v1/people/linkedin/work_email_status?profile=https://www.linkedin.com/in/example-person" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "status_code": 200,
  "profile": {
    "email": true,
    "email_status": "Verified | Unverified | null"
  }
}

HTTP Request

GET https://api.contactout.com/v1/people/linkedin/work_email_status?{profile=}

Query Parameters

Parameter Type Description
profile profile: (string, URL encoded, required) The fully formed URL of the LinkedIn profile. URL must begin with http and must contain linkedin.com/in/ or linkedin.com/pub/.

Response Parameters

Field Type Description
status_code integer The HTTP status code of the response. Indicates the success or failure of the API request.
profile object Contains work email availability status for a single LinkedIn profile.

email - returns true if work email is present

email_status - returns whether the email is verified or unverified.

Cost

Does not consume credits

Phone Number Checker

Get phone availability status for a single LinkedIn profile

curl "https://api.contactout.com/v1/people/linkedin/phone_status?profile=https://www.linkedin.com/in/example-person" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "status_code": 200,
  "profile": {
    "phone": true
  }
}

HTTP Request

GET https://api.contactout.com/v1/people/linkedin/phone_status?{profile=}

Query Parameters

Parameter Type Description
profile profile: (string, URL encoded, required) The fully formed URL of the LinkedIn profile. URL must begin with http and must contain linkedin.com/in/ or linkedin.com/pub/

Response Parameters

Field Type Description
status_code integer The HTTP status code of the response. Indicates the success or failure of the API request.
profile object Contains phone number availability status for a single LinkedIn profile.

phone - returns true if phone number is present

Cost

Does not consume credits

Email Verifier

Single

Verify the deliverability of an email address

curl "https://api.contactout.com/v1/email/[email protected]" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "status_code": 200,
  "data": {
    "status": "valid"
  }
}

HTTP Request

GET https://api.contactout.com/v1/email/verify?{email=}

Query Parameters

Parameter Type Description
email string, required Email Address

Response

status returns the status of the email address. Below are the possible values

Cost

Consumes 1 “verifier” credit if result is either valid, invalid or accept_all

Bulk

Verify the deliverability for a batch of 100 email addresses in bulk.

curl 'https://api.contactout.com/v1/email/verify/batch' \
--header 'Content-Type: application/json' \
--header 'Authorization: basic' \
--header "token: <YOUR_API_TOKEN>"
--data '{
    "callback_url": "https://api.contactout.com/enrich-test-callback-endpoint",
    "emails": [
        "[email protected]",
        "[email protected]",
        "[email protected]"
    ]
}'

The above command returns JSON structured like this:

{
  "status": "QUEUED",
  "job_id": "96d1c156-fc66-46ef-b053-be6dbb45cf1f"
}

To get the data

curl "https://api.contactout.com/v1/email/verify/batch/96d1c156-fc66-46ef-b053-be6dbb45cf1f" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

The above command returns JSON structured like this:

{
  "data": {
    "uuid": "992d8707-aa77-4499-92e4-cf3579c1d384",
    "status": "DONE",
    "result": {
      "[email protected]": "valid",
      "[email protected]": "accept_all",
      "[email protected]": "invalid"
    }
  }
}

HTTP Request

POST https://api.contactout.com/v1/email/verify/batch

GET https://api.contactout.com/v1/email/verify/batch/{job_uuid}

Query Parameters

Parameter Type Description
callback_url String, optional A URL where the results will be posted once the bulk email verification operation is completed.
emails Array, required, Max:1000 An array of email addresses

Response Parameters

Field Type Description
uuid string The unique identifier associated with the email verification request.
status string The status of the email verification process. "DONE": Indicates that the email verification process has been completed.
result object An object containing the results of the email verification process, indexed by email addresses.

Below are the possible values for verification status

valid - the email address is valid.

invalid - the email address is not valid.


accept_all - the email address is valid but any email address is accepted by the server.

disposable - the email address comes from a disposable email service provider.

unknown we failed to verify the email address.

Cost

Consumes 1 “verifier” credit per email if result is either valid, invalid or accept_all

API Usage Stats

Get API stats for the given period.

curl "https://api.contactout.com/v1/stats?period=2023-04" \
--header "authorization: basic" \
--header "token: <YOUR_API_TOKEN>"

Postpaid

Key Type Description
count integer Successful API requests that used an email credit
quota integer Allowed email credit usage before either overage is charged or key is disabled until next period
remaining integer Calculated as quota - count
over_quota integer Overages on email credit usage(only applicable to some users)
phone_count integer Successful API requests that used a phone credit
phone_quota integer Allowed phone credit usage before either overage is charged or key is disabled until next period
phone_remaining integer Calculated as phone_quota - phone_count
phone_over_quota integer Overages on phone credit usage (only applicable to some users)
{
  "status_code": 200,
  "metadata": {
    "page": 1,
    "page_size": 25,
    "total_results": 10
  },
  "profiles": {
    "https://linkedin.com/in/at-JqjtXv": {
      "li_vanity": "at-JqjtXv",
      "full_name": "Llewellyn Ruecker",
      "title": "Research Assistant",
      "headline": "Research Assistant at Legros, Smitham and Kessler",
      "company": {
        "name": "Legros, Smitham and Kessler",
        "website": "nemo",
        "headquarter": "535 Kuhic Gardens Apt. 044",
        "domain": "hamill.net",
        "company_size": 3
      },
      "location": "Faheybury",
      "industry": "Dr. Trenton Hane III",
      "experience": [
        "Research Assistant at Legros, Smitham and Kessler in 2014 - Present"
      ],
      "education": [
        "Doctorate degree at Vertapple University in 2017 - 2021"
      ],
      "skills": [
        "Research",
        "Algorithms",
        "Budget Planning",
        "Storage",
        "Requirements Gathering",
        "Coding"
      ],
      "updated_at": "2023-03-31 00:00:00",
      "contact_availability" : {
        "personal_email" : true,
        "work_email": true,
        "phone": true
      },
      "contact_info": {
        "emails": ["[email protected]", "[email protected]"],
        "personal_emails": ["[email protected]"],
        "work_emails": ["[email protected]"],
        "work_email_status": [
          "[email protected]" => "Verified | Unverified"
        ],
        "phones": ["+123456789"]
      }
    },
    "https://www.linkedin.com/in/maxime-IX12tS": {
      ....
    },
    .....
  }
}

Prepaid

Key Type Description
count integer Successful API requests that used an email credit
quota integer Prepaid Email credits remaining
phone_count integer Successful API requests that used a phone credit
phone_quota integer Prepaid Phone credits remaining
{
  "status_code": 200,
  "period": {
    "start": "2023-04-01",
    "end": "2023-04-31"
  },
  "usage": {
    "count": 100,
    "quota": 200,
    "phone_count": 500,
    "phone_quota": 1000
  }
}

HTTP Request

GET https://api.contactout.com/v1/stats?period=2023-04

Query Parameters

Parameter Type Description
period string, YYYY-MM format, defaults to current month Accepts month in YYYY-MM format, which returns the stats of the given month

Errors

ContactOut APIs returns the following error codes:

Error Code Message
400 Bad credentials or invalid headers
401 Bad request or invalid input
403 You're out of credits, please email your sales manager