curl --request POST \
--url https://tako.com/api/v1/people/search \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"include_contents": false,
"max_rows": 2,
"content_format": "json_compact",
"role": [
"<string>"
],
"company_ids": [
"<string>"
],
"company_domains": [
"<string>"
],
"person_country": "<string>",
"person_region": "<string>",
"person_metro": "<string>",
"person_town": "<string>",
"company_industry": "<string>",
"company_min_employees": 1,
"company_max_employees": 1,
"company_funding_stages": [],
"company_startups": false,
"linkedin_urls": [
"<string>"
],
"emails": [
"<string>"
],
"phones": [
"<string>"
]
}
'import requests
url = "https://tako.com/api/v1/people/search"
payload = {
"include_contents": False,
"max_rows": 2,
"content_format": "json_compact",
"role": ["<string>"],
"company_ids": ["<string>"],
"company_domains": ["<string>"],
"person_country": "<string>",
"person_region": "<string>",
"person_metro": "<string>",
"person_town": "<string>",
"company_industry": "<string>",
"company_min_employees": 1,
"company_max_employees": 1,
"company_funding_stages": [],
"company_startups": False,
"linkedin_urls": ["<string>"],
"emails": ["<string>"],
"phones": ["<string>"]
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
include_contents: false,
max_rows: 2,
content_format: 'json_compact',
role: ['<string>'],
company_ids: ['<string>'],
company_domains: ['<string>'],
person_country: '<string>',
person_region: '<string>',
person_metro: '<string>',
person_town: '<string>',
company_industry: '<string>',
company_min_employees: 1,
company_max_employees: 1,
company_funding_stages: [],
company_startups: false,
linkedin_urls: ['<string>'],
emails: ['<string>'],
phones: ['<string>']
})
};
fetch('https://tako.com/api/v1/people/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://tako.com/api/v1/people/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'include_contents' => false,
'max_rows' => 2,
'content_format' => 'json_compact',
'role' => [
'<string>'
],
'company_ids' => [
'<string>'
],
'company_domains' => [
'<string>'
],
'person_country' => '<string>',
'person_region' => '<string>',
'person_metro' => '<string>',
'person_town' => '<string>',
'company_industry' => '<string>',
'company_min_employees' => 1,
'company_max_employees' => 1,
'company_funding_stages' => [
],
'company_startups' => false,
'linkedin_urls' => [
'<string>'
],
'emails' => [
'<string>'
],
'phones' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://tako.com/api/v1/people/search"
payload := strings.NewReader("{\n \"include_contents\": false,\n \"max_rows\": 2,\n \"content_format\": \"json_compact\",\n \"role\": [\n \"<string>\"\n ],\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"person_country\": \"<string>\",\n \"person_region\": \"<string>\",\n \"person_metro\": \"<string>\",\n \"person_town\": \"<string>\",\n \"company_industry\": \"<string>\",\n \"company_min_employees\": 1,\n \"company_max_employees\": 1,\n \"company_funding_stages\": [],\n \"company_startups\": false,\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"phones\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://tako.com/api/v1/people/search")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"include_contents\": false,\n \"max_rows\": 2,\n \"content_format\": \"json_compact\",\n \"role\": [\n \"<string>\"\n ],\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"person_country\": \"<string>\",\n \"person_region\": \"<string>\",\n \"person_metro\": \"<string>\",\n \"person_town\": \"<string>\",\n \"company_industry\": \"<string>\",\n \"company_min_employees\": 1,\n \"company_max_employees\": 1,\n \"company_funding_stages\": [],\n \"company_startups\": false,\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"phones\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://tako.com/api/v1/people/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"include_contents\": false,\n \"max_rows\": 2,\n \"content_format\": \"json_compact\",\n \"role\": [\n \"<string>\"\n ],\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"person_country\": \"<string>\",\n \"person_region\": \"<string>\",\n \"person_metro\": \"<string>\",\n \"person_town\": \"<string>\",\n \"company_industry\": \"<string>\",\n \"company_min_employees\": 1,\n \"company_max_employees\": 1,\n \"company_funding_stages\": [],\n \"company_startups\": false,\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"phones\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"card": {
"card_id": "<string>",
"title": "<string>",
"description": "<string>",
"semantic_description": "<string>",
"webpage_url": "<string>",
"image_url": "<string>",
"embed_url": "<string>",
"sources": [
{
"source_index": "data",
"source_name": "S&P Global",
"source_description": "<string>",
"url": "https://xignite.com",
"source_text": "<string>"
}
],
"methodologies": [
{
"methodology_name": "Where the Data Comes From - S&P Global",
"methodology_description": "Financial metrics standardized by S&P Global from company regulatory filings, press releases, and restatements."
}
],
"source_indexes": [
"data"
],
"card_type": "<string>",
"relevance": "High",
"content": {
"content_format": "csv",
"cost": 0,
"data": "<string>",
"records": [
{}
],
"dataset": {
"columns": [
{
"name": "<string>",
"type": "string",
"unit": "<string>"
}
],
"rows": [
[
"<string>"
]
],
"total_rows": 123,
"truncated": true,
"ref": "<string>",
"sources": [
{
"name": "<string>",
"index": "data"
}
],
"provenance": "query",
"redacted_cells": {}
},
"card_data": {},
"card_data_schema": {},
"url": "<string>",
"expires_at": "<string>",
"total_rows": 123,
"total_matching": 123,
"truncated": false,
"export_pricing": {
"baseline_usd": 123,
"row_cpm_usd": 123,
"max_rows_ceiling": 123,
"premium_row_cpm_usd": {},
"free_rows": 0,
"variable_cost_max_usd": 123
},
"manifest": [
{
"name": "<string>",
"metric": "<string>",
"entity": "<string>",
"unit": "<string>",
"dtype": "string",
"premium_class": "person_contact"
}
],
"premium": false,
"premium_rows": {},
"redacted_cells": {},
"delivery": "quote"
},
"exportable": false,
"relevance_score": 123,
"nodes": [
{
"id": "<string>",
"type": "metric",
"name": "<string>",
"description": "<string>"
}
],
"metric_definitions": [
{
"name": "Gross Domestic Product (current US$)",
"definition": "<string>"
}
],
"data_freshness": {
"coverage_end": "2026",
"data_as_of": "2026-10-01",
"last_updated": "2026-07-14"
},
"placeholder": {
"withheld_source": "<string>",
"reason": "not_served"
}
},
"total": 123,
"total_is_lower_bound": true,
"applied": [
"<string>"
],
"unresolved": [
"<string>"
],
"failed": [],
"notes": []
}{
"error_message": "<string>",
"code": "<string>",
"field": "<string>",
"error_type": "BAD_REQUEST",
"suggestions": []
}{
"error_message": "<string>",
"error_type": "BAD_REQUEST"
}{
"error_type": "<string>",
"error_message": "<string>",
"balance_cents": 123
}{
"error_message": "<string>",
"error_type": "BAD_REQUEST"
}{
"error_message": "<string>",
"error_type": "RATE_LIMIT_EXCEEDED"
}{
"error_message": "<string>",
"error_type": "BAD_REQUEST"
}Search people
Build a list of people from filters
curl --request POST \
--url https://tako.com/api/v1/people/search \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"include_contents": false,
"max_rows": 2,
"content_format": "json_compact",
"role": [
"<string>"
],
"company_ids": [
"<string>"
],
"company_domains": [
"<string>"
],
"person_country": "<string>",
"person_region": "<string>",
"person_metro": "<string>",
"person_town": "<string>",
"company_industry": "<string>",
"company_min_employees": 1,
"company_max_employees": 1,
"company_funding_stages": [],
"company_startups": false,
"linkedin_urls": [
"<string>"
],
"emails": [
"<string>"
],
"phones": [
"<string>"
]
}
'import requests
url = "https://tako.com/api/v1/people/search"
payload = {
"include_contents": False,
"max_rows": 2,
"content_format": "json_compact",
"role": ["<string>"],
"company_ids": ["<string>"],
"company_domains": ["<string>"],
"person_country": "<string>",
"person_region": "<string>",
"person_metro": "<string>",
"person_town": "<string>",
"company_industry": "<string>",
"company_min_employees": 1,
"company_max_employees": 1,
"company_funding_stages": [],
"company_startups": False,
"linkedin_urls": ["<string>"],
"emails": ["<string>"],
"phones": ["<string>"]
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
include_contents: false,
max_rows: 2,
content_format: 'json_compact',
role: ['<string>'],
company_ids: ['<string>'],
company_domains: ['<string>'],
person_country: '<string>',
person_region: '<string>',
person_metro: '<string>',
person_town: '<string>',
company_industry: '<string>',
company_min_employees: 1,
company_max_employees: 1,
company_funding_stages: [],
company_startups: false,
linkedin_urls: ['<string>'],
emails: ['<string>'],
phones: ['<string>']
})
};
fetch('https://tako.com/api/v1/people/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://tako.com/api/v1/people/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'include_contents' => false,
'max_rows' => 2,
'content_format' => 'json_compact',
'role' => [
'<string>'
],
'company_ids' => [
'<string>'
],
'company_domains' => [
'<string>'
],
'person_country' => '<string>',
'person_region' => '<string>',
'person_metro' => '<string>',
'person_town' => '<string>',
'company_industry' => '<string>',
'company_min_employees' => 1,
'company_max_employees' => 1,
'company_funding_stages' => [
],
'company_startups' => false,
'linkedin_urls' => [
'<string>'
],
'emails' => [
'<string>'
],
'phones' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://tako.com/api/v1/people/search"
payload := strings.NewReader("{\n \"include_contents\": false,\n \"max_rows\": 2,\n \"content_format\": \"json_compact\",\n \"role\": [\n \"<string>\"\n ],\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"person_country\": \"<string>\",\n \"person_region\": \"<string>\",\n \"person_metro\": \"<string>\",\n \"person_town\": \"<string>\",\n \"company_industry\": \"<string>\",\n \"company_min_employees\": 1,\n \"company_max_employees\": 1,\n \"company_funding_stages\": [],\n \"company_startups\": false,\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"phones\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://tako.com/api/v1/people/search")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"include_contents\": false,\n \"max_rows\": 2,\n \"content_format\": \"json_compact\",\n \"role\": [\n \"<string>\"\n ],\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"person_country\": \"<string>\",\n \"person_region\": \"<string>\",\n \"person_metro\": \"<string>\",\n \"person_town\": \"<string>\",\n \"company_industry\": \"<string>\",\n \"company_min_employees\": 1,\n \"company_max_employees\": 1,\n \"company_funding_stages\": [],\n \"company_startups\": false,\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"phones\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://tako.com/api/v1/people/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"include_contents\": false,\n \"max_rows\": 2,\n \"content_format\": \"json_compact\",\n \"role\": [\n \"<string>\"\n ],\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"person_country\": \"<string>\",\n \"person_region\": \"<string>\",\n \"person_metro\": \"<string>\",\n \"person_town\": \"<string>\",\n \"company_industry\": \"<string>\",\n \"company_min_employees\": 1,\n \"company_max_employees\": 1,\n \"company_funding_stages\": [],\n \"company_startups\": false,\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"phones\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"card": {
"card_id": "<string>",
"title": "<string>",
"description": "<string>",
"semantic_description": "<string>",
"webpage_url": "<string>",
"image_url": "<string>",
"embed_url": "<string>",
"sources": [
{
"source_index": "data",
"source_name": "S&P Global",
"source_description": "<string>",
"url": "https://xignite.com",
"source_text": "<string>"
}
],
"methodologies": [
{
"methodology_name": "Where the Data Comes From - S&P Global",
"methodology_description": "Financial metrics standardized by S&P Global from company regulatory filings, press releases, and restatements."
}
],
"source_indexes": [
"data"
],
"card_type": "<string>",
"relevance": "High",
"content": {
"content_format": "csv",
"cost": 0,
"data": "<string>",
"records": [
{}
],
"dataset": {
"columns": [
{
"name": "<string>",
"type": "string",
"unit": "<string>"
}
],
"rows": [
[
"<string>"
]
],
"total_rows": 123,
"truncated": true,
"ref": "<string>",
"sources": [
{
"name": "<string>",
"index": "data"
}
],
"provenance": "query",
"redacted_cells": {}
},
"card_data": {},
"card_data_schema": {},
"url": "<string>",
"expires_at": "<string>",
"total_rows": 123,
"total_matching": 123,
"truncated": false,
"export_pricing": {
"baseline_usd": 123,
"row_cpm_usd": 123,
"max_rows_ceiling": 123,
"premium_row_cpm_usd": {},
"free_rows": 0,
"variable_cost_max_usd": 123
},
"manifest": [
{
"name": "<string>",
"metric": "<string>",
"entity": "<string>",
"unit": "<string>",
"dtype": "string",
"premium_class": "person_contact"
}
],
"premium": false,
"premium_rows": {},
"redacted_cells": {},
"delivery": "quote"
},
"exportable": false,
"relevance_score": 123,
"nodes": [
{
"id": "<string>",
"type": "metric",
"name": "<string>",
"description": "<string>"
}
],
"metric_definitions": [
{
"name": "Gross Domestic Product (current US$)",
"definition": "<string>"
}
],
"data_freshness": {
"coverage_end": "2026",
"data_as_of": "2026-10-01",
"last_updated": "2026-07-14"
},
"placeholder": {
"withheld_source": "<string>",
"reason": "not_served"
}
},
"total": 123,
"total_is_lower_bound": true,
"applied": [
"<string>"
],
"unresolved": [
"<string>"
],
"failed": [],
"notes": []
}{
"error_message": "<string>",
"code": "<string>",
"field": "<string>",
"error_type": "BAD_REQUEST",
"suggestions": []
}{
"error_message": "<string>",
"error_type": "BAD_REQUEST"
}{
"error_type": "<string>",
"error_message": "<string>",
"balance_cents": 123
}{
"error_message": "<string>",
"error_type": "BAD_REQUEST"
}{
"error_message": "<string>",
"error_type": "RATE_LIMIT_EXCEEDED"
}{
"error_message": "<string>",
"error_type": "BAD_REQUEST"
}Notes
- To authenticate, send your Tako API key in the
X-API-Keyheader. Store it as an environment variable rather than hardcoding it. - The response carries its list as a card. To get the rows, pass the card’s
webpage_urlto Contents, or setinclude_contentson this request. - Premium fields are withheld. Export the card through Contents with
premiumset totrueto reveal them. - The schema
PersonListFieldlists the card’s fields. See What a list holds. - Each successful request bills one request. See Pricing.
Authorizations
Body
A screen of employees. Contact identifiers narrow it to the people they name, beside at least one other filter.
Inline the card's rows in the response, under card.content. Premium fields are never inlined: pass the card's webpage_url to POST /api/v1/contents with premium=true to unlock them.
Maximum number of rows to inline when include_contents is true. Omit it and Tako uses your account's inline row cap. Tako clamps a larger value to the card's export_pricing.max_rows_ceiling (at most 100,000). Every inlined row is billed at the POST /api/v1/contents rate. For the rest of the list, call POST /api/v1/contents with the card's webpage_url and an offset. A card export can hold up to 100,000 rows. Don't read a large export directly into a model's context: at about 15 tokens per row, 10,000 rows cost about 150,000 tokens. Write the export to a file, on disk or in memory, and have the agent parse it with code. Give the model only the rows or results it needs.
x >= 1Serialization for the inlined rows: 'json_compact', 'json_records', 'csv', or 'card_json'.
csv, json_records, json_compact, card_json Title, seniority or function phrases, such as 'head of sales'.
20Employer ids from the companies endpoints.
100Employer websites.
100Needs person_country or person_region beside it.
The employer's industry, by name or id, as companies/search takes it.
x >= 0x >= 0The employer's latest funding stages.
angel, convertible_note, corporate_round, debt_financing, equity_crowdfunding, grant, initial_coin_offering, non_equity_assistance, post_ipo_debt, post_ipo_equity, post_ipo_secondary, pre_seed, private_equity, product_crowdfunding, secondary_market, seed, series_a, series_b, series_c, series_d, series_e, series_f, series_g, series_h, series_i, series_j, series_unknown, undisclosed Employers that are startups: private companies founded in the last ten years, of a startup type, that raised a venture round or have at most 500 employees.
LinkedIn profile URLs.
505050Response
Search people (beta)
The list as a Tako card: embed it, inline its rows with include_contents, or pass its webpage_url to POST /api/v1/contents for every row (with an offset) and for premium fields (premium=true). PersonListField names its fields. Null when nothing matched.
Show child attributes
Show child attributes
True when total is the count cap (500), not an exact count. POST /api/v1/contents with the card's webpage_url reads past it.
The filters the screen ran, with their resolved values.
Inputs that named nothing, as field=value.
Inputs whose lookup failed or timed out, as field=value: retry them. Not a miss.