Skip to content

Start an export

POST
/api/v1/leads/exports

Cost: 1 credit per lead delivered (max 50,000 per export)

Always asynchronous, at every size. Returns 202 with a job id to poll.

Try it

curl https://app.leadsonar.io/api/v1/leads/exports \
  -H "X-API-Key: $LS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jobTitles": ["Head of Sales"],
    "exactMatch": true,
    "industry": ["Software Development"],
    "companySize": ["51-200"],
    "country": ["US"],
    "limit": 3
  }'

Lead Finder filters. Singular and plural spellings are both accepted (industry / industryNames).

object
industry
Array<string>
seniority
Array<string>
country

ISO country codes. The source is ~99.9% US.

Array<string>
companySize
Array<string>
revenue
Array<string>
department
Array<string>
jobTitles

Free text, whole-word matched against the job title.

Array<string>
includeKeywords

Matched against the company description, not the title.

Array<string>
excludeKeywords
Array<string>
maxPerCompany

Cap contacts per company.

integer
limit
required

Required. Rows to export; requests above 50,000 are capped and report capped_to_max.

integer
>= 1 <= 50000
companyType

Company type, derived from each company’s industry (the source has no ownership field). Values OR together. Public (listed) company filtering is not available yet; sending “public” or any other value returns 400 with code COMPANY_TYPE_NOT_AVAILABLE or UNKNOWN_COMPANY_TYPE.

Array<string>
Allowed values: private government nonprofit education
exactMatch

Match jobTitles (and keywords) as whole words. Without it titles match as substrings, so “CFO” can hit unrelated titles. The app always sends true; set it yourself.

boolean
excludeTitles

Drop anyone whose job title contains any of these words, e.g. [“intern”, “assistant”].

Array<string>
Example
{
"jobTitles": ["Head of Sales"],
"exactMatch": true,
"industry": ["Software Development"],
"companySize": ["51-200"],
"country": ["US"],
"limit": 3
}

Export queued. Poll poll until status is completed, then GET download. Note: this response is snake_case (job_id); the status endpoint answers in camelCase (id).

object
job_id
required

Export id — use it in /exports/{id}

string format: uuid
status
required
string
Allowed values: queued running completed failed
Example
queued
requested_limit
integer
Example
5000
capped_to_max

Set to 50000 when you asked for more than the per-export maximum; otherwise null

integer
nullable
poll
required
string
Example
/api/v1/leads/exports/4fad85cd-3e37-4797-ab77-07ed02d8f408
download
required
string
Example
/api/v1/leads/exports/4fad85cd-3e37-4797-ab77-07ed02d8f408/csv
Example
{
"job_id": "4fad85cd-3e37-4797-ab77-07ed02d8f408",
"status": "queued",
"requested_limit": 3,
"capped_to_max": null,
"poll": "/api/v1/leads/exports/4fad85cd-3e37-4797-ab77-07ed02d8f408",
"download": "/api/v1/leads/exports/4fad85cd-3e37-4797-ab77-07ed02d8f408/csv"
}

Limit missing (LIMIT_REQUIRED) or export unavailable for this account

object
error
required

Human-readable error message

string
message

Additional details

string