Documentation Index
Fetch the complete documentation index at: https://docs.signalhire.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
SignalHire’s database contains detailed professional profiles for hundreds of millions of people worldwide. The Person API allows looking up individuals using known identifiers — a LinkedIn profile URL, email address, phone number, or SignalHire profile UID — and retrieving their full profile data including contact information. Up to 100 identifiers can be submitted in a single request, and identifier types can be mixed freely within the same batch.This endpoint consumes standard SignalHire credits for each successfully matched profile. Credits are shared across the website, browser extension, and API. See API Pricing for details.
- Async mode (default) — submit a request with a
callbackUrl, receive arequestIdimmediately, and get results POSTed to your URL once ready. Suitable when maximum contact coverage is needed. - Sync mode (Without Waterfall) — submit a request without a
callbackUrland receive results immediately in the response. Faster, but may return fewer or slightly older contacts. See Without Waterfall mode.
Before You Start
Make sure you have:- A valid API key — see Authentication
- A publicly accessible callback URL ready to receive POST requests (for async mode)
- Sufficient credits — see Get Remaining Credits
Endpoint:
POST https://www.signalhire.com/api/v1/candidate/search
Request Parameters
In Request HeadersYour secret API key. See Authentication.
Array of identifiers to look up. Each item can be a LinkedIn profile URL, email address, phone number, or 32-character SignalHire profile UID. Maximum 100 items per request. Types can be mixed freely within a single request.
URL on your server where results will be POSTed once processing is complete. Required unless using
withoutWaterfall. See Callback Delivery.If
true, returns results synchronously in the response body instead of via callback. Cannot be combined with callbackUrl. See Without Waterfall mode.If
true, returns profile data without contact details (emails, phones). Requires a separate credit type. See Without Contacts.How It Works (Async Mode)
- Submit a POST request with an
itemsarray and acallbackUrl - SignalHire immediately returns a
requestIdwith HTTP201 - The server queries internal and external sources for each item in parallel
- Once complete, results are POSTed to the
callbackUrl
For a simpler synchronous flow without setting up a callback server, use Without Waterfall mode.
Request Example
Initial Response (HTTP 201)
201 means the request was accepted and processing has started.
The requestId uniquely identifies this request — it will be included in the Request-Id header of the callback payload, allowing incoming results to be matched to the original request.
For other possible response codes — such as 401, 402, 429 — see Response Codes.
Callback Format
Once processing is complete, SignalHire POSTs an array to yourcallbackUrl. Each element corresponds to one item from the request and contains:
item— the original identifier submitted (LinkedIn URL, email, phone, or UID)status— result of processing for this item (see status values below)candidate— full profile object, present only whenstatusissuccess. See Candidate Object for a complete field reference.
Callback Status Values
| Status | Description |
|---|---|
success | Profile found and returned in the candidate field. |
failed | Item not found or could not be processed. |
credits_are_over | Ran out of credits while processing this item. |
timeout_exceeded | Processing timed out (10-second limit). |
duplicate_query | Same request was submitted again within a short period. |
Callback Delivery
Setting up a reliable callback endpoint is the responsibility of the API client. The endpoint must be publicly accessible, accept POST requests, and respond with HTTP200 within 10 seconds. SignalHire has no way to re-initiate processing — if a callback is lost, a new API request must be submitted.
Delivery flow:
- Delivery is considered successful when the callback endpoint responds with HTTP
200 - If the connection fails or times out (10 seconds), SignalHire retries 3 times sequentially
- If all retries fail, the callback is discarded and the results are lost
- The
Request-Idheader in the callback payload contains the original request ID for tracking