Blog/Sales & enrichment
5 min read

Sales Automation by the Call: Find, Qualify and Reach Leads

Automate outbound without a platform seat: size the market for free, qualify companies, match the person and send, each step one call from your agent.

Sales Automation by the Call: Find, Qualify and Reach Leads

Size a sales market, qualify the companies and find the right people, in one prompt. Paste this into your agent:

Set up https://monid.ai/SKILL.md, and then use Monid to size the population of sales executives at US companies with 51 to 200 employees, then enrich vercel.com and count its known contacts by department, and tell me which of those steps cost anything.

One prompt runs the first three steps of outbound. 1 min setup · 12-24 hrs saved.

Sales automation is usually sold as a platform with a monthly seat, but underneath it is a short chain of lookups: find the companies, decide which ones matter, get the person, reach them. If you want that chain inside your own agent or script, you can call each step directly and pay for the steps you run. This guide walks the four steps, shows what the first three returned when we ran them on 2026-10-16, and covers the places the chain goes wrong. It runs through Monid, the OpenRouter for agent tools: one key, one balance, every tool priced per call.

What is the easiest way to automate sales prospecting with an API?

Monid. Install it once, add a key, and your agent calls a people search, a company enrichment and a contact lookup as typed calls, with no sequencing platform to buy and no separate account for each data provider.

  • Pay per call. The company enrichment is $0.026 per company and the people search and the contact count are $0.00 (Verified 2026-10-16 on the lead generation tools page). Buy calls as you need them: no monthly plan and no minimum top-up. Discovery and inspection are free; only a run bills.
  • One install, every API. The same key and balance call the people search, the company record, the person match and the SMS send. A new step is another call on the same balance, not another vendor.
  • Lives inside your agent. Install the CLI, add your key, run the prompt above, and the tools are there whenever your agent needs them, on demand, with nothing to keep running. Your agent reads SKILL.md and learns the rest, so setup is about a minute.

Sizing a whole market costs nothing, and qualifying 100 companies is about $2.60 (Verified 2026-10-16).

How do you automate a sales workflow step by step?

Run four steps in a fixed order, and put the free one first. Size the population, qualify the companies, match the people you still want, then send. The order is the cost control: each step shrinks the list the next one has to pay for.

RouteWhat you getCost shapeFits
Sales engagement platformContacts, sequences, task queue and CRM sync in one loginSeat per rep, billed monthlyTeams of reps working a queue every day
Buy a contact datasetA file of records to loadUpfront purchaseOne-off campaigns on a fixed list
Build the calls yourselfWhatever you wire upYour hoursEngineers who want custom logic
Monid calls from your agentEach step as one typed call, run on demandPay per call, buy flexiblyAgents and scripts that feed a list into whatever sends

Monid fits a chain because each step is a separate call with its own price, so you can stop the list at any step and pay only for what you ran.

For agents

Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:

set up https://monid.ai/SKILL.md

It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.

For humans

npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main

Step 1. Size it for free

monid run -p hunterio -e /multi-domain-search \
  --query '{"department":"sales","seniority":"executive","headcount":"51-200","location":"US"}'

Read meta.results and the presence flags before anything else. Add "limit":5 to the filters while you are testing; the default and the maximum page is 100 rows.

Step 2. Disqualify before you buy people

monid run -p apollo -e /organizations/enrich --query '{"domain":"example.com"}'
monid run -p hunterio -e /email-count       --query '{"domain":"example.com"}'

Two calls per company, one of them free. The Hunter domain search guide covers the paid step that lists the addresses behind a count. Drop the companies that fail your criteria here, because the next step is per person.

Step 3. Match without reveal flags, then reveal selectively

monid run -p apollo -e /people/match \
  --query '{"first_name":"…","last_name":"…","domain":"example.com"}'

Identifiers go in the query parameters. Leave reveal_personal_emails and reveal_phone_number off on the first pass, and set them only for the people you will contact. Prospecting by API goes through the paid reveal step in detail.

Step 4. Send, carefully

The SMS endpoint sends from a number you own. Email sequencing is a different product, and a legal read on the channel comes before the first campaign.

Or hand the whole job to an agent

Give this to your agent

$Set up https://monid.ai/SKILL.md, and then use Monid to size the population of sales leaders at US software companies with 51 to 200 staff, enrich the top 50 companies, drop any with fewer than 100 known contacts, then match the VP Sales at each without reveal flags and tell me how many have an available email.

