docs
Dashboard

REST API / Companies

Search companies

Find companies by industry, headcount, country and technology. Each record says why it matched and carries a last-seen date and confidence for every field.

POST/v1/companies/searchMCP: search_companies
Records
1 per record returned
Meters
records + requests / 5 hrs, records / week
Empty result
0 records · 1 request

Body parameters

industrystring[]

Leadsets industry slugs, e.g. "saas" or "health-care".

employeesstring

Headcount range: "50-200", "1000+" or "<50".

countrystring[]

ISO 3166-1 alpha-2, e.g. "US". "UK" is read as "GB".

technologystring[]

Technologies the company uses, e.g. "hubspot". Matches any of them.

domainstring[]

Only these companies, up to 100 domains. URLs work too.

max_age_daysinteger

Only records refreshed within this many days, 1–3650.

exclude_staleboolean

Leave out records that are due for a refresh.

limitinteger

1–100. Default 25. Free plan: at most 10 per call.

cursorstring

From next_cursor of the previous page. See Pagination.

promptstring

Optional. The request in plain language, up to 1,000 characters. Stored with the call in your request log.

Strings work wherever a list is shown: "country": "US" is the same as "country": ["US"].

Response

items (max limit), each with company_id, name, domain, linkedin_url, industry, naics, employees, employee_range, revenue_range, location, founded_year, description, technologies, match_reasons, freshness (refreshed_at, confirmed_at, stale_after_at, stale) and sources, which gives the last-seen date and confidence of every returned field. Then next_cursor for the next page, usage with what this call counted and what's left, and request_id.

match_reasons lists the filters the record matched: industry, size, country, technology, domain, fresh. On the Free plan, usage has free_search_records_left and free_calls_left.

Searches share one pool. Company and people searches count against the same concurrent-search limit for your plan. Enrichment and scraping don't take a slot.

Errors

StatustypeMeaning
400invalid_requestA value isn't valid. The message names the field in param.
401unauthorizedMissing, invalid, expired or revoked key. See Authentication.
402free_records_exhaustedFree plan: the 100 free search records or the 1,000 free data calls are used up.
403forbiddenThe key is read only. Data tools need a key with data access.
429window_fullA five-hour records or requests window is full. See Retry-After and resets_at.
429weekly_limitThe seven-day records limit is reached. Resume after resets_at.
429too_many_concurrentToo many searches running at once for your plan.

Was this page useful? Tell us

cURLTypeScriptPython
curl https://api.leadsets.ai/v1/companies/search \
  -H "Authorization: Bearer $LEADSETS_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4b0d…" \
  -d '{
    "industry": ["saas"],
    "country": ["US"],
    "employees": "50-200",
    "technology": ["hubspot"],
    "limit": 25
  }'
Response200 OK
{
  "items": [{
    "company_id": "8c1f0b7a-52d4-4c3e-9e61-2a7d5f0c9b48",
    "name": "Northwind Analytics",
    "domain": "northwind.io",
    "linkedin_url": "https://www.linkedin.com/company/northwind-analytics",
    "industry": "SaaS",
    "employees": 120, "employee_range": "51-200",
    "location": { "country": "US", "region": "CA", "city": "San Francisco" },
    "founded_year": 2017,
    "technologies": ["hubspot", "segment"],
    "match_reasons": ["industry", "size", "country", "technology"],
    "refreshed_at": "2026-11-01T00:00:00Z", "stale": false
  }],
  "next_cursor": "c_eyJ0Ijoi…",
  "usage": { "search_records_counted": 25, "search_records_left_5h": 7475,
             "search_requests_left_5h": 37499, "search_records_left_week": 37475 },
  "request_id": "req_3f9a1c0b2d4e"
}