Search Prospects
curl --request GET \
--url https://api.kakiyo.com/v1/prospects/search \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.kakiyo.com/v1/prospects/search"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.kakiyo.com/v1/prospects/search', 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.kakiyo.com/v1/prospects/search",
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.kakiyo.com/v1/prospects/search"
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.kakiyo.com/v1/prospects/search")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kakiyo.com/v1/prospects/search")
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{
"prospects": [
{
"id": "chat_12345abcde",
"status": 2,
"qualification": "inProgress",
"paused": false,
"lastMessage": "2023-06-15T15:30:00Z",
"prospect": {
"id": "prospect_12345abcde",
"name": "John Smith",
"url": "https://linkedin.com/in/johnsmith",
"headline": "VP of Sales at Acme Inc",
"currentCompanyName": "Acme Inc",
"currentJobTitle": "VP of Sales",
"currentCompanyWebsite": "https://www.acme.com",
"currentCompanyLinkedInUrl": "https://www.linkedin.com/company/acme"
}
}
],
"pagination": {
"total": 1250,
"limit": 50,
"offset": 0,
"hasMore": true
}
}{
"error": "validation_error",
"message": "The request parameters failed validation",
"details": [
{
"field": "name",
"message": "The name field is required"
}
]
}Prospects
Search Prospects
Advanced search and filtering across all prospects
GET
/
prospects
/
search
Search Prospects
curl --request GET \
--url https://api.kakiyo.com/v1/prospects/search \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.kakiyo.com/v1/prospects/search"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.kakiyo.com/v1/prospects/search', 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.kakiyo.com/v1/prospects/search",
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.kakiyo.com/v1/prospects/search"
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.kakiyo.com/v1/prospects/search")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kakiyo.com/v1/prospects/search")
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{
"prospects": [
{
"id": "chat_12345abcde",
"status": 2,
"qualification": "inProgress",
"paused": false,
"lastMessage": "2023-06-15T15:30:00Z",
"prospect": {
"id": "prospect_12345abcde",
"name": "John Smith",
"url": "https://linkedin.com/in/johnsmith",
"headline": "VP of Sales at Acme Inc",
"currentCompanyName": "Acme Inc",
"currentJobTitle": "VP of Sales",
"currentCompanyWebsite": "https://www.acme.com",
"currentCompanyLinkedInUrl": "https://www.linkedin.com/company/acme"
}
}
],
"pagination": {
"total": 1250,
"limit": 50,
"offset": 0,
"hasMore": true
}
}{
"error": "validation_error",
"message": "The request parameters failed validation",
"details": [
{
"field": "name",
"message": "The name field is required"
}
]
}Overview
Perform advanced search and filtering across all prospects in your team. This powerful endpoint allows you to find prospects based on multiple criteria including text search, campaign association, qualification status, location, and engagement metrics. Each result’sprospect object includes current company data when available: currentCompanyName, currentJobTitle, currentCompanyWebsite, and currentCompanyLinkedInUrl.
Query Parameters
string
Text search across prospect names and headlines
string
Filter prospects by specific campaign ID
string
Filter by qualification status:
pending, qualified, disqualifiednumber
Filter by conversation status (numeric status code)
string
Filter prospects by city location
string
Filter prospects by country location
boolean
Filter prospects who have responded to outreach
boolean
Filter prospects with paused conversations
number
default:"50"
Maximum number of results to return (max: 100)
number
default:"0"
Number of results to skip for pagination
Use Cases
- Lead Management: Find specific prospects across campaigns
- Performance Analysis: Identify high-performing prospect segments
- Follow-up Management: Find prospects needing attention
- Geographic Targeting: Analyze prospects by location
- Qualification Review: Review prospects by qualification status
Response Structure
{
"prospects": [
{
"id": "prospect_123",
"name": "John Smith",
"headline": "VP of Sales at TechCorp",
"url": "https://linkedin.com/in/johnsmith",
"currentCompanyName": "TechCorp",
"currentJobTitle": "VP of Sales",
"currentCompanyWebsite": "https://www.techcorp.com",
"currentCompanyLinkedInUrl": "https://www.linkedin.com/company/techcorp",
"location": {
"city": "San Francisco",
"country": "United States"
},
"status": 3,
"qualification": "qualified",
"hasResponded": true,
"isPaused": false,
"lastActivity": "2024-01-20T10:30:00Z",
"campaign": {
"id": "campaign_456",
"name": "Enterprise Outreach Q4"
},
"stats": {
"messages": 5,
"responses": 2,
"lastResponse": "2024-01-19T14:20:00Z"
}
}
],
"pagination": {
"total": 1250,
"limit": 50,
"offset": 0,
"hasMore": true
},
"filters": {
"applied": {
"qualification": "qualified",
"hasResponded": true
},
"available": {
"qualifications": ["pending", "qualified", "disqualified"],
"cities": ["San Francisco", "New York", "London"],
"countries": ["United States", "United Kingdom", "Canada"]
}
}
}
Search Examples
Basic Text Search
curl -X GET "https://api.kakiyo.com/v1/prospects/search?query=VP%20Sales" \
-H "Authorization: Bearer YOUR_API_KEY"
Campaign-Specific Search
curl -X GET "https://api.kakiyo.com/v1/prospects/search?campaignId=campaign_123&qualification=qualified" \
-H "Authorization: Bearer YOUR_API_KEY"
Location-Based Search
curl -X GET "https://api.kakiyo.com/v1/prospects/search?city=San%20Francisco&hasResponded=true" \
-H "Authorization: Bearer YOUR_API_KEY"
Advanced Multi-Filter Search
curl -X GET "https://api.kakiyo.com/v1/prospects/search?qualification=pending&status=2&country=United%20States&limit=25" \
-H "Authorization: Bearer YOUR_API_KEY"
JavaScript Examples
// Basic search
const searchProspects = async (query) => {
const response = await fetch(`https://api.kakiyo.com/v1/prospects/search?query=${encodeURIComponent(query)}`, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
return await response.json();
};
// Advanced filtering
const findQualifiedProspects = async (campaignId) => {
const params = new URLSearchParams({
campaignId: campaignId,
qualification: 'qualified',
hasResponded: 'true',
limit: '100'
});
const response = await fetch(`https://api.kakiyo.com/v1/prospects/search?${params}`, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
return await response.json();
};
// Pagination example
const getAllProspects = async (filters = {}) => {
let allProspects = [];
let offset = 0;
const limit = 100;
while (true) {
const params = new URLSearchParams({
...filters,
limit: limit.toString(),
offset: offset.toString()
});
const response = await fetch(`https://api.kakiyo.com/v1/prospects/search?${params}`, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
const data = await response.json();
allProspects.push(...data.prospects);
if (!data.pagination.hasMore) break;
offset += limit;
}
return allProspects;
};
Python Examples
import requests
from urllib.parse import urlencode
def search_prospects(query=None, **filters):
"""Search prospects with optional filters"""
params = {}
if query:
params['query'] = query
params.update(filters)
response = requests.get(
'https://api.kakiyo.com/v1/prospects/search',
params=params,
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
)
return response.json()
# Usage examples
qualified_prospects = search_prospects(
qualification='qualified',
hasResponded=True,
limit=50
)
sf_prospects = search_prospects(
city='San Francisco',
status=2
)
campaign_prospects = search_prospects(
campaignId='campaign_123',
query='VP Sales'
)
Status Codes Reference
Common conversation status codes:0: Not contacted1: Initial message sent2: Follow-up sent3: Prospect responded4: Conversation ongoing5: Qualified6: Closed/Won7: Closed/Lost
Best Practices
- Efficient Pagination: Use appropriate limit values (25-100)
- Specific Filters: Combine multiple filters for precise results
- Text Search Optimization: Use relevant keywords for better matches
- Regular Cleanup: Use search to identify prospects needing attention
- Performance Monitoring: Track search patterns for optimization
Common Use Cases
Find Unresponsive Prospects
const unresponsiveProspects = await fetch(
'https://api.kakiyo.com/v1/prospects/search?hasResponded=false&status=2',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
Geographic Analysis
const regionalProspects = await fetch(
'https://api.kakiyo.com/v1/prospects/search?country=United%20States&qualification=qualified',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
Campaign Performance Review
const campaignResults = await fetch(
'https://api.kakiyo.com/v1/prospects/search?campaignId=campaign_123&hasResponded=true',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Text search across prospect names and headlines
Filter by specific campaign ID
Filter by qualification status
Available options:
pending, qualified, disqualified Filter by conversation status (numeric status code)
Filter prospects by city location
Filter prospects by country location
Filter prospects who have responded
Filter prospects with paused conversations
Maximum number of results
Required range:
1 <= x <= 100Number of results to skip
Required range:
x >= 0Last modified on May 19, 2026