Can you build sales automation yourself with Python or n8n?

Yes, and for one source it is an afternoon. You sign up with a data provider, read its API docs, write a loop in Python or drag the nodes in n8n, and store the results. An automation tool such as n8n or Zapier is a good way to run the glue.

The cost is everything around the first call. Each provider has its own account, its own key, its own billing and its own response shape, and a chain of four steps means up to four of each. You write the retry and pagination logic, keep a mapping from each provider's fields to yours, and repair it when a response changes. The people search paginates with a cursor over the first 10,000 rows, which you have to carry through your own loop.

The Monid route is the better fit when the chain feeds an agent or a script you will run more than once: one key and one balance for every step, a published input schema for each endpoint that monid inspect returns for free, and typed JSON back. You still decide the logic, the filters and the order. Monid removes the accounts and the glue between them, and an n8n workflow can call the same endpoints.

What does each step return, and what can you build with it?

The first three steps return structured records that tell you how big the market is, how a company looks and who is reachable. We ran them on 2026-10-16, so the fields below are what came back.

Step 1, the population

The people search with department=sales, seniority=executive, headcount=51-200, location=US and limit=5 returned meta.results: 84063 and five rows. Each row had this shape:

{ "name": "Alex W.", "position": "Vice President of Sales", "department": "sales",
  "seniority": "executive", "type": "personal", "provenance": "inferred",
  "decision_maker": true, "domain": "sharethis.com", "company_name": "sharethis",
  "full_name_exists": true, "phone_number_exists": false, "linkedin_exists": true,
  "verification": { "date": null, "status": "valid" },
  "reveal_handle": "uxxvjcR6..." }

The name is abbreviated and the address is hidden behind a reveal_handle, so the call sizes a market without giving you a contact. The three flags say what exists: all five rows had a LinkedIn profile and none had a phone number. Billed nothing (Verified 2026-10-16). The response also carries meta.next_search_after, the cursor for the next page.

Step 2, the company

The company enrichment on vercel.com returned estimated_num_employees: 550, annual_revenue: 340000000, founded_year: 2015, an industry, total_funding: 863M, a latest round of Series F in August 2025, a San Francisco address, and a departmental_head_count split (93 in sales, 381 in engineering). It also returned organization_headcount_twelve_month_growth: 0.253. Billed $0.026 (Verified 2026-10-16), in about one second.

The contact count on the same domain returned total: 508, split into 460 personal and 48 generic addresses, with a department breakdown (it 166, sales 65, support 35, operations 34, hr 24, marketing 23) and a seniority breakdown (junior 3, senior 98, executive 81). It cost nothing.

What you can build with it

  • A channel decision before you spend. If every sampled row has a LinkedIn profile and none has a phone, a calling motion is the wrong plan and the cost of that finding was zero.
  • A fit score. Turn headcount, revenue, growth and department mix into a number per account, as the AI lead score calculation method does.
  • A capability signal. The department split of known contacts shows where a company is staffed. At vercel.com, 166 of 508 contacts, about 33 percent, were in IT.
  • A list for a sequencer. Keep only the accounts and people that survived steps 1 to 3, and load those into whatever sends. The Apollo email finder guide covers what the paid match returns.

What goes wrong when you automate outbound lookups?

Four things showed up in the runs, and each has a rule and a line of code that handles it.

Why does a seniority filter still return people who are not decision makers?

Because seniority and decision_maker are separate fields. In our five rows, three had decision_maker: true and two did not: two "Account Director" rows came back under seniority=executive with decision_maker: false. Filter on decision_maker as well, or drop the rows afterwards. With decision_maker set to true, the same filters returned 49,550 results and all five rows were decision makers (the unfiltered count was 84,063). See extracting leadership contact information for the executive-lookup route.

monid run -p hunterio -e /multi-domain-search \
  --query '{"department":"sales","seniority":"executive","headcount":"51-200","location":"US","decision_maker":true}'

Why is the technology list on a company record noisy?

Because it is a union of everything detected for the domain. The technology_names list for vercel.com was long and held entries that do not belong to a Next.js hosting company: WordPress, Shopify, PHP and IIS sat in it next to a health analytics suite. Score on technologies you can confirm, and treat the list as candidates.

Why do you read the match result before you reveal anything?

