Preview lead list count API
curl --request POST \
--url https://api.technologychecker.io/v1/leads/preview-count \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"technologies": {
"ids": [
2,
7
],
"logic": "or"
},
"keywords": {
"include": [
"shop"
],
"exclude": [
"health"
]
},
"website_type": "company_only",
"countries": [
"United States",
"Germany"
],
"industries": [
"Software Development"
],
"employees": [
"51-200",
"201-500"
]
}
'import requests
url = "https://api.technologychecker.io/v1/leads/preview-count"
payload = {
"technologies": {
"ids": [2, 7],
"logic": "or"
},
"keywords": {
"include": ["shop"],
"exclude": ["health"]
},
"website_type": "company_only",
"countries": ["United States", "Germany"],
"industries": ["Software Development"],
"employees": ["51-200", "201-500"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
technologies: {ids: [2, 7], logic: 'or'},
keywords: {include: ['shop'], exclude: ['health']},
website_type: 'company_only',
countries: ['United States', 'Germany'],
industries: ['Software Development'],
employees: ['51-200', '201-500']
})
};
fetch('https://api.technologychecker.io/v1/leads/preview-count', 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.technologychecker.io/v1/leads/preview-count",
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([
'technologies' => [
'ids' => [
2,
7
],
'logic' => 'or'
],
'keywords' => [
'include' => [
'shop'
],
'exclude' => [
'health'
]
],
'website_type' => 'company_only',
'countries' => [
'United States',
'Germany'
],
'industries' => [
'Software Development'
],
'employees' => [
'51-200',
'201-500'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.technologychecker.io/v1/leads/preview-count"
payload := strings.NewReader("{\n \"technologies\": {\n \"ids\": [\n 2,\n 7\n ],\n \"logic\": \"or\"\n },\n \"keywords\": {\n \"include\": [\n \"shop\"\n ],\n \"exclude\": [\n \"health\"\n ]\n },\n \"website_type\": \"company_only\",\n \"countries\": [\n \"United States\",\n \"Germany\"\n ],\n \"industries\": [\n \"Software Development\"\n ],\n \"employees\": [\n \"51-200\",\n \"201-500\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.technologychecker.io/v1/leads/preview-count")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"technologies\": {\n \"ids\": [\n 2,\n 7\n ],\n \"logic\": \"or\"\n },\n \"keywords\": {\n \"include\": [\n \"shop\"\n ],\n \"exclude\": [\n \"health\"\n ]\n },\n \"website_type\": \"company_only\",\n \"countries\": [\n \"United States\",\n \"Germany\"\n ],\n \"industries\": [\n \"Software Development\"\n ],\n \"employees\": [\n \"51-200\",\n \"201-500\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.technologychecker.io/v1/leads/preview-count")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"technologies\": {\n \"ids\": [\n 2,\n 7\n ],\n \"logic\": \"or\"\n },\n \"keywords\": {\n \"include\": [\n \"shop\"\n ],\n \"exclude\": [\n \"health\"\n ]\n },\n \"website_type\": \"company_only\",\n \"countries\": [\n \"United States\",\n \"Germany\"\n ],\n \"industries\": [\n \"Software Development\"\n ],\n \"employees\": [\n \"51-200\",\n \"201-500\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"estimated_count": 518300,
"credit_cost": 518300,
"filters_applied": {
"technologies": 2,
"countries": 2,
"industries": 1,
"employees": 2
}
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Provide exactly one scope: technology_id, technology or category_id."
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key"
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key"
}
}Lead lists
Preview lead list count API
Estimate how many domains a filter set matches and what building it would cost, before you commit. Free.
POST
/
v1
/
leads
/
preview-count
Preview lead list count API
curl --request POST \
--url https://api.technologychecker.io/v1/leads/preview-count \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"technologies": {
"ids": [
2,
7
],
"logic": "or"
},
"keywords": {
"include": [
"shop"
],
"exclude": [
"health"
]
},
"website_type": "company_only",
"countries": [
"United States",
"Germany"
],
"industries": [
"Software Development"
],
"employees": [
"51-200",
"201-500"
]
}
'import requests
url = "https://api.technologychecker.io/v1/leads/preview-count"
payload = {
"technologies": {
"ids": [2, 7],
"logic": "or"
},
"keywords": {
"include": ["shop"],
"exclude": ["health"]
},
"website_type": "company_only",
"countries": ["United States", "Germany"],
"industries": ["Software Development"],
"employees": ["51-200", "201-500"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
technologies: {ids: [2, 7], logic: 'or'},
keywords: {include: ['shop'], exclude: ['health']},
website_type: 'company_only',
countries: ['United States', 'Germany'],
industries: ['Software Development'],
employees: ['51-200', '201-500']
})
};
fetch('https://api.technologychecker.io/v1/leads/preview-count', 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.technologychecker.io/v1/leads/preview-count",
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([
'technologies' => [
'ids' => [
2,
7
],
'logic' => 'or'
],
'keywords' => [
'include' => [
'shop'
],
'exclude' => [
'health'
]
],
'website_type' => 'company_only',
'countries' => [
'United States',
'Germany'
],
'industries' => [
'Software Development'
],
'employees' => [
'51-200',
'201-500'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.technologychecker.io/v1/leads/preview-count"
payload := strings.NewReader("{\n \"technologies\": {\n \"ids\": [\n 2,\n 7\n ],\n \"logic\": \"or\"\n },\n \"keywords\": {\n \"include\": [\n \"shop\"\n ],\n \"exclude\": [\n \"health\"\n ]\n },\n \"website_type\": \"company_only\",\n \"countries\": [\n \"United States\",\n \"Germany\"\n ],\n \"industries\": [\n \"Software Development\"\n ],\n \"employees\": [\n \"51-200\",\n \"201-500\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.technologychecker.io/v1/leads/preview-count")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"technologies\": {\n \"ids\": [\n 2,\n 7\n ],\n \"logic\": \"or\"\n },\n \"keywords\": {\n \"include\": [\n \"shop\"\n ],\n \"exclude\": [\n \"health\"\n ]\n },\n \"website_type\": \"company_only\",\n \"countries\": [\n \"United States\",\n \"Germany\"\n ],\n \"industries\": [\n \"Software Development\"\n ],\n \"employees\": [\n \"51-200\",\n \"201-500\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.technologychecker.io/v1/leads/preview-count")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"technologies\": {\n \"ids\": [\n 2,\n 7\n ],\n \"logic\": \"or\"\n },\n \"keywords\": {\n \"include\": [\n \"shop\"\n ],\n \"exclude\": [\n \"health\"\n ]\n },\n \"website_type\": \"company_only\",\n \"countries\": [\n \"United States\",\n \"Germany\"\n ],\n \"industries\": [\n \"Software Development\"\n ],\n \"employees\": [\n \"51-200\",\n \"201-500\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"estimated_count": 518300,
"credit_cost": 518300,
"filters_applied": {
"technologies": 2,
"countries": 2,
"industries": 1,
"employees": 2
}
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Provide exactly one scope: technology_id, technology or category_id."
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key"
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key"
}
}Frequently asked questions
How accurate is the estimate?
How accurate is the estimate?
It is a fast approximation designed to drive a live counter as someone adjusts filters, not an exact count. Billing always happens on the actual delivered row count, never on this number, so an overestimate never costs you anything.
Which filters affect the estimate?
Which filters affect the estimate?
Technology, keyword, country, industry and employee filters all move it. Among the website filters,
has_email and has_phone apply coverage factors, while languages and web_countries are informational and do not move the estimate — they still filter the real build.Is it cached?
Is it cached?
Yes, for 5 minutes per unique filter set, so a user toggling back and forth does not re-run the estimate each time.
What is credit_cost telling me?
What is credit_cost telling me?
One credit per row we would deliver. Cap it by setting
list_size when you create the list — that is the maximum you can be charged.Authorizations
API key in format tapi_live_[32-char] (live) or tapi_test_[32-char] (test)
Body
application/json
The filter set that defines a lead list. Technology filters and company filters combine with AND.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Example:
"company_only"
Example:
["United States", "Germany"]
Example:
["Software Development"]
Example:
["51-200", "201-500"]
Only domains where the crawler found an email address.
Only domains where the crawler found a phone number.
Example:
["en"]
ISO-2 codes or English names. Unresolvable values are rejected at create time.
Example:
["USA"]
Was this page helpful?
⌘I