curl --request POST \
--url https://api.limitguard.ai/v1/leads/verify \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"country": "NL",
"company_number": "68750110",
"name": "Test BV Donald",
"vat_number": "NL123456789B01",
"email": "sales@example.nl",
"domain": "example.nl",
"address": {
"street": "Hizzaarderlaan",
"house_number": "3A",
"postcode": "8823 SJ",
"city": "Lollum"
},
"iban": "NL91ABNA0417164300",
"phone": "+31 20 123 4567",
"target_industries": [
"62",
"software"
],
"target_size": {
"min": 10,
"max": 50
}
}
'import requests
url = "https://api.limitguard.ai/v1/leads/verify"
payload = {
"country": "NL",
"company_number": "68750110",
"name": "Test BV Donald",
"vat_number": "NL123456789B01",
"email": "sales@example.nl",
"domain": "example.nl",
"address": {
"street": "Hizzaarderlaan",
"house_number": "3A",
"postcode": "8823 SJ",
"city": "Lollum"
},
"iban": "NL91ABNA0417164300",
"phone": "+31 20 123 4567",
"target_industries": ["62", "software"],
"target_size": {
"min": 10,
"max": 50
}
}
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({
country: 'NL',
company_number: '68750110',
name: 'Test BV Donald',
vat_number: 'NL123456789B01',
email: 'sales@example.nl',
domain: 'example.nl',
address: {
street: 'Hizzaarderlaan',
house_number: '3A',
postcode: '8823 SJ',
city: 'Lollum'
},
iban: 'NL91ABNA0417164300',
phone: '+31 20 123 4567',
target_industries: ['62', 'software'],
target_size: {min: 10, max: 50}
})
};
fetch('https://api.limitguard.ai/v1/leads/verify', 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.limitguard.ai/v1/leads/verify",
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([
'country' => 'NL',
'company_number' => '68750110',
'name' => 'Test BV Donald',
'vat_number' => 'NL123456789B01',
'email' => 'sales@example.nl',
'domain' => 'example.nl',
'address' => [
'street' => 'Hizzaarderlaan',
'house_number' => '3A',
'postcode' => '8823 SJ',
'city' => 'Lollum'
],
'iban' => 'NL91ABNA0417164300',
'phone' => '+31 20 123 4567',
'target_industries' => [
'62',
'software'
],
'target_size' => [
'min' => 10,
'max' => 50
]
]),
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://api.limitguard.ai/v1/leads/verify"
payload := strings.NewReader("{\n \"country\": \"NL\",\n \"company_number\": \"68750110\",\n \"name\": \"Test BV Donald\",\n \"vat_number\": \"NL123456789B01\",\n \"email\": \"sales@example.nl\",\n \"domain\": \"example.nl\",\n \"address\": {\n \"street\": \"Hizzaarderlaan\",\n \"house_number\": \"3A\",\n \"postcode\": \"8823 SJ\",\n \"city\": \"Lollum\"\n },\n \"iban\": \"NL91ABNA0417164300\",\n \"phone\": \"+31 20 123 4567\",\n \"target_industries\": [\n \"62\",\n \"software\"\n ],\n \"target_size\": {\n \"min\": 10,\n \"max\": 50\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://api.limitguard.ai/v1/leads/verify")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"country\": \"NL\",\n \"company_number\": \"68750110\",\n \"name\": \"Test BV Donald\",\n \"vat_number\": \"NL123456789B01\",\n \"email\": \"sales@example.nl\",\n \"domain\": \"example.nl\",\n \"address\": {\n \"street\": \"Hizzaarderlaan\",\n \"house_number\": \"3A\",\n \"postcode\": \"8823 SJ\",\n \"city\": \"Lollum\"\n },\n \"iban\": \"NL91ABNA0417164300\",\n \"phone\": \"+31 20 123 4567\",\n \"target_industries\": [\n \"62\",\n \"software\"\n ],\n \"target_size\": {\n \"min\": 10,\n \"max\": 50\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitguard.ai/v1/leads/verify")
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 \"country\": \"NL\",\n \"company_number\": \"68750110\",\n \"name\": \"Test BV Donald\",\n \"vat_number\": \"NL123456789B01\",\n \"email\": \"sales@example.nl\",\n \"domain\": \"example.nl\",\n \"address\": {\n \"street\": \"Hizzaarderlaan\",\n \"house_number\": \"3A\",\n \"postcode\": \"8823 SJ\",\n \"city\": \"Lollum\"\n },\n \"iban\": \"NL91ABNA0417164300\",\n \"phone\": \"+31 20 123 4567\",\n \"target_industries\": [\n \"62\",\n \"software\"\n ],\n \"target_size\": {\n \"min\": 10,\n \"max\": 50\n }\n}"
response = http.request(request)
puts response.read_body{
"verdict": "real_active",
"lead_score": 123,
"company": {
"registered": true,
"status": "active",
"legal_form": "<string>",
"registered_name": "<string>",
"name_match": 123,
"registered_since": "<string>",
"age_years": 123,
"sbi_main": "<string>",
"nace_main": "<string>",
"employees": 123,
"registered_address": {
"street": "<string>",
"house_number": "<string>",
"postcode": "<string>",
"city": "<string>",
"country": "<string>"
},
"address_shielded": false,
"address_match": 123,
"profile": {
"status": "active",
"headline": "<string>",
"stopped_on": "<string>",
"industry": {
"code": "01241",
"is_main": true,
"description": "Teelt van appels en peren"
},
"other_activities": [],
"employees": {
"total": 123,
"full_time": 123,
"part_time": 123
},
"branches": {
"total": 123,
"commercial": 123
},
"kvk_non_mailing": true,
"statutory_name": "<string>",
"trade_names": [],
"extended_legal_form": "<string>",
"websites": [],
"lines": [],
"personal_data_withheld": false
}
},
"vat": {
"checked": true,
"valid": true,
"name_match": 123,
"reason": "vies_unavailable"
},
"iban": {
"checked": true,
"valid": true,
"country": "<string>",
"bank": "<string>",
"bic": "<string>",
"last4": "<string>",
"country_agreement": true,
"holder_checked": false
},
"sanctions": {
"screened": true,
"hit": true,
"lists_as_of": {},
"reason": "company_not_resolved"
},
"email": {
"checked": true,
"has_mx": true,
"disposable": true
},
"flags": [
"name_mismatch"
],
"findings": [
{
"action": "<string>",
"why": "<string>",
"expected_result": "<string>"
}
],
"sources_checked": 123,
"checked_at": "<string>",
"schema_version": "lead-verify-v1",
"reason": "be_requires_number",
"correlations": {},
"dormant_shell": {
"score": 50,
"signals": [
{
"signal": "no_staff",
"words": "no staff",
"source": "KVK register"
}
],
"unknown": [
"no_staff"
],
"flag_at": 50
},
"icp_fit": {
"industry": "match",
"size": "match",
"industry_source": "<string>",
"size_source": "<string>",
"confirmed_elsewhere": false
},
"website_phones": [],
"website_phones_reason": "website_phones_disabled",
"discovered_identifiers": [],
"identifier_discovery_reason": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Lead Verify
Verify one NL/BE sales lead: register, VAT, mail server, IBAN, sanctions, lead score.
curl --request POST \
--url https://api.limitguard.ai/v1/leads/verify \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"country": "NL",
"company_number": "68750110",
"name": "Test BV Donald",
"vat_number": "NL123456789B01",
"email": "sales@example.nl",
"domain": "example.nl",
"address": {
"street": "Hizzaarderlaan",
"house_number": "3A",
"postcode": "8823 SJ",
"city": "Lollum"
},
"iban": "NL91ABNA0417164300",
"phone": "+31 20 123 4567",
"target_industries": [
"62",
"software"
],
"target_size": {
"min": 10,
"max": 50
}
}
'import requests
url = "https://api.limitguard.ai/v1/leads/verify"
payload = {
"country": "NL",
"company_number": "68750110",
"name": "Test BV Donald",
"vat_number": "NL123456789B01",
"email": "sales@example.nl",
"domain": "example.nl",
"address": {
"street": "Hizzaarderlaan",
"house_number": "3A",
"postcode": "8823 SJ",
"city": "Lollum"
},
"iban": "NL91ABNA0417164300",
"phone": "+31 20 123 4567",
"target_industries": ["62", "software"],
"target_size": {
"min": 10,
"max": 50
}
}
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({
country: 'NL',
company_number: '68750110',
name: 'Test BV Donald',
vat_number: 'NL123456789B01',
email: 'sales@example.nl',
domain: 'example.nl',
address: {
street: 'Hizzaarderlaan',
house_number: '3A',
postcode: '8823 SJ',
city: 'Lollum'
},
iban: 'NL91ABNA0417164300',
phone: '+31 20 123 4567',
target_industries: ['62', 'software'],
target_size: {min: 10, max: 50}
})
};
fetch('https://api.limitguard.ai/v1/leads/verify', 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.limitguard.ai/v1/leads/verify",
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([
'country' => 'NL',
'company_number' => '68750110',
'name' => 'Test BV Donald',
'vat_number' => 'NL123456789B01',
'email' => 'sales@example.nl',
'domain' => 'example.nl',
'address' => [
'street' => 'Hizzaarderlaan',
'house_number' => '3A',
'postcode' => '8823 SJ',
'city' => 'Lollum'
],
'iban' => 'NL91ABNA0417164300',
'phone' => '+31 20 123 4567',
'target_industries' => [
'62',
'software'
],
'target_size' => [
'min' => 10,
'max' => 50
]
]),
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://api.limitguard.ai/v1/leads/verify"
payload := strings.NewReader("{\n \"country\": \"NL\",\n \"company_number\": \"68750110\",\n \"name\": \"Test BV Donald\",\n \"vat_number\": \"NL123456789B01\",\n \"email\": \"sales@example.nl\",\n \"domain\": \"example.nl\",\n \"address\": {\n \"street\": \"Hizzaarderlaan\",\n \"house_number\": \"3A\",\n \"postcode\": \"8823 SJ\",\n \"city\": \"Lollum\"\n },\n \"iban\": \"NL91ABNA0417164300\",\n \"phone\": \"+31 20 123 4567\",\n \"target_industries\": [\n \"62\",\n \"software\"\n ],\n \"target_size\": {\n \"min\": 10,\n \"max\": 50\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://api.limitguard.ai/v1/leads/verify")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"country\": \"NL\",\n \"company_number\": \"68750110\",\n \"name\": \"Test BV Donald\",\n \"vat_number\": \"NL123456789B01\",\n \"email\": \"sales@example.nl\",\n \"domain\": \"example.nl\",\n \"address\": {\n \"street\": \"Hizzaarderlaan\",\n \"house_number\": \"3A\",\n \"postcode\": \"8823 SJ\",\n \"city\": \"Lollum\"\n },\n \"iban\": \"NL91ABNA0417164300\",\n \"phone\": \"+31 20 123 4567\",\n \"target_industries\": [\n \"62\",\n \"software\"\n ],\n \"target_size\": {\n \"min\": 10,\n \"max\": 50\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitguard.ai/v1/leads/verify")
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 \"country\": \"NL\",\n \"company_number\": \"68750110\",\n \"name\": \"Test BV Donald\",\n \"vat_number\": \"NL123456789B01\",\n \"email\": \"sales@example.nl\",\n \"domain\": \"example.nl\",\n \"address\": {\n \"street\": \"Hizzaarderlaan\",\n \"house_number\": \"3A\",\n \"postcode\": \"8823 SJ\",\n \"city\": \"Lollum\"\n },\n \"iban\": \"NL91ABNA0417164300\",\n \"phone\": \"+31 20 123 4567\",\n \"target_industries\": [\n \"62\",\n \"software\"\n ],\n \"target_size\": {\n \"min\": 10,\n \"max\": 50\n }\n}"
response = http.request(request)
puts response.read_body{
"verdict": "real_active",
"lead_score": 123,
"company": {
"registered": true,
"status": "active",
"legal_form": "<string>",
"registered_name": "<string>",
"name_match": 123,
"registered_since": "<string>",
"age_years": 123,
"sbi_main": "<string>",
"nace_main": "<string>",
"employees": 123,
"registered_address": {
"street": "<string>",
"house_number": "<string>",
"postcode": "<string>",
"city": "<string>",
"country": "<string>"
},
"address_shielded": false,
"address_match": 123,
"profile": {
"status": "active",
"headline": "<string>",
"stopped_on": "<string>",
"industry": {
"code": "01241",
"is_main": true,
"description": "Teelt van appels en peren"
},
"other_activities": [],
"employees": {
"total": 123,
"full_time": 123,
"part_time": 123
},
"branches": {
"total": 123,
"commercial": 123
},
"kvk_non_mailing": true,
"statutory_name": "<string>",
"trade_names": [],
"extended_legal_form": "<string>",
"websites": [],
"lines": [],
"personal_data_withheld": false
}
},
"vat": {
"checked": true,
"valid": true,
"name_match": 123,
"reason": "vies_unavailable"
},
"iban": {
"checked": true,
"valid": true,
"country": "<string>",
"bank": "<string>",
"bic": "<string>",
"last4": "<string>",
"country_agreement": true,
"holder_checked": false
},
"sanctions": {
"screened": true,
"hit": true,
"lists_as_of": {},
"reason": "company_not_resolved"
},
"email": {
"checked": true,
"has_mx": true,
"disposable": true
},
"flags": [
"name_mismatch"
],
"findings": [
{
"action": "<string>",
"why": "<string>",
"expected_result": "<string>"
}
],
"sources_checked": 123,
"checked_at": "<string>",
"schema_version": "lead-verify-v1",
"reason": "be_requires_number",
"correlations": {},
"dormant_shell": {
"score": 50,
"signals": [
{
"signal": "no_staff",
"words": "no staff",
"source": "KVK register"
}
],
"unknown": [
"no_staff"
],
"flag_at": 50
},
"icp_fit": {
"industry": "match",
"size": "match",
"industry_source": "<string>",
"size_source": "<string>",
"confirmed_elsewhere": false
},
"website_phones": [],
"website_phones_reason": "website_phones_disabled",
"discovered_identifiers": [],
"identifier_discovery_reason": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Body
One NL or BE lead: a company number or a name, plus whatever else is known.
Country of the company register: NL (KVK) or BE (KBO).
NL, BE "NL"
8-digit KVK number (NL) or 10-digit KBO/CBE enterprise number (BE).
32"68750110"
Company name as the lead gave it. Required for NL without a company_number.
200"Test BV Donald"
EU VAT number, checked with VIES.
20"NL123456789B01"
Contact email; only its domain is checked (mail server, disposable).
254"sales@example.nl"
Company website domain.
253"example.nl"
Address the lead gave; compared with the registered address.
Show child attributes
Show child attributes
IBAN the lead gave; validated locally, never echoed (last 4 only).
42"NL91ABNA0417164300"
Phone number the lead gave; compared with the numbers the company publishes, never echoed. Not accepted yet: a phone is rejected with 422 until website phone lookup is switched on.
40"+31 20 123 4567"
Ideal-customer industries: SBI/NACE code prefixes ("62", "64.20") or plain words matched as whole words against the register's activity descriptions. Information only: never changes the score.
20["62", "software"]
Ideal-customer employee range, both ends inclusive. Information only.
Show child attributes
Show child attributes
Response
Successful Response
One verdict and a 0-100 lead score, with each check that went into it.
real_active, real_inactive, not_found, ambiguous, unverifiable, sanctioned Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
name_mismatch, address_mismatch, iban_invalid, iban_foreign, vat_invalid, vat_owner_mismatch, no_mail_server, disposable_email, recently_registered, inactive, business_stopped, dormant_shell_signals Show child attributes
Show child attributes
"lead-verify-v1"Why the verdict is what it is, when the verdict alone does not say. be_requires_number: a Belgian lead needs a company_number; Belgian companies cannot be looked up by name.
"be_requires_number"Cross-checks that inform, never change the lead score.
Show child attributes
Show child attributes
A weighted 0-100 dormant-shell score. Unknown data never adds to it.
Show child attributes
Show child attributes
The company against the caller's ideal-customer profile. Information only.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Why no website phone numbers were read. None when the website was read. website_phones_disabled: website phone lookup is off. sole_trader_data_disabled: the company is a sole trader or partnership, so its contact details are personal data and were not read for this business. no_domain: there is no company website to read. free_mail_domain: the only domain given is a free email provider. refused: the website does not allow it to be read. timeout: the website did not answer in time. error: the website could not be read.
website_phones_disabled, sole_trader_data_disabled, no_domain, free_mail_domain, refused, timeout, error Show child attributes
Show child attributes