Build an outbound prospect list by job title and industry
Search a B2B contact database by title, seniority, location, industry and company, and get names, work emails and LinkedIn links as JSON, paid per lead.
Outbound only works when the list is right: the people who own the problem, at companies that fit, with an email that does not bounce. Buying a static list gets you stale rows, and building one by hand takes a salesperson's week. Lovely Router searches a B2B contact database from your filters. Send a job title, a location and an industry, get one JSON object per lead, pay per lead from a prepaid balance.
Hand it to your AI agent
Copy this prompt into Claude Code, Cursor, Codex or any coding agent. It tells the agent where the docs are and how to use your API key.
Build an outbound prospect list by job title and industry. Use the Lovely Router data tools: each returns JSON and is billed per result.
- Docs (read first): https://lovelyrouter.com/docs/tools/find.md and https://lovelyrouter.com/docs/tools/run.md
- Plan first: POST https://lovelyrouter.com/v1/tools/suggest with `{"task": "<my task in plain words>"}` (free). It returns the tools to run in order, each with an example `input`, the `input_required` fields, an estimated cost and a ready-made `run` request. Replace the example values with my task's; if a field is unclear, read the tool with GET https://lovelyrouter.com/v1/tools/<id>. To browse instead, POST https://lovelyrouter.com/v1/tools/discover searches the catalog.
- Show me the plan and its estimated cost (`total_est_cost_usd`) before running anything large.
- Run: POST https://lovelyrouter.com/v1/tools/<id>/run with `{"input": {...}, "max_results": N}`. A 200 has the finished run with `items`; a 202 means it is still running, so poll the `poll` path until `status` is `succeeded`, `failed`, `timed_out` or `stopped`.
- Only delivered results are billed. Keep max_results small on the first run, check the output, then scale up.
- If you support MCP, connect https://lovelyrouter.com/mcp instead (Streamable HTTP, same key; https://lovelyrouter.com/docs/tools/mcp.md) and use suggest_tools, get_tool and run_tool.
- Auth: read my API key from the LOVELY_API_KEY environment variable and send it as `Authorization: Bearer $LOVELY_API_KEY`. Never print or commit the key. If it is not set, ask me to create one at https://lovelyrouter.com/app/keys.
- Billing is prepaid: every call is charged to my balance, so test with a small request before running anything large.
- Every docs page is plain Markdown; the full index is https://lovelyrouter.com/llms.txt.
My task: <the inputs (links, keywords or accounts) and how many results you need>How it works
Define your ideal customer
Write down the job titles, seniority, locations, industries and company sizes that match your best customers. Add company domains if you already have a target account list.
Run the tool with a cap
Send the filters to
POST /v1/tools/b2b-leads/run. Setfetch_countin the input andmax_resultsin the request body to the number of leads you want. The run holds its maximum cost from your balance and returns the leads as JSON.Load them into your CRM
Write the rows to your CRM or sequencer. Keep the email status next to each lead so you can send to verified addresses first.
Get a prospect list with one request
Find B2B leads with emails takes filters as lists. contact_job_title, seniority_level, contact_location, contact_city, company_domain, company_industry, company_keywords, size and email_status can be combined, and fetch_count caps the number of leads:
curl https://lovelyrouter.com/v1/tools/b2b-leads/run \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{
"input": {
"contact_job_title": ["head of marketing"],
"contact_location": ["united states"],
"company_industry": ["computer software"],
"fetch_count": 3
},
"max_results": 3
}'A run still going after 60 seconds returns 202; Run a tool shows how to poll. One run can return up to 1,000 leads. Start with a small fetch_count to check that the filters match who you mean.
What each lead holds
| Field group | What you get |
|---|---|
| Person | Name and job title |
| Company | The company they work for |
| Profile | LinkedIn link |
| Contact | Verified work email |
This is personal data. You are responsible for using it lawfully, including privacy and anti-spam rules in the countries you write to.
Recipes
Pull 200 heads of marketing at software companies in the United States, keep the rows with a verified email, and load them into your sequencer with the company name as a merge field.
Run the same industry and location with contact_job_title set to "head of marketing" in one run and "vp marketing" in another, then compare reply rates.
Put 80 company domains in company_domain and a few job titles in contact_job_title to find the right contacts at each account.
Add contact_city and size to focus on one metro area and one company size band, then check the first 20 leads before scaling.
Run the emails through email-verify as a second check before they go into a sequence.
Prefer plain words? Connect the MCP server and tell Claude Code or Cursor: "Find 50 heads of marketing at computer software companies in the United States, and write name, title, company, email and LinkedIn to leads.csv. Set max_results to 50."
Pair it with other lead sources
A contact list gets better when you add the company context and a second check on the email:
Search a B2B contact database (800M-style Apollo/ZoomInfo data) by job title, seniority, location, industry, company size and more: name, title, work email and status, phone, LinkedIn, company domain, size, industry and revenue.
Search LinkedIn people by keyword, location, company and title. One call returns up to 25 short profiles.
Crawl websites and extract emails, phone numbers and social profile links. One result = one website (up to 5 of its pages crawled, contacts merged).
Check whether email addresses are deliverable: syntax, domain, MX records and mailbox status.
linkedin-people-searchfinds people by title and company on LinkedIn when the database has gaps.website-contactscollects the contact details a company publishes on its own website.email-verifychecks addresses before you send.crunchbase-companiesbuilds the account list by industry and headquarters first.
For the wider job of finding customers, see lead generation.
What you pay
You pay per lead: starting a run holds its maximum cost, the per-call fee plus the per-lead fee times max_results, and the run settles to what it returned. The rest of the hold goes back to your balance. A run that fails or times out pays only for the leads it delivered, and a run refused at the start costs nothing.
There is no subscription and no monthly minimum: top up from $5, and one balance pays for tools and models. The card above shows today's price; pricing lists every tool.
Frequently asked questions
What filters can I search by?+
Job title, seniority, location, city, company domain, industry, company keywords, company size and email status. All are optional lists, and you can combine them.
Are the emails verified?+
The tool returns a verified work email for each lead, and email_status lets you filter on it. You can also run addresses through email-verify as a second check.
How many leads can one run return?+
Up to 1,000. Set fetch_count in the input and max_results in the request body to the number you want. Check a small run before you raise it.
Is it legal to email these leads?+
That depends on where you and the recipients are and on what you send. You are responsible for lawful use, including privacy and anti-spam rules. This page is not legal advice.
Do I need a subscription?+
No. You add credit to a prepaid balance and each run draws it down. Failed runs pay only for the results they delivered, and nothing renews automatically.
Building a pipeline? See lead generation, recruiting data for people data from the hiring side, and the full tool catalog.