businesslist.aiAPI Reference Back to search

Data API

Query the US Business (~80M) and LinkedIn (~46.8M) lead corpora directly over HTTPS. Every response is JSON; exports stream CSV. Base URL:

https://app.businesslist.ai

Authentication

Pass your key as the api_key query param or the x-api-key header. A missing/invalid key returns 404 {"message":"Wrong API key"}.

Stored locally in this browser and substituted into the examples below.

Endpoints

MethodPathReturns
GET/api/searchUS Business rows + pagination
GET/api/search-linkedinLinkedIn rows + pagination
GET/api/counts?corpus=us|linkedinPer-state & per-SIC totals (cached)
GET/api/export?corpus=us|linkedinStreamed CSV of the full filtered set
GET / POST / DELETE/api/savedYour saved searches

Every search needs a query or at least one filter, else 400.

Examples

Search (curl)

curl "https://app.businesslist.ai/api/search?api_key=YOUR_API_KEY&query=plumbing&state=FL&email_status=cross_verified&limit=50"

Search (JavaScript)

const params = new URLSearchParams({
  api_key: "YOUR_API_KEY",
  query: "software",
  title: "owner",
  state: "CA",
  limit: "50",
});
const res = await fetch("https://app.businesslist.ai/api/search?" + params);
const { data, pagination } = await res.json();
console.log(pagination.total, data.length);

LinkedIn search

curl "https://app.businesslist.ai/api/search-linkedin?api_key=YOUR_API_KEY&industry=marketing&title_level=Director&limit=25"

Export to CSV

curl -o leads.csv "https://app.businesslist.ai/api/export?api_key=YOUR_API_KEY&corpus=us&query=plumbing&state=FL"

Response shape (search)

{
  "data": [ { "id": 123, "email_address": "...", "company_name": "...", ... } ],
  "pagination": { "total": 12345, "limit": 50, "offset": 0 },
  "took_ms": 42
}

Common parameters

ParamDescription
queryFull-text keyword (searches company, name, title, industry…)
industryMulti-value, comma-separated (e.g. Plumbing,HVAC)
limit1–100, default 30
offsetPagination offset
dedup1 (default) collapses duplicates; 0 disables
exclude_pulled1 hides rows you've already pulled
mark_pulled1 records returned ids to your pulled ledger

US Business filters — /api/search

ParamDescription
email_addressEmail
naics_codeNAICS Code
contact_nameContact Name — full-text
industryIndustry — full-text — multi-value (CSV)
titleTitle — full-text
company_nameCompany — full-text
first_nameFirst Name — full-text
last_nameLast Name — full-text
addressStreet — full-text
cityCity
countyCounty
stateState
zipZip
phonePhone
company_websiteWebsite
sic_codeSIC Code
email_domain_typeEmail Type — one of: corporate, edu, personal, gov
email_statusVerification — one of: cross_verified, valid, catch_all, unknown, invalid, disposable, bounced

LinkedIn filters — /api/search-linkedin

ParamDescription
emailEmail
title_levelTitle Level — one of: C-Level, VP, Director, Manager, Other
industry_groupIndustry Group
revenueRevenue
employeesEmployees
industryIndustry — full-text — multi-value (CSV)
titleTitle — full-text
company_nameCompany — full-text
first_nameFirst Name — full-text
last_nameLast Name — full-text
addressStreet — full-text
cityCity
countyCounty
stateState
zipZip
phonePhone
company_websiteWebsite
sic_codeSIC Code
email_domain_typeEmail Type — one of: corporate, edu, personal, gov
email_statusVerification — one of: cross_verified, valid, catch_all, unknown, invalid, disposable, bounced

Tip: a request with a keyword or industry returns in milliseconds. Filtering by location or email type alone (no keyword) scans the full corpus and is much slower.