Skip to main content
POST
Preview matching leads

Authorizations

X-API-Key
string
header
required

Body

application/json

A search request.

Every query shape is accepted on every request and the record type picks which one is read, so the client can keep a draft of each while the user moves between the search types without losing what they typed.

Each field is named exactly for the record type that reads it. A stored search is re-run by rebuilding the request as {"record_type": rt, rt: query}, which only holds while that stays true.

record_type
enum<string>
required

Which dataset a search runs against, and so which provider serves it.

Values are persisted in String(16) columns, so every member must stay within 16 characters.

Available options:
people,
companies,
signal_companies,
signal_people,
lookalikes,
local_businesses,
hiring_companies,
backlinks,
search_results,
post_authors

The sites linking to a domain or a page.

Name the target and get one row per referring site by default, sorted by the rank the link passes. Every attribute of a backlink the index can filter on is here, in four groups: the referring site, the referring page, the link itself, and the page it points at. The index takes at most eight filter conditions in one search, counting every value of every list as one; a ninth is refused rather than dropped.

companies
CompanyQuerySchema · object | null

Filters for a company search.

hiring_companies
HiringCompaniesQuerySchema · object | null

Filters for a search for companies with open roles matching a job title.

The rows are companies, one per employer, each carrying every open posting the search read for it. The count is of open postings, since the companies are folded from them once they are read.

local_businesses
LocalBusinessQuerySchema · object | null

Filters for a map search over business listings.

The one search here that asks "who is within this radius". Name a category, a business name or a website to look for, plus an area to look in for the radius part.

lookalikes
LookalikeQuerySchema · object | null

Filters for a search for companies resembling a set of seed companies.

people
PeopleQuerySchema · object | null

Filters for a people search.

post_authors
PostAuthorsQuerySchema · object | null

Filters for a search for people whose own LinkedIn posts carry a phrase.

The rows are people, one per author, each carrying every matching post the search read for them. The count is of posts, since the people are folded from them once they are read.

search_results
SearchResultsQuerySchema · object | null

Google searches to run, each landing the results Google shows for it.

Write each search the way you would type it into Google: operators (site:, intitle:, quoted phrases) work and cost nothing extra. One row is one result of one search, with the search that found it and its rank.

signal_companies
SignalCompaniesQuerySchema · object | null

Filters for a company buying-signal search.

signal_people
SignalPeopleQuerySchema · object | null

Filters for a person activity-signal search.

Response

Successful Response

A taste of the table a search would build, plus the size of the whole set.

The rows carry only the revealed columns. Everything else about a lead, email included, stays on the server until the search becomes a table.

columns
LeadColumnSchema · object[]
required

The columns a table built from these sample leads would show, in order, with revealed saying which ones the rows below carry. Decided the way the import decides them: a column no sample lead fills is left out, and a person's name stands as one Name column only when both halves were found, otherwise under the half's own label. Draw the header from this and leave the unrevealed cells empty. A search that adds more leads than the sample can fill a column the sample left out.

rows
Rows · object[]
required

At most five sample leads, each a map from a revealed column's label to its value as text, blank where the lead has none. For a people search that is the person's name, job title and company; for a company search, the company's name. No other value is sent, and email is never among them: finding it is what an enrichment does once the search is a table.

total
integer
required
already_in_tables
integer | null

How many of the sample rows are people another of your tables already holds. A people search leaves them out unless include_people_already_in_tables is set, so this says what that choice decides before anything is added. Null for every other search.

earlier_table
EarlierLeadTableSchema · object | null

A table this same search (the same filters) already built, when it still exists, so a second copy is not made by mistake.

provider_notices
string[]

What the data source said about the answer, in its own words. The signals data source narrows the scanned window to the most recent 14 days whenever an industry, size, revenue or job filter is set, and says so here rather than in the rows. Empty for every other search.