Explainer

How B2B Contact Data Is Collected

Where contact records come from, how they are checked, and why two providers can disagree about the same person. Plus the fields that show you a record's age and quality.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

B2B contact data is collected by gathering public facts about people and companies, linking them into one record per person, and then checking whether the email and phone details still work. This page walks through those steps and shows which parts you can inspect yourself.

Key takeaways

  • Most records are assembled from several sources, not read from one master list. Public web pages, registries and provider partnerships all feed in.
  • A found email is a guess until it is checked. Verification sets its status, and the status matters more than the address.
  • Every record ages. Job changes and closed mailboxes make old rows wrong, so the date of the last fetch is a quality signal.
  • LeadOcean exposes fetched_at and email_status on each record, and refreshes the dataset monthly.

What it is

B2B contact data collection is the process of gathering names, job titles, company details, emails and phone numbers from many sources, merging them into one record per person, and verifying the contact fields.

Collection is not the same as buying a list. A list is a finished product. Collection is the pipeline that makes it, and the quality of that pipeline decides how many of your emails bounce and how many calls connect.

How it works

Most providers run the same five stages. The tools differ, the order rarely does.

  1. Gather public facts. Crawlers read company websites, team pages, press releases, job boards and public profiles. Registries and filings add company names, addresses and officers.
  2. Take in contributed data. Some vendors add contacts that users share, such as address books or CRM syncs, and data bought from partners. The terms and consent behind that data differ by vendor.
  3. Match and merge. The same person shows up under three spellings and two employers. Matching rules join them into one record and pick a winner when fields conflict.
  4. Find the email and phone. Providers read an address from a source, or guess it from the company's pattern, such as first.last@acme.com. Phones come from the same sources and from partners.
  5. Verify and date-stamp. A check asks the mail server whether the mailbox exists and assigns a status. The record keeps the date it was last fetched.

Some tools skip building a database and fetch at request time. Crustdata describes crawling at the moment of request and combining multiple sources into one response (Crustdata, September 2026). Waterfall tools ask several providers in sequence and pay only when one finds a match (Clay, September 2026). Both are collection methods, only moved to a different point in time.

A worked example

Say you want the head of sales at a fictional company, Acme (acme.com). Here is how one record for Jane Doe could be built.

  1. A crawler reads acme.com/team and finds "Jane Doe, VP Sales".
  2. A public profile confirms the title and adds a city.
  3. Matching joins both into one person and ties her to the Acme company record.
  4. The provider tries jane.doe@acme.com from Acme's known pattern.
  5. A mail check says the server accepts it. The record gets the status verified and a fetch date.

If step 5 had found that Acme accepts mail for any address, the status would be catch_all. The address still looks fine, but nobody confirmed that this mailbox exists. That gap is why the status field exists.

Collected data vs verified data

People treat these as the same thing. They are two stages, and mixing them up is how lists fill with bounces.

CollectedVerified
What it meansA value was found or inferredA check ran against the value
Examplejane.doe@acme.com guessed from a patternMail server confirmed the mailbox
Source of errorWrong pattern, old job, wrong personServers that accept all mail
What you can readA field valueA status such as verified or risky
Safe to send toNot on its ownDepends on the status

A collected address with no status is a lead, not a send list. For the sending side, see what a mailable contact is.

When it matters

Choosing a provider

Two providers can return different emails for the same person because their sources differ. Ask where records come from, how often they refresh, and what the status field means. Our waterfall provider roundup covers tools that combine several sources, and the contacts database comparison covers single databases.

Judging freshness

People change jobs, and companies close mailboxes. A record fetched last month is more reliable than one fetched last year. Look for a per-record date, not just a vendor claim that the data is "fresh".

Building a send list

Filter by email status before you pull rows. The untapped leads database roundup compares how vendors handle this. A list sized by "emails found" overstates what you can send to.

Handling privacy rules

Collecting data about people triggers privacy law in many places. Under the GDPR, a controller that did not get data from the person must tell them within a reasonable period, at the latest within one month (Article 14). Legitimate interest is one lawful basis, and it is weighed against the person's rights (Article 6). Both articles are in the full text of Regulation (EU) 2016/679 on EUR-Lex (checked September 2026). This is not legal advice. Ask a lawyer about your market and your use.

How LeadOcean handles it

LeadOcean stores a person as one record with an email_status and a fetched_at date. The dataset holds 693M people and 63M companies, and it is refreshed monthly.

You can read the quality signals before you spend anything on a campaign. The status filter is emailStatus, and it takes 13 values. By default, the MCP tool count_leads counts verified, catch_all_valid and catch_all.

To read one record, enrich it by person_id and ask for the email:

bash
curl -X POST "https://api.leadocean.io/v1/people/enrich" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "person_id": "'"$PERSON_ID"'",
    "reveal_email": true
  }'

Read email_status before you send and fetched_at before you trust a job title. Each person returned counts one record. A person we hold nothing for is a 404 and costs nothing.

To pull a whole segment, use POST /v1/exports, or the Exports page at app.leadocean.io. It has a filter builder, a column picker and the record price before you start. LeadOcean gives no refund or credit for bounced emails, so filter on status first. Free is 1,000 records, one-off, no card. Pro is $499 a month. See /pricing for what each includes, and browse the blog for related guides.

FAQ

Where does B2B contact data come from?

It comes from public web pages and profiles, company registries, data partners, and contacts that users share with vendors. Providers merge these into one record per person and then verify the email and phone fields.

How are business emails found?

Either a source lists the address, or the provider guesses it from the company's email pattern. A mail check then sets a status. An unverified guess is a candidate, not a confirmed address.

How accurate is collected B2B data?

It varies by provider and by field, and it decays over time. Titles and employers change faster than company names. Use the per-record date and the email status to judge a row, not a headline accuracy figure.

How often is B2B data refreshed?

It depends on the vendor. Some refresh in batches, some fetch at request time. LeadOcean refreshes its dataset monthly, and each record carries its own fetched_at date.

Is it legal to collect B2B contact data?

It depends on the country, the data and how you use it. Privacy laws such as the GDPR set duties for people who hold personal data, including transparency and a lawful basis. This is not legal advice, so check with a lawyer.

See how fresh and sendable your contacts really are

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →