publicapidata
Playbook

Sell B2B lead lists that separate role from personal

Build verified contact lists from a domain list, with role addresses split from personal ones, placeholders filtered, and the gaps stated. Costed per domain.

Every scraped lead list has the same three defects. It mixes info@ with a named person’s address and calls both a contact. It includes [email protected] from an unedited template and [email protected] from a code sample. And it quietly drops the companies that publish nothing, so the buyer never learns that a fifth of their target market has no reachable address at all.

The business here is fixing those three defects and charging for the fix. The input is a list of domains at a cent each. What you sell is a list the buyer can hand to a salesperson without a cleaning pass first.

What you are actually selling

Separation and honesty about coverage. Anyone can produce a column of email addresses; almost nobody hands over a list that tells the buyer which addresses are a person and which are a shared inbox.

Three columns are the product:

  • Personal addresses — a named individual, worth a written first line
  • Role addressesinfo@, sales@, hello@, support@, worth a different sequence and a lower expectation
  • No contact published — the company, marked explicitly as a gap rather than deleted

The third is the one buyers do not expect and the one that earns repeat business. A list of 2,000 domains that returns 1,200 rows looks worse than a list that silently returns 1,200 rows out of a claimed 2,000 — until the buyer works out that the second vendor has hidden which 800 companies to research another way.

Placeholder filtering is the other visible quality signal. example.com, yourdomain.com, sentry.io keys pulled out of a script tag, and addresses on domains unrelated to the company being profiled — every one of those in a delivered list is a row the buyer pays for and cannot use.

Sell into a niche you can describe in one sentence. “Every independent physiotherapy clinic in the Netherlands” is a product. “B2B leads” is not.

The numbers

One job: 2,000 domains for a defined niche, delivered as a verified list.

Unit economics for a 2,000-domain job. Input priced at the published Actor rate of $10.00 per 1,000 domains. Yield is a conservative planning figure, not a guarantee.
LineBasisAmount
Cost per domain$10.00 per 1,000$0.01
Domains per jobOne niche list2,000
Total input cost2,000 × $0.01$20.00
Usable rows returned60% yield, conservative1,200
Input cost per usable row$20.00 / 1,200$0.017
Sale price1,200 rows at $0.60$720
Gross margin before labour($720 − $20) / $72097%
Your time5 hours at $60/hour$300
Net margin after labour($720 − $320) / $72056%

Sixty per cent yield is the planning number to quote a client. Some niches run well above it — professional services firms almost all publish a contact address — and some run far below, particularly consumer-facing businesses that route everything through a web form or a social profile.

Run 100 domains from the niche before quoting the job. That costs $1.00 and tells you the yield, which is the only number in the table you cannot know in advance.

The five hours are sourcing the domain list, spot-checking a sample by hand, writing the coverage note, and delivering. Sourcing the domains is most of it, and it is the part that does not get cheaper with volume.

How it works

  1. Define the niche narrowly enough to enumerate. Industry, country and size band. If you cannot describe how you would build the domain list, you do not have a niche yet.
  2. Build the domain list. Trade association directories, public registries, review site categories, industry bodies. This is unglamorous, it is where the defensibility lives, and it is the reason the same niche gets more profitable the second time you sell it.
  3. De-duplicate before you run. Same company under two domains, www and apex duplicates, and dead registrations. Every duplicate is a cent and a row the buyer will notice.
  4. Run the extraction over the domain list. Save the raw output. Do all filtering on the saved file so you never pay twice for the same domain.
  5. Split personal from role addresses. Mechanical: a local part matching info, sales, hello, contact, support, admin, office, enquiries and their variants is a role address. Everything else goes into personal, and you then check a sample of it by eye.
  6. Filter placeholders and off-domain noise. Documentation examples, template leftovers, third-party service addresses, and anything whose domain does not match the company being profiled.
  7. Write the coverage note. Domains attempted, rows returned, yield, and the count of companies with nothing published. One paragraph. It is the most persuasive part of the delivery.
  8. Deliver as CSV with a data dictionary. Column names, what each one means, and what you did not do. Buyers import this into a CRM; make the import boring.
  9. Re-run quarterly and sell the delta. Contact pages change. A refresh is cheaper for you than the first build and easier to sell than a new list.

Where it gets hard

