---
title: ContactOut API Integration on Truto
slug: contactout
category: Sales Intelligence
canonical: "https://truto.one/integrations/detail/contactout/"
---

# ContactOut API Integration on Truto



**Category:** Sales Intelligence  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 23 tools for ContactOut that AI agents can call directly.

- **contact_out_people_enrich** — Enrich one person in ContactOut from linkedin_url, email or phone, or from a name plus company, company_domain, location or education. Contact data comes back only for the types listed in include. Returns status_code and profile. Costs 1 search credit per profile found, plus 1 email or phone credit when that data is found.
- **contact_out_people_enrich_by_linkedin_url** — Get the full ContactOut profile for one LinkedIn profile URL, with emails and phones when found; profile_only=true skips contact data. Returns status_code and profile (an empty array when nothing matched). Costs 1 email credit and 1 phone credit when found, or 1 search credit when profile_only=true or no contact data exists.
- **contact_out_people_enrich_by_email** — Get the ContactOut profile for one email address; personal emails match best. Set include=work_email to also get a work email checked in real time (workEmailStatus Verified or Unverified) (slower). Returns status_code and profile with camelCase keys. Costs 1 email credit if an email is found and 1 phone credit if a phone is found.
- **contact_out_people_find_linkedin_url** — Get the LinkedIn profile URL for an email address (ContactOut Email to LinkedIn API). Returns status_code and profile with email and linkedin. Costs 1 email credit if a profile is found.
- **contact_out_people_search** — Search ContactOut people profiles by title, company, location, skills, education and more. Page with page and page_size (1-25, default 25) in the body. Returns status_code, metadata and profiles keyed by LinkedIn URL. Costs 1 search credit per profile returned, plus email/phone credits when reveal_info=true. Limited to 60 requests per minute.
- **contact_out_people_count** — Count ContactOut profiles matching the People Search filters (page, data_types and reveal_info are not accepted). Returns status_code, total_results, estimated_personal_emails, estimated_work_emails and estimated_phones. Does not consume credits. Available to paid users only.
- **contact_out_people_search_decision_makers** — Get decision makers at a company in ContactOut. Send at least one of linkedin_url, domain or name; pass page for later pages (25 per page). Returns status_code, metadata and profiles keyed by LinkedIn URL. Costs 1 search credit per profile returned, plus email/phone credits when reveal_info=true.
- **contact_out_contacts_enrich** — Get emails, and phones with include_phone=true, for one LinkedIn profile in ContactOut. email_type picks personal, work, personal,work or none. Returns status_code and profile with url, email, work_email, work_email_status, personal_email, phone and github. Costs 1 email credit if an email is found and 1 phone credit if a phone is found.
- **contact_out_contacts_bulk_enrich** — Get contact details for up to 100 LinkedIn profiles in one synchronous ContactOut call (V1 bulk). Returns status_code and profiles keyed by the requested URL: an array of emails, or an object with emails and phones when include_phone=true. Costs 1 email credit per profile with an email and 1 phone credit per profile with a phone.
- **contact_out_contacts_check_personal_email** — Check whether ContactOut has a personal email for a LinkedIn profile. Returns status_code and profile.email (true when present). Does not consume credits. Paid users only.
- **contact_out_contacts_check_work_email** — Check whether ContactOut has a work email for a LinkedIn profile. Returns status_code and profile with email (true when present) and email_status (Verified, Unverified or null). Does not consume credits. Paid users only.
- **contact_out_contacts_check_phone** — Check whether ContactOut has a phone number for a LinkedIn profile. Returns status_code and profile.phone (true when present). Does not consume credits. Paid users only.
- **create_a_contact_out_contact_enrichment_job** — Start an asynchronous ContactOut contact lookup (V2 bulk) for up to 1000 LinkedIn profile URLs. Returns status (e.g. QUEUED) and job_id; fetch results with get using the job_id, or pass callback_url to have ContactOut POST them when done. Costs 1 email credit per profile with an email and 1 phone credit per profile with a phone.
- **get_single_contact_out_contact_enrichment_job_by_id** — Get a ContactOut V2 bulk contact lookup job by its job_id. Returns uuid, status and result, where result is keyed by LinkedIn URL with emails, personal_emails, work_emails and phones.
- **contact_out_hashed_emails_bulk_lookup** — Get SHA-256 hashed personal emails for 5 to 100 LinkedIn profile URLs in ContactOut. Returns status_code, matches.emails (hashes), matches_found, unmatched and unmatched_count. Work emails are not included. Costs 1 email credit per profile that returns a hash.
- **contact_out_email_verifications_verify** — Verify the deliverability of one email address with ContactOut. Returns status_code and data.status: valid, invalid, accept_all, disposable or unknown. Costs 1 verifier credit when the result is valid, invalid or accept_all.
- **create_a_contact_out_email_verification_job** — Start an asynchronous ContactOut bulk verification of up to 100 email addresses. Returns status (e.g. QUEUED) and job_id; fetch results with get, or pass callback_url to receive them by POST. Costs 1 verifier credit per email whose result is valid, invalid or accept_all.
- **get_single_contact_out_email_verification_job_by_id** — Get a ContactOut bulk email verification job by its job_id. Returns uuid, status (DONE when complete) and result, a map of email to valid, invalid, accept_all, disposable or unknown.
- **list_all_contact_out_campaigns** — List ContactOut email campaigns. Returns id, name, status, created_at and updated_at for each campaign. The Campaigns API must be enabled for the API token; otherwise ContactOut returns 403.
- **get_single_contact_out_campaign_by_id** — Get one ContactOut campaign by id, with its sequence steps. Set include_stats=true to add stats (sends, opens, replies, bounces, open_rate, reply_rate). Returns id, name, status, created_at, updated_at, steps and stats. Needs the Campaigns API enabled for the token.
- **list_all_contact_out_usage_stats** — Get ContactOut API usage for a month. Pass period as YYYY-MM (default current month). Returns status_code, period and usage with email, phone and search counts and quotas; postpaid keys also carry remaining and over_quota values. Unpaginated: the list returns this one usage object as a single record; limit and next_cursor do nothing.
- **contact_out_companies_enrich** — Get ContactOut company details for up to 30 domains. Returns status_code and companies keyed by domain; a domain with no match maps to an empty object. Costs 1 search credit per company found.
- **contact_out_companies_search** — Search ContactOut companies by name, domain, size, location, industry, technologies, revenue and founding year. Pass page in the body for later pages (25 per page). Returns status_code, metadata and a companies array. Costs 1 search credit per company returned.

