Skip to content

Browse leads

POST
/api/v1/leads/browse

Cost: Free — contact details are masked

The middle step between counts and a bulk export: look at the rows, pick the ones worth paying for, reveal those. Charges nothing, exactly like the app’s finder. Leads this account has already revealed are dropped from the results.

Try it

curl https://app.leadsonar.io/api/v1/leads/browse \
  -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"],
    "page": 1,
    "limit": 2
  }'

Same filters as /leads/search, plus paging.

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
page

Page in order. A cold jump to a deep page walks forward and is slower.

integer
default: 1 >= 1
limit
integer
default: 25 >= 1 <= 1000
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"],
"page": 1,
"limit": 2
}

A page of masked leads

object
page
integer
limit
integer
returned
integer
total
integer
nullable
total_is_exact
boolean
total_is_estimate
boolean
next_page

Null when the page came back short — that is the end.

integer
nullable
leads
Array<object>

A lead as the app’s browse page shows it. Email, last name, company domain and LinkedIn URL are withheld until the row is revealed.

object
id

Feed this to /leads/reveal.

string format: uuid
firstName
string
lastName

Masked, e.g. “J.”

string
email

Masked, e.g. ”•••@•••.org”

string
phone

Masked.

string
nullable
companyName
string
companyDomain

Null until revealed.

string
nullable
jobTitle
string
seniority
string
department
string
country
string
countryCode
string
state
string
city
string
companySize
string
linkedinUrl

Null until revealed.

string
nullable
industryName
string
note

Explains estimates or masking for this page, when relevant.

string
nullable
Example
{
"page": 1,
"limit": 2,
"returned": 2,
"total": 179984,
"total_is_exact": false,
"total_is_estimate": true,
"next_page": 2,
"leads": [
{
"id": "3f1c2a90-0000-4000-8000-000000000001",
"firstName": "Jordan",
"lastName": "Reyes",
"fullName": "Jordan Reyes",
"email": "•••@•••.com",
"phone": "+1512****10",
"companyName": "Example Software Inc.",
"companyDomain": null,
"jobTitle": "Head Of Sales Amer",
"seniority": "",
"department": "",
"country": "US",
"countryCode": "US",
"state": "TX",
"city": "Austin",
"companySize": "101 to 250",
"linkedinUrl": null,
"industryName": "Software Development",
"categoryName": null
},
{
"id": "3f1c2a90-0000-4000-8000-000000000002",
"firstName": "Priya",
"lastName": "Natarajan",
"fullName": "Priya Natarajan",
"email": "•••@•••.com",
"phone": null,
"companyName": "Northwind Analytics",
"companyDomain": null,
"jobTitle": "Head Of Discovery Sales/ Engagement Manager",
"seniority": "",
"department": "",
"country": "US",
"countryCode": "US",
"state": "",
"city": "",
"companySize": "101 to 250",
"linkedinUrl": null,
"industryName": "Software Development",
"categoryName": null
}
],
"note": "Browsing is free and returns masked rows. Email, last name, company domain and LinkedIn URL unlock via POST /api/v1/leads/reveal, which charges credits per NEW lead exactly as the app does. Leads you have already revealed are dropped from these results."
}

Lead source unavailable (LEADS_SOURCE_DOWN)

object
error
required

Human-readable error message

string
message

Additional details

string