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
The Search API allows searching SignalHire’s database of professionals using a wide variety of filters — job title, location, company, industry, experience, and more. Unlike the Person API, it does not require a known identifier. Results are returned as brief profile overviews without contact details, making it ideal for discovering new candidates or leads at scale. Results are returned synchronously — the first batch is included directly in the response. For large result sets, subsequent batches are retrieved using a scroll mechanism similar to Elasticsearch: each response includes ascrollId that can be passed to the Scroll Search endpoint to fetch the next batch.
A typical workflow:
- Submit a
searchByQueryrequest with filters — receive the first batch and ascrollId - Use Scroll Search with the
scrollIdto page through remaining results - Pass interesting profile UIDs to the Person API to retrieve full contact details
Maximum 3 concurrent Search API requests are allowed at a time.
Endpoint:
POST https://www.signalhire.com/api/v1/candidate/searchByQuery
Request Parameters
HeaderSecret API key. See Authentication.
Boolean query for current job title. Cannot be combined with
currentPastTitle — if both are provided, currentPastTitle takes precedence. See Boolean Query Guide.Boolean query for current or past job title. Takes precedence over
currentTitle if both are provided.Geographical area for the search. Accepts a single city, state, or country as a string, or multiple locations as an array. Examples:
"Los Angeles, California", ["India", "Rome, Italy"]. Returns 422 if the location cannot be recognized.Latitude coordinate for geo-based search. Must be provided together with
longitude. Searches within a 10km radius. Overrides location when set.Longitude coordinate for geo-based search. Must be provided together with
latitude.Multiple geographic points to search around simultaneously. Each item must contain
latitude and longitude. Overrides location. Used only when top-level latitude/longitude are not set. Each point uses a 10km radius.Boolean query for current company name.
Boolean query for current or past company name.
Search by full name.
Boolean query for skills, description, education, and other profile attributes.
Filter by industry category. Returns
422 if the value is not recognized. See the full list of allowed values.Filter by multiple industry categories simultaneously. Each value must be a valid industry name from the allowed values list. Returns
422 if any value is not recognized. Use instead of industry when filtering by more than one industry.Minimum years of experience in the current role and company.
Maximum years of experience in the current role and company.
Minimum years of experience across all roles and companies.
Maximum years of experience across all roles and companies.
Filter by open-to-work status.
Exclude profiles for which contacts have already been fetched.
Exclude profiles already viewed in the web app or browser extension.
Exclude profiles already added to a list.
Exclude profiles already added to a job.
Exclude profiles already emailed.
Number of profiles to return per batch. Default:
10, must be between 1 and 100. Returns 422 if outside this range.Location Formats
Thelocation filter supports three levels of granularity. The value is resolved in this order:
Country — pass the full English country name. Searches the entire country.
422 with "Location is not recognized".
For precise geo-based search, use latitude/longitude or coordinates instead — they bypass text resolution entirely.
Request Example
This example searches for profiles in New York whose current job title contains “Software Engineer” or “Developer”, and who have both PHP and JavaScript mentioned in their profile.Response Example (HTTP 200)
Response Fields
| Field | Description |
|---|---|
requestId | ID of this search. Required for Scroll Search. |
total | Total matching profiles across all pages. |
profiles | First batch of results. See Search Profile Object for field reference. |
scrollId | Present when total > size. Pass to Scroll Search to fetch the next batch. Expires in 15 seconds. |
Search Quota
Search requests are not billed per credit — they count against a daily search quota. This quota is shared between the SignalHire website and the API, so searches made in either place consume from the same daily limit. The daily quota covers two dimensions independently: the number of search queries and the total number of profiles returned across all searches. Both are tracked separately and either can be exhausted first depending on usage patterns. When the daily quota is exhausted, further search requests return HTTP402 with an error message. The quota resets daily.
There is also a concurrency limit: a maximum of 3 Search API requests can be in progress at the same time. Exceeding this returns HTTP 429.