> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intentleads.si/llms.txt
> Use this file to discover all available pages before exploring further.

# Search

> Everyone who fits your filters, with their contact details. A free estimate first, then export.

**Intent tells you who's looking right now. Search tells you who fits.**

A search lane is the companies and people you want, with their contact details and **no intent signal**. It uses the same filters as an intent lane (industry, company size, seniority, job titles, your target accounts and [about 50 more fields](https://docs.intentleads.si/guides/more-filters.md)), plus what each person must have: a mobile, a business email, or mobiles that aren't on the do-not-call list.

Use it for full market lists, and to reach people who aren't researching anything right now or barely use LinkedIn: practice owners, clinic managers, trades, real estate.

| | Intent lane (`L1`) | Search lane (`S1`) |
| - | - | - |
| Who | People researching your keywords right now | Everyone who matches your filters |
| Sizing | Checked daily, free | Free estimate when you ask |
| Price | [Intent prices](https://docs.intentleads.si/guides/billing.md#prices), once per person per month | [Search prices](https://docs.intentleads.si/guides/billing.md#prices), once per person, ever |

## 1. Create one

In the dashboard, press **New lane** on **Lanes** and pick **Search**; [Build a list with Search](https://docs.intentleads.si/get-started/first-search.md) walks through it. On the lane's page, the **Everyone must have** switches save and recount as you flip them, and **Recount** asks for a new free estimate.

![A search lane for US medical practice owners: 2,184 match right now](https://mintcdn.com/intentleads/16GfXNJlPs26aspr/images/app/search-lane.png?fit=max\&auto=format\&n=16GfXNJlPs26aspr\&q=85\&s=c6dfe21982aa06db235b9bbbcaaf22f1)

A search lane: its filters, must-haves, radius and the free estimate.

With the API:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -s -X POST "https://intentleads.si/api/v1/lanes" \
  -H "Authorization: Bearer $INTENT_LEADS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "search",
    "name": "Medical practice owners",
    "us_only": true,
    "employees": {"min": 5, "max": 200},
    "industries": ["medical practices"],
    "seniority": ["cxo"],
    "titles_include": ["owner", "founder", "partner"],
    "contact": {"mobile": true, "email": false, "no_dnc": false}
  }'
```

Search lanes get codes `S1`, `S2` and so on (older ones are `C1`, `C2`). They have no keywords, audience or topics to leave out. Every other filter works as it does on intent lanes, including [more filters](https://docs.intentleads.si/guides/more-filters.md) and your [target accounts](https://docs.intentleads.si/guides/lanes.md#target-accounts). `"kind": "contacts"` still works as another name for `"search"`.

## Filters

The dashboard's search form shows each filter on its own row, in five groups. Most of them are stored as the lane's [`conditions`](https://docs.intentleads.si/guides/more-filters), so the API, CLI and MCP see exactly what the form shows.

| Group | Filters | Over the API |
| - | - | - |
| Each person must have | A mobile, a mobile not on do-not-call lists, a business email, one checked as valid, a personal email, a direct phone, a LinkedIn profile | `contact` (`mobile`, `no_dnc`, `email`), and `work_email_status`, `has_personal_email`, `has_direct_phone`, `has_linkedin` in `conditions` |
| Job and career | Job titles (in and out), seniority (owners and partners apart from the C-suite), department, years of experience, past job titles, past employers, schools, headline | `titles_include`, `titles_exclude`, and `seniority_detail`, `department_detail`, `years_experience`, `past_titles`, `past_companies`, `education`, `headline` |
| Location | A radius around a ZIP code or city, state, city and ZIP code where the person lives | `near`, `person_state`, `person_city`, `person_zip` |
| Personal and household | Age, gender, household income, net worth, homeowner, married, children at home | `age_range`, `gender`, `household_income`, `net_worth`, `homeowner`, `married`, `children` |
| Company | Industry (in and out), keywords in the company's description (in and out), NAICS and SIC codes, staff count or size bands, revenue, company name (in and out), HQ state, city and ZIP code, US HQ only | `industries`, `industries_exclude`, `employees`, `us_only`, and `company_description`, `naics`, `sic`, `employee_range`, `revenue_range`, `company_name`, `company_state`, `company_city`, `company_zip` |

Anything else, like OR groups or other fields, goes under **Advanced: AND / OR groups** at the bottom of the form.

For example, dental practice owners and partners within 50 miles of Houston with 10 or more years of experience, at practices whose description mentions implants, leaving out group practices:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -s -X POST "https://intentleads.si/api/v1/lanes" \
  -H "Authorization: Bearer $INTENT_LEADS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "search",
    "name": "Houston dental owners",
    "employees": {"min": 1, "max": 50},
    "titles_include": ["owner", "dentist", "dds"],
    "titles_exclude": ["associate", "hygienist"],
    "contact": {"mobile": true, "no_dnc": true},
    "conditions": {"all": [
      {"field": "seniority_detail", "op": "any_of", "value": ["owner", "partner"]},
      {"field": "years_experience", "op": "at_least", "value": 10},
      {"field": "near", "op": "within", "value": {"place": "Houston, TX", "miles": 50, "from": "company"}},
      {"field": "naics", "op": "starts_with", "value": ["621210"]},
      {"field": "company_description", "op": "contains", "value": ["implants"]},
      {"field": "company_name", "op": "not_contains", "value": ["group", "holdings"]}
    ]}
  }'
```

## 2. Get a free estimate

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -s -X POST "https://intentleads.si/api/v1/lanes/S1/estimate" \
  -H "Authorization: Bearer $INTENT_LEADS_KEY"
```

It counts everyone who matches now, leaving out people you've already bought, your exclusions and removals. It takes about 50 minutes: call `GET /api/v1/lanes/S1/estimate` until `status` is `done` (we also email you). You get `people` and up to 10 real people as a sample (name, job title, company, size, industry and location, and whether an email, phone and LinkedIn are on file; no contact details).

Your first 5,000 people are prepared at the same time, for free, so an export right after the count arrives in about a minute. Creating a search or changing its filters starts both straight away.

The same filters within 24 hours return the same estimate. Change the filters and ask again for a fresh count. From the CLI: `intentleads estimate S1 --wait`.

## 3. Export

Exports work the same as for intent lanes: quote first (free), then export.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -s -X POST "https://intentleads.si/api/v1/exports" \
  -H "Authorization: Bearer $INTENT_LEADS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lanes": ["S1"], "max": 1000, "dry_run": false, "idempotency_key": "s1-2026-11-12"}'
```

* Paid from your [balance](https://docs.intentleads.si/guides/billing.md) at search prices, per person delivered. The quote shows the cost and your balance after.
* Each person is charged **once, ever**. Anyone you've already bought from any search lane is left out before we pay.
* Export search lanes and intent lanes separately: one export can't mix them.
* The leads arrive like any other: [`GET /api/v1/leads`](https://docs.intentleads.si/guides/leads), with `lane` set to the search lane and the intent fields empty.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.