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
| Name | Type | Required | Description |
|---|---|---|---|
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
| Name | Type | Description |
|---|---|---|
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 Key —
authentication 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
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"]
}
}'
{
"id": 9102,
"status": "pending",
"createdAt": "2026-07-30T09:15:00Z"
}
{
"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.
Contact Data API
The CRM-grade contact and account store — create, import, filter, and organize the people and companies your agent works.
Contact Enrichment API
Fill the gaps in a contact record — find missing emails and phone numbers, enrich by email or LinkedIn URL, and populate AI custom fields.
Sequence API
Create, populate, and control multichannel outreach sequences — email, LinkedIn, and calls in one campaign object.
AI SDR API (Jason)
Program Jason, Reply's autonomous AI SDR — knowledge bases, offers, playbooks, autopilot sequences, and the approval queue are all callable today.
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.
Start here: get an API key and make your first call, or explore workflows that combine this module with others.