Audience sizing for your own product. Ask how many people match a brief and show the number to your users. The API returns counts only: no names, emails, phones, companies or profiles ever come back through it. Anyone who wants the people themselves creates a LeadVault account and reveals them there.
https://leadvaultlabs.com/v1 · Auth Authorization: Bearer lv_live_… ·
Limits 60 requests a minute, daily allowance set on your key · Cost nothing per callKeys are issued by the LeadVault team, usually within one working day. A key is shown once when it is created; keep it server-side and never in a browser or mobile app.
GET /v1/count?title=VP%20Finance&country=United%20States&employees=500%2B
Authorization: Bearer lv_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
"count": 38412,
"filters": {"title": ["VP Finance"], "similar_titles": true, "location": ["United States"], "employees": ["501-1,000", "1,001-2,000", "2,001-5,000", "5,001-10,000", "10,001+"]},
"contacts_included": false,
"reveal_url": "https://leadvaultlabs.com/?signup=1",
"took_ms": 212
}
Skip the filter vocabulary: send the sentence your user typed and Genie works out the filters, counts, and
returns both. Pass the previous answer's filters back with a follow-up ("only 500+ staff") to refine
the same audience.
POST /v1/ask
{"question": "How many directors of marketing at software and technology companies in the US?"}
{
"count": 61240,
"summary": "Directors of Marketing at software and technology companies in the United States",
"filters": {"title": "director of marketing", "industry": ["Computer software", "IT & services", "Internet"], "country": ["United States"]},
"filters_readable": [{"label": "Titles", "value": "director of marketing"}, …],
"contacts_included": false
}
GET /v1/ask?q=... works too. A sentence that does not describe an audience returns 422 with a hint.
The same filters, split by one dimension so you can draw a chart: by=seniority,
department, employees or country.
GET /v1/breakdown?by=seniority&department=finance&country=United%20States&employees_min=501
{
"count": 412903,
"by": "seniority",
"rows": [{"value": "vp", "label": "VP", "count": 38412}, {"value": "director", "label": "Director", "count": 91277}, …],
"contacts_included": false
}
| Parameter | Meaning | Example |
|---|---|---|
title | Job title, repeatable or comma separated. Similar titles are included unless similar_titles=false. | title=VP%20Finance&title=CFO |
country / location | Where the person is: country, state or city. Several with ; | location=United%20States;Canada |
company_location | Where the company is headquartered. | company_location=London |
seniority | owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, intern | seniority=vp,director |
department | finance, sales, marketing, engineering, it, operations, hr, legal, product, data, … | department=finance |
employees | Company size: a band, a range or an open range. | employees=500%2B, employees=51-200 |
employees_min / employees_max | Company size as numbers. | employees_min=501 |
industry | One of the industry names from /v1/filters. | industry=Financial%20Services |
industry_keyword | Free text company keywords. | industry_keyword=fintech |
technology | Technology in use at the company. | technology=salesforce |
revenue_min / revenue_max | Annual revenue in USD. | revenue_min=50000000 |
founded_min / founded_max | Founding year. | founded_min=2015 |
hiring_for | Companies currently hiring for this title. | hiring_for=SDR |
exclude_title | Titles to leave out. | exclude_title=assistant |
keywords | Free text over the whole profile. | keywords=payments |
GET /v1/filters returns the full vocabulary, including every industry name, as JSON.
GET /v1/me returns your key's allowance and usage today.
| Status | code | Meaning |
|---|---|---|
| 400 | bad_filter, no_filters, no_question | A parameter was not understood; the message says which. |
| 422 | not_an_audience | The sentence sent to /v1/ask did not describe people to count. |
| 401 | missing_key, invalid_key | No key, a wrong key, or a revoked key. |
| 429 | rate_limited, daily_limit | Over 60 a minute, or the key's daily allowance is spent (resets 00:00 UTC). |
| 503 | unavailable | Counting is briefly unavailable; retry after a few seconds. |
{"detail": {"code": "bad_filter", "message": "seniority 'boss' not recognised. See /v1/filters."}}
curl -s "https://leadvaultlabs.com/v1/count?title=VP%20Finance&country=United%20States&employees=500%2B" \
-H "Authorization: Bearer $LEADVAULT_KEY"
import requests
r = requests.get("https://leadvaultlabs.com/v1/count",
params={"title": "VP Finance", "country": "United States", "employees": "500+"},
headers={"Authorization": f"Bearer {KEY}"})
print(r.json()["count"])
const u = new URL("https://leadvaultlabs.com/v1/count");
u.search = new URLSearchParams({title: "VP Finance", country: "United States", employees: "500+"});
const r = await fetch(u, {headers: {Authorization: `Bearer ${process.env.LEADVAULT_KEY}`}});
console.log((await r.json()).count);
Keys are for building audience-sizing features into your own product. Do not share a key between companies, proxy the API publicly, or probe with thousands of narrow filter combinations to reconstruct records; keys that do are revoked. Usage is metered per key and visible to the administrator who issued it.