search_contact to find people at a company, look up a LinkedIn profile, or search across a filtered set of companies. Email and phone enrichment are separate operations.
Use it in Claude Code
After installing Deepline and signing in, paste this prompt into Claude Code. Replace the company domain and role for your search.Title matching can include related roles. Review the returned titles before
using the list. The prompt limits native search to the included allowance;
Claude usage has its own pricing.
Use the CLI
Inspect the tool in your workspace withdeepline tools describe search_contact, then run a small search:
deepline_native_search_contact resolves to the same native search and allowance.
What did the tested prompt return?
What did the tested prompt return?
On November 12, 2026, Claude CLI with Deepline CLI 0.3.394 returned five
profiles for zero Deepline credits. Three matched the requested role; two were
engineering program managers. This is one bounded example, not a coverage
benchmark. Your results may differ.
Call the endpoint over HTTP
Send a workspace API key toPOST https://code.deepline.com/api/v2/tools/search_contact/execute. Put the search inputs inside payload. Deepline manages provider access; you do not need a separate provider key.
/v1/search/contact is not the Deepline customer endpoint. free_only belongs to Deepline’s allowance checks and is not forwarded upstream.
Included usage and pricing
The free allowance counts returned profiles. A request for five profiles that returns three uses three profiles. Repeated searches can consume allowance again; this is not a count of unique people saved to your workspace.
These are the November plan terms. Earlier plan labels were Pay as you go, Growth and Team, respectively. Availability and workspace-specific entitlements can differ. Run
deepline billing entitlements for your remaining allowance, reset time, rate limit and overage price. The workspace’s returned terms take precedence.
Solo resets each UTC calendar month. Paid plans reset on their monthly billing cycle. On these plans, native search above the allowance costs 0.05 Deepline credits per returned profile, or $0.005. An additional 1,000 profiles costs $5. Workspaces outside these plan entitlements can have different rates.
Set free_only: true on every request that must stay within the included allowance. Deepline reserves the allowance before making the search. If fewer profiles remain than the requested page size, it reduces the page size. If none remain, it returns FREE_ALLOWANCE_EXHAUSTED without a paid search. If native search is not included for the workspace, it returns FREE_PROVIDER_UNAVAILABLE.
Omitting free_only or setting it to false permits paid overage. The flag covers this search only. Other providers, enrichment, agent usage and Play compute have their own charges. An uncertain provider timeout can retain a reservation while Deepline reconciles it; inspect your allowance before retrying a large request.
Choose a search mode
Search at one company or look up one profile
Provide at least one ofdomain, company_linkedin, company_name or contact_linkedin. Prefer a domain or LinkedIn company URL when the company name is ambiguous. A company name needs at least three characters; use a domain for shorter names.
For a known company, the free company_titles tool returns its current title roster. Pass selected titles as title_lists. Check the returned titles because matching is not exact.
Search across companies
A company-set search requires all of the following:- At least one nonempty company filter:
company_location_countries,company_industriesorcompany_employee_ranges. - A date in
experience_start_dateorexperience_start_date_new_hire. - A nonempty
title_filtersortitle_listsarray.
search_contact for each domain. The company database and people search use different industry lists.
Input reference
Unknown input fields are rejected. All fields are optional individually, but a request must satisfy one of the search modes above.
Accepted departments are
Leadership, Engineering, Product Management, Sales, Marketing, Customer Success, Finance, Accounting, Legal, Human Resources, Information Technology, Operations, Education and Other.
Accepted employee ranges are 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000 and 10001+.
Use full names from the supported countries and categories from the supported industries. US is accepted, but other country codes are rejected. Deepline normalizes names such as Czechia and Türkiye to the accepted spelling. There is no country autocomplete endpoint for this tool.
Results and pagination
The tool completes synchronously. It does not require polling. The provider payload containsoutput.persons; the Deepline Play getter is result.extractedLists.people.get(). It returns null on a miss, so handle that before iterating.
Profiles can include first_name, last_name, title, linkedin_url, linkedin_id, seniority, department, location, country, company_name, company_domain, company_linkedin_id, about and experiences. Fields may be missing or null. Inspect current experience records before assuming a person still works at the target company.
Use linkedin_url to deduplicate people. The result’s id changes between requests and is not a stable person identifier. Email and phone fields are intentionally redacted. Redaction does not mean that contact data is available for purchase.
For a small lookup, start with a few results and inspect their quality. For a larger collection, use page_size of at least 25, increment page_number and continue through short pages until an empty page. The provider removes duplicates and invalid records after paging, so a short page is not proof that results have ended. Small pages can even be empty mid-results. Keep the same filters and deduplicate by LinkedIn URL across pages. Stop at the 100-page limit or when the free allowance is exhausted.
Put the search in a Play
Save this aspeople-search.play.ts. The company domain becomes the Play input. This example performs one search and returns the profiles for the next step. It uses the current SDK’s default async function syntax. Older CLI releases that require definePlay must be updated before checking or running this file.
staleAfterSeconds: 0 requests fresh execution. free_only prevents search overage, but does not make Play compute or later enrichment steps free.
Errors
Zero returned profiles do not incur a per-profile search charge. Do not treat an empty result as an input validation error.
Enrich selected people or try another provider
To look for an email, pass a selected profile’slinkedin_url as linkedin to enrich_contact. Set include_phones: true if you also want phone data, or use enrich_phone for phone-only enrichment. Describe the tool before running it to see current pricing. There is no search unlock flag or reveal-by-person-ID endpoint.
If native search misses the people you need, use the people-search provider directory to choose a fallback. These tools have separate coverage and prices; the native profile allowance does not cover their charges. Review a small sample and approve the price before expanding a paid search.