curl --request GET \
--url https://api.reply.io/v3/live-data/searches/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reply.io/v3/live-data/searches/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reply.io/v3/live-data/searches/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.reply.io/v3/live-data/searches/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.reply.io/v3/live-data/searches/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.reply.io/v3/live-data/searches/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/live-data/searches/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": 123,
"status": "inProgress",
"startedAt": "2023-11-07T05:31:56Z",
"contactsFound": 123,
"usedCredits": 123,
"userId": 123,
"sequenceId": 123,
"sequenceName": "<string>",
"lists": [
{
"id": 123,
"name": "<string>"
}
],
"filters": {
"accountListIds": [
{
"value": 2,
"type": "include"
}
],
"industries": [
{
"value": "<string>",
"type": "include"
}
],
"companyLocations": [
{
"value": "<string>",
"type": "include"
}
],
"companySizes": [
"none"
],
"headcountGrowth": {
"min": 1,
"max": 1
},
"departmentHeadcountGrowth": {
"department": "<string>",
"min": 1,
"max": 1
},
"minRevenue": "zeroMillion",
"maxRevenue": "zeroMillion",
"accountKeywords": {
"values": [
{
"value": "<string>",
"type": "include"
}
],
"type": "or"
},
"isHiringOnLinkedIn": true,
"contactLocations": [
{
"value": "<string>",
"type": "include"
}
],
"jobTitles": [
{
"value": "<string>",
"type": "include"
}
],
"departments": [
{
"value": "<string>",
"type": "include"
}
],
"seniorities": [
"<string>"
],
"contactKeywords": {
"values": [
{
"value": "<string>",
"type": "include"
}
],
"type": "or"
}
}
}{
"title": "Unauthorized",
"status": 401,
"detail": "Authentication credentials are missing or invalid."
}{
"title": "Not Found",
"status": 404,
"detail": "The requested resource was not found.",
"code": "sequence.notFound"
}Get a Live Data search
contacts:read scope (or a broader one that includes it).
Get one Live Data search by id — status, contacts found, credits used, target sequence and lists, plus its filters.
curl --request GET \
--url https://api.reply.io/v3/live-data/searches/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reply.io/v3/live-data/searches/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reply.io/v3/live-data/searches/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.reply.io/v3/live-data/searches/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.reply.io/v3/live-data/searches/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.reply.io/v3/live-data/searches/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/live-data/searches/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": 123,
"status": "inProgress",
"startedAt": "2023-11-07T05:31:56Z",
"contactsFound": 123,
"usedCredits": 123,
"userId": 123,
"sequenceId": 123,
"sequenceName": "<string>",
"lists": [
{
"id": 123,
"name": "<string>"
}
],
"filters": {
"accountListIds": [
{
"value": 2,
"type": "include"
}
],
"industries": [
{
"value": "<string>",
"type": "include"
}
],
"companyLocations": [
{
"value": "<string>",
"type": "include"
}
],
"companySizes": [
"none"
],
"headcountGrowth": {
"min": 1,
"max": 1
},
"departmentHeadcountGrowth": {
"department": "<string>",
"min": 1,
"max": 1
},
"minRevenue": "zeroMillion",
"maxRevenue": "zeroMillion",
"accountKeywords": {
"values": [
{
"value": "<string>",
"type": "include"
}
],
"type": "or"
},
"isHiringOnLinkedIn": true,
"contactLocations": [
{
"value": "<string>",
"type": "include"
}
],
"jobTitles": [
{
"value": "<string>",
"type": "include"
}
],
"departments": [
{
"value": "<string>",
"type": "include"
}
],
"seniorities": [
"<string>"
],
"contactKeywords": {
"values": [
{
"value": "<string>",
"type": "include"
}
],
"type": "or"
}
}
}{
"title": "Unauthorized",
"status": 401,
"detail": "Authentication credentials are missing or invalid."
}{
"title": "Not Found",
"status": 404,
"detail": "The requested resource was not found.",
"code": "sequence.notFound"
}Authorizations
Authenticate every request with a Bearer token. Pass your Reply API key in the
Authorization header:
Authorization: Bearer <your-api-key>
Get your API key from the Reply dashboard: Settings → API Key.
Path Parameters
Search id
x >= 1Response
Search found
A single Live Data search, including the filters it was run with.
Search id
Lifecycle status of a Live Data search.
inProgress— actively searching and adding contacts.finished— completed; the requested number of contacts was added.noMoreContacts— completed; the audience was exhausted before the requested count was reached.manuallyPaused— paused by the user.pausedDueToInsufficientCredits— paused because the team ran out of credits.
inProgress, finished, noMoreContacts, manuallyPaused, pausedDueToInsufficientCredits When the search started (UTC)
Number of contacts found and added so far
Total credits spent by the search (contacts + emails + phones)
Id of the user who started the search
Sequence the found contacts are added to, when configured
Name of the target sequence, when configured
Prospect lists the found contacts are added to
Show child attributes
Show child attributes
Account- and contact-level filter configuration for a Live Data search.
Most collections are capped at 25 items. accountKeywords and contactKeywords are always present and non-null in responses even when empty ({ "values": [], "type": "or" }).
Show child attributes
Show child attributes