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
For all the endpoints, the limit is 1200 requests per minute.
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 begins with http and must contains linkedin.com/in/ or linkedin.com/pub/ |
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 begins with http and must contains linkedin.com/in/ or linkedin.com/pub/ |
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 begins with http and must contains linkedin.com/in/ or linkedin.com/pub/ |
Contact Info from LinkedIn Profile
Get contact details for a single Linkedin profile
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]"
],
"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 begins with http and must contains 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 deducts phone credits. |
Contact Info 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]"
],
"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 profile member id |
include_phone | boolean, optional, Defaults to false | If set to true, it will include phone information in the response and deducts phone credits. |
Bulk ContactInfo V1
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 begins with http and must contains linkedin.com/in/ or linkedin.com/pub/ |
Bulk ContactInfo V2
Get contact details for a batch of 1000 Linkedin Profiles in bulk. This version improves upon v1 by incorporating ContactOut's work email finder.
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 begins with http and must contains linkedin.com/in/ or linkedin.com/pub/ |
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 |
---|---|---|
string, required | Email Address |
Enrich LinkedIn Profile
Get enriched profile for a single 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"
}
}
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 begins with http and must contains linkedin.com/in/ or linkedin.com/pub/ |
Enrich Email
Get enriched profile for a single email.
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]",
"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"
}
]
},
"locality": "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": "Web Content, Customer Experience, Direct Marketing, Internal Communications, Event Management, Retail Communications, Social Media Marketing, Training Delivery, Training & Development, Sports, Hockey, NFL, Management, Employee Training, Retail",
"interests": "Training and Communications, Sports Marketing, Online Marketing and Creative, Electronic Direct Mail and Direct Mail",
"certifications": [
{
"end": "Present",
"start": "October 2013",
"title": "Central Challenges of American National Security, Strategy and the Press: An Introduction",
"license": "License HarvardX/HKS-211.1x/3T2013",
"certificate_authority": "edX"
}
],
"websites": "Personal Website - http://www.sportschick.ca\nCompany Website - http://bermudasun.bm/",
"volunteering": [
{
"start": "October 2013",
"end": "Present",
"title": "Research",
"duration": "10 years",
"organization": [
{
"name": "Bermuda Zoological Society"
}
],
"causes": [
"Animal Welfare",
"Education",
"Environment",
"Poverty Alleviation"
]
}
],
"recommendations": "",
"publications": [
{
"url": "http://www.vimeo.com/16870597",
"date": "May 2005",
"title": "The Dejon Simmons Story",
"authors": [
"Dejon Simons"
],
"summary": "De’Jon’s tell-all documentary titled “The Dejon Simmons Story” explores all aspects of his accident, his reaction, and how he’s come to accept who he has become today.",
"publisher": "Road Safety Council"
}
],
"honors": [
{
"date": "August 2011",
"title": "Ross \"Blackie\" Talbot Educational Awardee 2010 & 2011",
"description": "Awarded a scholarship for two consecutive years for academic achievement and financial need.",
"organization": "HSBC Bank"
}
]
}
}
Empty Results
{
"status_code": 404,
"message": "Not Found"
}
HTTP Request
GET https://api.contactout.com/v1/email/enrich?{email=}
Query Parameters
Parameter | Type | Description |
---|---|---|
string, required | Email Address |
Enrich Domains
Get company enriched 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",
"website": "http://test.com",
"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 valid format, for ex: example.com |
Search Profiles
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"
],
"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]"],
"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 |
---|---|---|
name | text | Name of the profile |
job_title | array | Accepts an array of job titles. |
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. |
include_related_job_titles | boolean, default: false | Returns profiles with related job titles |
skills | array | Accepts an array of skills |
location | array | Accepts an array of locations |
company | array | Accepts an array of company names |
current_company_only | boolean, default: true | Returns profiles matching the current company name |
Domain | array | Accepts an array of domains |
industry | array | Accepts an array of industries. Accepted values list |
company_size | array | Accepts an array of company size ranges. Accepted values list |
page | integer | Provides results for the given page |
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] |
reveal_info | boolean, default: false | If set to true, contact_info will contain the emails and phone numbers of the profile |
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": [],
"phones": []
}
}
}
}
Email Verifier
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 |
---|---|---|
string, required | Email Address |
Response
status
returns the status of the email address. Below are the possible values
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.
Bulk Email Verifier
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 |
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>"
The above command returns JSON structured like this:
{
"status_code": 200,
"period": {
"start": "2023-04-01",
"end": "2023-04-31"
},
"usage": {
"count": 500,
"quota": 1000,
"remaining": 500,
"over_quota": 0,
"phone_count": 500,
"phone_quota": 1000,
"phone_remaining": 500,
"phone_over_quota": 0
}
}
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 header |
401 | Bad Request or invalid input |
403 | You're out of credits, please email your sales manager |