Selling lists has a reputation problem, most of it earned. Your first conversation with a serious buyer is spent establishing that you are not the fifth vendor this quarter to sell them the same recycled database. Lead with the coverage note and the role/personal split, because those are the two things the recycled databases cannot show.

The market is crowded at the top. Apollo, ZoomInfo and Clearbit exist, they have enormous coverage in mainstream segments, and you will not beat them on breadth. You beat them on niches too small or too local for them to have bothered with, and on freshness, because their data on a small regional market is often years stale.

Pricing pressure is constant. Buyers anchor on per-row pricing they have seen from bulk vendors and will push you toward a few cents. Do not compete there. Sell a defined, current, hand-checked niche list at a price that reflects the sourcing work, and accept losing the buyers who want volume.

Sourcing domains is the boring part and it never automates cleanly. Directories are paginated differently every time, categories are inconsistent, and half your first day on a new niche is spent working out where the list of companies even lives.

The compliance conversation will come up in every enterprise sale. Have an answer ready: where the data came from, that it is published business contact information, how you handle removal requests, and what the buyer is responsible for once it is in their CRM. “It is all public” is not a sufficient answer and a procurement team will know it.

Limitations

  • Contact data is personal data. Under the GDPR, a named individual’s work email address is personal data even though it is published on a company website. Selling and using it needs a lawful basis — for outbound B2B this is usually legitimate interests, which requires a documented balancing assessment, not an assumption.
  • You inherit obligations you cannot discharge alone. Data subjects have rights to information, access, objection and erasure. Selling a list does not transfer those to the buyer. Decide before you start how you handle a removal request and what you tell buyers who already hold the row.
  • The ePrivacy rules on marketing are separate from the GDPR and stricter in some countries. Germany and Austria in particular restrict unsolicited commercial email to business contacts far more than the UK or the Netherlands. Selling into a market means knowing that market’s rules, and this page is not legal advice.
  • Not every list is a B2B list. Sole traders and small partnerships are frequently treated as individuals rather than companies, which changes the consent position. Niches full of one-person businesses are the riskiest to sell.
  • Extraction reads what is published, and only that. A company using a contact form, a chat widget, or an image of an address publishes nothing extractable. Those companies are gaps, not failures, and the honest move is to report them as gaps.
  • A syntactically valid address is not a deliverable address. Nothing here confirms an inbox exists or is monitored. If you promise deliverability, you need a separate verification step and you should price it separately.
  • Role addresses are usually the wrong target. They are shared, filtered, and often unmonitored. They belong in the list because they are honest data, not because they are good leads.
  • Coverage decays. People leave, contact pages are redesigned, companies fold. A list is accurate on the day it is built; six months later a meaningful fraction is wrong. Date every delivery.
  • No enrichment. You are selling contact points, not job titles, headcounts, funding rounds or technology stacks. Do not let a buyer assume otherwise during the sale.

FAQ

It can be, and it is not automatic. The common basis for B2B outbound is legitimate interests under the GDPR, which requires you to document a balancing test, provide information to the people concerned, and honour objections. Rules on the marketing message itself sit in national ePrivacy law and vary by country. Take proper advice before you sell into the EU rather than reasoning from “it is publicly available”.

What yield should I promise a client?

Promise nothing before you have measured the niche. Run 100 domains for $1.00, report the actual yield, and quote against that. A vendor who quotes a measured yield from the client’s own target list is already more credible than one quoting an average.

How do I compete with Apollo or ZoomInfo?

Do not compete on breadth. Compete on niches they cover badly — small, local, non-English, or newly formed — and on the fact that your list was built this month. Buyers who need 500 accurate rows in one segment are poorly served by a database of 200 million rows they cannot filter down to the ones that matter.

Should I sell the companies with no contact published?

Include them as marked gaps in the delivered file, and do not charge for them. Charging only for rows with a contact makes the pricing legible and makes the gap column read as honesty rather than padding.

Can I sell the same list twice?

To non-competing buyers, yes, and it is where the margin is — the sourcing work is already done. Selling the same niche to two direct competitors is how you lose both. Decide your exclusivity policy before a buyer asks, and price exclusivity separately if you offer it.

What is a realistic first month?

One niche, one buyer, one list, and a great deal of time on the domain list. The extraction is minutes. Everything either side of it is the week.

Hosted version

Every figure above is priced at what this Actor actually charges. Pay per result, no subscription, and nothing charged for inputs that return nothing — so the first costed test of this idea runs for the price of a coffee.

Start on Apify