## How it works

1. **Link your customer's ContactOut account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach ContactOut.** The Proxy API is a 1-to-1 mapping of the ContactOut API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Embed native sourcing inside your ATS** — Let recruiters paste a LinkedIn URL into your ATS and instantly create a candidate record with personal email, mobile, work history, and GitHub — eliminating the Chrome extension + CSV workflow that pulls users out of your product.
- **Turn target accounts into verified outbound sequences** — For sales engagement and SDR platforms, convert a company domain into a ready-to-send cold sequence by auto-discovering decision-makers, enriching their contact details, and verifying deliverability before any email fires.
- **Guarantee 100% hit-rate enrichment for RevOps** — Offer credit-optimized enrichment inside your CRM or data hygiene tool by using ContactOut's free check endpoints to pre-flight records, so your users only burn credits on contacts that will actually return data.
- **Make intent and signal data actionable** — If you ship intent data, website visitor tracking, or signal-based prospecting, pair surging accounts with the real people to contact — searching ContactOut by company, title, and skill to turn signals into named pipeline.
- **Build privacy-compliant ad audiences from LinkedIn lists** — Let MarTech users upload LinkedIn URLs and push SHA-256 hashed personal emails directly into Meta or LinkedIn custom audiences, without ever exposing raw PII inside your platform.

## What you can build

- **One-click LinkedIn-to-CRM enrichment** — A button in your UI that takes a LinkedIn URL or email and returns a fully populated contact record via contact_out_people_enrich_by_linkedin_url or contact_out_people_enrich_by_email.
- **Automated buying committee discovery** — A workflow that takes a company domain, calls contact_out_companies_enrich plus contact_out_people_search_decision_makers, and surfaces the full leadership team ready for outreach.
- **Async bulk enrichment with webhook delivery** — A background job runner using create_a_contact_out_contact_enrichment_job and get_single_contact_out_contact_enrichment_job_by_id to process thousands of CRM records without API timeouts.
- **Pre-send email verification layer** — An automatic deliverability check using contact_out_email_verifications_verify that blocks invalid, disposable, or risky addresses before sequences fire, protecting your users' sending reputation.
- **Native prospecting search inside your app** — A full lead-list builder powered by contact_out_people_search, contact_out_people_count, and contact_out_companies_search so users never leave your product to prospect.
- **Credit-aware waterfall enrichment** — A smart enrichment engine that uses contact_out_contacts_check_work_email, check_personal_email, and check_phone to confirm data exists for free, then only spends credits on guaranteed hits.

## FAQs

### How does authentication work for ContactOut via Truto?

ContactOut uses API token authentication. Your end users provide their ContactOut API token through Truto's hosted connect UI or your own flow, and Truto stores and injects credentials on every request — you never handle the token directly.

### Does Truto support ContactOut's asynchronous enrichment jobs?

Yes. You can create jobs via create_a_contact_out_contact_enrichment_job and poll status via get_single_contact_out_contact_enrichment_job_by_id. The same pattern is available for email verification jobs, making it straightforward to process bulk workloads.

### Can I check if ContactOut has data on a contact without consuming credits?

Yes. ContactOut exposes dedicated check endpoints — contact_out_contacts_check_work_email, check_personal_email, and check_phone — that return boolean availability without burning enrichment credits. These are ideal for building waterfall or pre-flight logic.

### What contact data can I retrieve for a LinkedIn profile?

Through the enrichment endpoints you can return work emails, personal emails, direct dials and mobile numbers, full work history, and profile metadata. Match rates for LinkedIn-to-email are among the highest in the category.

### How do I handle rate limits and pagination?

Truto handles pagination normalization and automatic retry/backoff for ContactOut's rate limits across search and bulk endpoints, so you can iterate through contact_out_people_search or bulk lookups without writing retry logic yourself.

### Can I pull campaign performance data from ContactOut?

Yes. list_all_contact_out_campaigns and get_single_contact_out_campaign_by_id let you sync campaigns and (with stats included) metrics like opens, clicks, replies, and bounces back into your CRM or analytics layer.

### Is there a privacy-safe way to build ad audiences from LinkedIn URLs?

Yes. contact_out_hashed_emails_bulk_lookup returns SHA-256 hashes of personal emails for a given list of LinkedIn URLs, which can be pushed directly to Meta or LinkedIn custom audiences without exposing raw PII.