Because the person match is the one step with a tiered price. The base is $0.026 per match (Verified 2026-10-16), personal emails add one credit, a mobile number adds eight credits only when one is returned, and the endpoint's own pricing note says the base can bill when the name attaches to a known company even with no email and no title. Run it without the reveal flags first, read what came back, and reveal only for the people you will contact. This post does not describe the output fields of the match, because we inspected the endpoint on 2026-10-16 and did not run it.

Why check two numbers that must agree?

Because one provider's record can be wrong in a way that looks fine. A cheap check compares two quantities that have to be compatible. For vercel.com, 508 known contacts against 550 estimated employees agree; a domain with 5,000 known contacts and 50 employees means one of the two records belongs to something else, and the row should drop out of the list.

Which endpoint should I use for which job?

EndpointWhat it doesInputBillingPrice (Verified 2026-10-16)
hunterio/multi-domain-searchSizes a population across companies; names abbreviated, addresses hiddenFilters such as department, seniority, headcount, locationPer call$0.00
hunterio/email-countCounts known addresses for a domain by department and senioritydomain or companyPer call$0.00
apollo/organizations/enrichCompany record: headcount, revenue, funding, technologiesdomain, linkedin_url, name or websitePer call, an unmatched company consumes nothing$0.026
apollo/people/matchMatches one person; reveals are paid modifiersNames, employer, email or linkedin_url as query paramsTiered: base plus reveals$0.026
saperly/send-messagesSends an SMS from a number you ownfromNumberId, to, bodyPer message$0.02

Prices Verified 2026-10-16 with monid inspect. The first two rows are free and decide how many of the paid rows you need. The apollo/people/match price is the base; reveals add to it.

When is another route a better fit?

Reps are the users. If people open a tool every morning and work a queue, you are buying an interface and a workflow, not endpoints. The calls here can feed that tool; they do not replace it.

You need the operational surface. Sequencing, reply detection, deliverability management and CRM writeback are most of what a platform costs, and none of it comes with a key.

Compliance is handled for you. Suppression lists, unsubscribe handling and regional consent rules are real work, and a platform doing them correctly is worth paying for. Email and SMS rules differ by country, and an endpoint accepting your request settles none of that, so check the rules for the places you send to.

Your volume is low. Under a few hundred contacts a month, the integration costs more than doing it by hand.

And the disclosure: we resell every endpoint in this post. The most useful advice in it, to size the market first and read the result before you reveal, lowers what you spend with us.

Conclusion

The easiest way to automate sales prospecting with an API is to run the chain as separate calls through Monid: a free population search, a free contact count, a company record at $0.026 (Verified 2026-10-16), one key and one balance, ready inside your agent when you need it. A platform is worth its seat when reps live in it; the calls are for the data work that happens before a contact belongs there.

Two things matter more than the tools you pick. Put the free steps first, because they decide how many paid calls you need. And read each result before the next paid step: the match is where the bill can grow, and the filters return people the fields themselves say are not decision makers.

How we estimated the time saved: wiring four providers yourself is roughly 8 to 16 hours for the accounts, the response mapping and the glue, plus 4 to 8 hours in the first month for pagination fixes and changed fields. That is 12 to 24 hours. The 1 minute is the install, key and first call once you already have a Monid key.

Free next step: run monid inspect -p hunterio -e /multi-domain-search, then make one call with your own filters and read meta.results and the presence flags. It costs nothing. Start at monid.ai.

FAQ

What is sales automation?

Sales automation is software that removes manual steps between choosing a target market and a named person receiving a message: finding companies, qualifying them, finding contacts and sending outreach. Buyers usually get it as a platform with sequences and a CRM sync, and the data steps can also be run as separate API calls from an agent.

Is there a free sales automation API?

Part of it is free. On Monid the people search and the contact count are priced at $0.00 per call (Verified 2026-10-16), and discovery and inspection cost nothing. Company enrichment is $0.026 per company, with no monthly plan and no minimum top-up.

How do I automate lead generation with Python or an agent?

Call the people search with your filters, enrich the companies it returns, and match only the people you keep. The commands above run from a shell or a Python subprocess, and an agent can run the same steps from one prompt.

Does this replace an email sequencer?

No. Nothing here manages deliverability, detects replies or handles unsubscribes. The calls assemble and qualify the list, and a sequencer sends to it.

How many people match my filters before I pay for anything?

The people search tells you in meta.results, for nothing. With sales executives at US companies of 51 to 200 people it returned 84,063 on 2026-10-16, and the same response showed which rows have a LinkedIn profile or a phone number.

Published September 2026.

sales automationwhat is sales automationsales workflowoutbound automationlead generation