Prospect Search API

Search Reply Data — 1B+ contacts and 60M+ companies — by ICP filters like job title, seniority, department, industry, and location, and add the matches straight into your prospect lists or a sequence.

Available

Reply's reference marks the Live Data endpoints beta: parameters and response shapes may change without notice, so re-check docs.reply.io before you pin request shapes. Verified 2026-07-30.

Base URL
https://api.reply.io/v3
Official reference
docs.reply.io/api-reference/live-data/start-a-live-data-search
In Reply's reference
Called “Live Data”
OpenAPI
prospect-search.openapi.yaml
Markdown twin
prospect-search.md
Scopes
contacts:readcontacts:writeai-sdr:read

What it does

The Prospect Search API — “Live Data” in Reply’s API reference — runs searches over Reply Data, Reply.io’s built-in B2B database of 1B+ contacts and 60M+ companies (see reply.io/data). The surface has two parts. Search operations: start a Live Data search from an ICP filter set, preview it before committing, get a search by id, and list past searches. Filter-resolution operations: typeahead endpoints for job titles, seniorities, departments, industries, and locations that turn free text into the canonical values the search filters accept. A sibling group, AI SDR intent signals, adds industries and technologies typeaheads for intent-based targeting used by Jason AI. Both groups are live. Note two things before building: every endpoint is marked beta in Reply’s reference, so shapes may change without notice; and starting a search consumes credits from your Reply credit pool for each contact it adds.

The problem it solves

This is the top of the funnel. An agent that can send sequences but cannot find prospects still depends on a human to upload a CSV — or on a separately licensed data vendor (ZoomInfo, Apollo) plus an export/import pipeline to move records between systems. With Live Data search, the agent turns an ICP definition (“VP-level sales leaders at US software companies”) directly into a concrete prospect list inside the same platform that will enrich the contacts and run the outreach. One API key, one data residence, no vendor contract, no sync job. The typeahead endpoints solve a quieter problem: agents guess filter strings badly, and a search filtered on a non-canonical industry name silently matches nothing. Resolving values first makes searches deterministic.

How an agent starts using it

Resolve each filter dimension with the typeahead operations (job titles, seniorities, departments, industries, locations — plus technologies via the intent-signals group), preview the search with POST /v3/live-data/searches/preview to check match counts, then start the search with POST /v3/live-data/searches and poll GET /v3/live-data/searches/{id} until it completes. The search adds matching contacts as prospects directly — optionally straight into a sequence (sequenceId) or onto lists (listIds) — so the results are ready for outreach without a separate import step. Authentication is the standard Reply.io scheme: API key as a Bearer token. Reads (GET search, list, typeaheads) need contacts:read; preview and start need contacts:write; the intent-signals typeaheads need ai-sdr:read.

Typical agent tasks

  • Turn an ICP definition into a Live Data search over Reply Data
  • Preview match counts before committing to a full search
  • Resolve free-text filter values with the typeahead endpoints (job titles, seniorities, departments, industries, locations)
  • Poll a running search by id and list past searches
  • Look up industry and technology intent-signal values for AI SDR targeting

Inputs

NameTypeRequiredDescription
filters LiveDataFilters yes ICP filter object — job titles, seniorities, departments, industries, locations. Resolve canonical values via the typeahead endpoints before searching.
contactsCountToAdd integer yes How many matching contacts to add as prospects. Each one consumes a credit.
sequenceId integer no Add the resulting contacts straight into this sequence.
listIds integer[] no Add the resulting contacts to these lists.
maxPeoplePerCompany integer no Cap contacts taken from any single company — keeps a search from over-indexing on one account.
addContactsWithoutEmails boolean no Include matches that have no email address.
searchContactPhones boolean no Also look up phone numbers for the matches.
query string no Free-text prefix for the typeahead endpoints (job titles, seniorities, departments, industries, locations, technologies).

Outputs

NameTypeDescription
id integer Search identifier used to poll status and retrieve results.
status string Search lifecycle state.
counts object Match counts — how many contacts and companies the search matched. Exact shapes are beta; confirm against docs.reply.io.

Authentication

API key as Bearer token. Send Authorization: Bearer <API_KEY> on every request. Get an API key in the Reply.io app under Settings → API Keyauthentication reference.

Rate limits

100 requests/minute and 3,000 requests/hour per user (shared across all of the user's API clients). On 429, honor the Retry-After header.

Example

Request — POST /v3/live-data/searches
curl -X POST https://api.reply.io/v3/live-data/searches \
  -H "Authorization: Bearer $REPLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contactsCountToAdd": 50,
    "maxPeoplePerCompany": 3,
    "filters": {
      "jobTitles": ["VP of Sales", "Head of Sales"],
      "seniorities": ["vp"],
      "industries": ["Computer Software"],
      "locations": ["United States"]
    }
  }'
Response — 201
{
  "id": 9102,
  "status": "pending",
  "createdAt": "2026-07-30T09:15:00Z"
}
Error — 409
{
  "title": "Conflict",
  "status": 409,
  "detail": "A live data search is already in progress.",
  "code": "liveDataSearch.searchInProgress"
}

One search runs at a time. Other documented failures: 422 liveDataSearch.noMatchingContacts when the filters match nobody, 400 liveDataSearch.invalidParameter for a malformed filter set, and 403 liveDataSearch.forbidden when the key may not add prospects.

Related APIs

Modules are designed to chain — combining them is the point.

Frequently asked questions

Is this API live today?

Yes — verified against Reply's published API reference on 2026-07-30. Every endpoint in the Live Data and AI SDR intent-signals groups is callable. They carry a beta marker, meaning parameters and response shapes may change without notice, so re-check docs.reply.io before pinning your parsing.

What database does it search?

Reply Data — Reply.io's built-in B2B database of 1B+ contacts and 60M+ companies (reply.io/data). It ships with the platform, so search results land in the same system that enriches contacts and runs sequences. No separate data vendor license.

Which scopes does an API key need?

contacts:read for the typeaheads, listing searches, and getting a search by id; contacts:write to preview or start a search; ai-sdr:read for the intent-signals typeaheads. A broader scope that includes these works too.

Does searching cost anything?

Yes. Starting a search consumes credits from your Reply credit pool — one per contact it adds — so contactsCountToAdd is the spend control. Preview the search first to see what the filters match before committing.