Pre-Black Friday: 20% off, for as long as you stayEARLYBFon Solo and AgencyEnds Nov 28Start free

How-to guide

How to Build a B2B Lead List for Proptech (Buyers, Filters and Messaging)

Pick the buying committee, count the list for free, then spend records only on the people you will email.

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

Proptech has two kinds of buyer: real estate operators who adopt the software, and technology vendors who sell into them. Pick which side you sell to before you touch a filter.

This guide builds the buying committee, finds it with LeadOcean filters, sizes the list with a free count and drafts a first line per role. It assumes you sell software or services to real estate companies.

TL;DR

  • Target three roles per account: the operating executive who owns the outcome, the technology lead who vets the tool and the owner or principal who approves spend at smaller firms.
  • Size first with a free count. On 2026-10-21, US-headquartered Real Estate companies of 201 to 5,000 employees held 68,564 mailable VPs and C-level people across 1,804 employers.
  • The recipe takes about 45 minutes and spends about 30 records, so it fits inside the Free plan's 1,000.

Prerequisites

  • A LeadOcean account on the Free plan. Sign up at app.leadocean.io, no card.
  • An API key exported as $LEADOCEAN_API_KEY.
  • curl and jq, or any HTTP client.
  • Optional: the hosted MCP server at https://api.leadocean.io/mcp if you would rather run the counts from Claude.

Step 1: Pick the buying committee

A real estate software deal is signed by an operator and vetoed by whoever runs the systems. Name the roles first.

You sellEconomic buyerChampionGatekeeper
Leasing, property management or asset softwareCOO, VP OperationsDirector of property operationsCTO, CIO, finance
Transaction, brokerage or agent toolingCEO, managing brokerVP of sales or agent experienceHead of technology
Data, infrastructure or services to proptech vendorsCEO, CTOVP Product or EngineeringFinance

Company size changes the committee. At a 20-person brokerage the owner is also the technology buyer. At 1,000 people there is an IT team, a vendor review and a CFO.

Ownership matters here. In the Real Estate industry, owners are the largest seniority group in LeadOcean: 154,138 of the 269,813 mailable US VPs, C-level people and owners on 2026-10-21. If you sell to small firms, the owner is the buyer. If you sell to larger groups, filter owners out.

LeadOcean files operators under Real Estate and agents under Real Estate Agents and Brokers. Look the exact strings up before you use them.

bash
curl -s "https://api.leadocean.io/v1/enums/industry?q=real%20estate" | jq -r '.data.values[]'

Enum values are exact strings, so a typo returns empty results. The same lookup is free through the MCP tool leadocean_list_enum_values.

Step 2: Turn the committee into filters

Write the filters as flat JSON. Every filter is an array, even when it holds one value.

json
{
  "industry": ["Real Estate"],
  "jobLevel": ["C-Team", "VP"],
  "hqCountry": ["US"],
  "employeeRange": ["201-500", "501-1000", "1001-5000"]
}

That list targets operators at mid-size and large real estate firms. To reach the technology gatekeeper, filter by title instead.

json
{
  "industry": ["Real Estate"],
  "title": ["Chief Technology Officer", "Chief Information Officer", "VP of Technology"],
  "hqCountry": ["US"],
  "employeeRange": ["201-500", "501-1000", "1001-5000"]
}

If you sell to other proptech vendors, there is no proptech industry label. Their companies sit under Software Development. Add companyKeywords set to ["proptech"], which matches words in an employer's description, specialties and tags. It only applies when the matching companies number 50,000 or fewer, so pair it with an industry and a country.

Run one list per role. Mixing a COO and a CTO into one sequence gives you a message that fits neither. Add excludeTitle values such as ["intern", "assistant"], and set excludeCompanyName for competitors and existing customers.

Step 3: Split by company size and sub-market

Real estate is not one market. A property manager, a brokerage and a developer buy different software at different sizes.

Split the list on three axes before you write anything:

  • Headcount. Use employeeRange. Under 50 people, the owner decides. From 51 to 500, a COO or head of operations runs the stack. Above 1,000, expect an IT team and procurement.
  • Industry label. Use Real Estate for operators and Real Estate Agents and Brokers for brokerages. Count both, since a small brokerage may be filed under either.
  • Region. Use hqCountry for the account and country for the person. Run a count before you plan a non-US list.

Count each cut with leadocean_count_leads before you commit. If a segment holds under a few hundred people, merge it with its neighbour. A list that small cannot support its own sequence.

Technology filters help when you sell an integration. The technologies and technologyCategories filters read what is detected on a company's website. They cover about 7.8M crawled companies, so a missing match does not prove a company lacks the tool.

Step 4: Size the list with a free count

Count before you pull. A count costs no records and can run as often as you like.

bash
curl -s "https://api.leadocean.io/v1/people/search?count=true" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "industry": ["Real Estate"],
    "jobLevel": ["C-Team", "VP"],
    "hqCountry": ["US"],
    "employeeRange": ["201-500", "501-1000", "1001-5000"],
    "limit": 1
  }' | jq '.meta'

count=true goes in the query string. The JSON body rejects unknown fields. The response has no rows, only meta.total (capped at 100,000) and meta.countOnly: true. A people count also carries meta.distinctCompanies, the number of employers the matched people span.

For the company side, GET /v1/companies/count takes the company-search filters and returns an exact total with breakdowns by industry, headcount band, HQ country and HQ state. Use it to see where the accounts sit before you pick a region.

Step 5: Pull a 25-row test batch

Pull a small batch first. Read the titles. If half of them are the wrong role, tighten the filters before you spend more.

bash
curl -s "https://api.leadocean.io/v1/people/search" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "industry": ["Real Estate"],
    "title": ["Chief Operating Officer", "VP of Operations"],
    "hqCountry": ["US"],
    "employeeRange": ["201-500", "501-1000", "1001-5000"],
    "limit": 25
  }' > batch.json

jq '.data | length' batch.json

A page of 25 is 25 records. Page with cursor from meta.nextCursor when you want more. One search pages to 10,000 rows, and the last page carries meta.depthCapped: true. Narrow the filters instead of walking further.

Each row carries an email status. Send to verified and catch_all_valid. Read the status before you send, because LeadOcean does not credit back bounces.

Step 6: Enrich the champions you will contact

Enrich only the people you will contact. Enrich takes exactly one of linkedin_url, email, phone or person_id.

bash
curl -s -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_FROM_SEARCH", "reveal_email": true}'

Enrich also returns career history in resume_data: past roles, education, certifications and awards, each when held. Real estate careers are long and local. A prior role at a named brokerage or a property group gives you a better opener than a job title. An enrichment that finds nothing is a 404 and costs nothing.

For a phone number, call GET /v2/people/phone. A v2 contact call costs one record even when it finds nothing.

Step 7: Write messages that fit the buyer

Real estate operators are busy and practical. Open with a task your product removes, in hours, not a claim about the industry.

BuyerTheir pressureFirst line angle
COO or VP OperationsMargins, vacancy, staff turnoverName the one manual task you take off the team
CTO or CIOTool sprawl, integrations, security reviewSay what you connect to, not what you add
Owner or principalCash, time, no IT teamOffer the smallest first step, with a price
VP of sales or brokerage leadAgent productivity, lead flowLead with a number you can show on a trial account

Keep claims you can prove. Do not cite a customer or a result you cannot show. Operators ask for references, and a vague claim ends the thread.

Sequence by role, not by company. Send the technology lead a note about integrations. Send the COO a note about time and cost. When one replies, you can name the others at the account.

Timing follows the property calendar. Leasing season, budget planning and the weeks after a lease-up are busy. Send in the quieter stretches, and check your list against local seasonality.

A three-line email works better than a pitch. One line on their situation, one on what you do, one question.

text
Subject: Move-in paperwork at Acme

Jane, property teams at your size often spend days a month on
move-in paperwork. We automate that step inside your current system.
Worth a short look, or is leasing ops not on your list this quarter?

The names above are placeholders. Replace them with the fields from your batch.

Step 8: Export the full list

When the test batch reads right, export the rest. Bulk CSV export is not on Free; it comes with Solo at $97 a month and with Agency at $497 a month. On Free, page the search endpoint inside your 1,000 records.

bash
curl -s -X POST "https://api.leadocean.io/v1/exports" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "filters": {
      "industry": ["Real Estate"],
      "title": ["Chief Operating Officer", "VP of Operations"],
      "hqCountry": ["US"],
      "employeeRange": ["201-500", "501-1000", "1001-5000"]
    },
    "limit": 5000
  }'

An export takes up to 50,000 rows a request and 500,000 a day. The app at app.leadocean.io has an Exports page with a filter builder, a column picker and the record price before you start.

What you get

These are free counts from the LeadOcean MCP tools on 2026-10-21. They count mailable people (verified, catch_all_valid or catch_all email), not everyone.

FilterMailable peopleEmployers
Real Estate, US HQ, 201 to 5,000 employees, VP or C-Team68,5641,804
Real Estate, US HQ, 201 to 5,000 employees, title CTO, CIO or VP of Technology353206
Real Estate Agents and Brokers, US HQ, VP or C-Team (includes owners)1,699759
Software Development, text match "proptech", US HQ, VP or C-Team2,250264

Without the email condition, the first filter matches 220,059 people and the fourth matches 5,512. The gap is people with no usable address. The title filter in the second row matches by title words, so it includes some people below executive level.

The shape of one search row follows (response shape from the API reference, placeholder values).

json
{
  "success": true,
  "data": [
    {
      "profile_data": { "profile_full_name": "Jane Doe", "profile_headline": "COO at Acme" },
      "contact_data": { "has_email": true, "has_phone": false, "email_status": "verified" }
    }
  ],
  "meta": { "nextCursor": "CURSOR" }
}

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-keyRe-export $LEADOCEAN_API_KEY and check the header name
429Above the plan's rate limit (5 requests a second on Free, 200 on Agency)Wait for Retry-After, then slow the loop
402The 1,000 Free records are spentMove to Solo or Agency, or narrow the pull
Empty resultsA misspelled enum value such as Proptech or Real Estate Agents as an industryLook the value up with /v1/enums/industry or leadocean_list_enum_values
Export refusedOver 50,000 rows a request or 500,000 a daySplit by country or headcount band and run several exports
Export rejected on FreeBulk CSV export is not on FreePage the search endpoint, or move to Solo

FAQ

Is there a proptech industry filter?

No. Operators sit under Real Estate and brokerages under Real Estate Agents and Brokers. Proptech vendors are filed as software companies, so use Software Development with a companyKeywords match and check the result with a count.

Does the count include people I can email?

The default count includes only people whose best email is verified, catch_all_valid or catch_all. Pass emailStatus to widen it, and label the number by what you filtered.

How many records does this guide spend?

About 30: a 25-row test batch plus a few enrichments. Counts, enum lookups and enrichments that find nothing cost no records.

Can I find real estate buyers outside the US?

Yes. Swap country for another ISO code or use continent. Run a count first to see how many records the country holds.

Where is the phone number?

Call GET /v2/people/phone. Each call costs one record, including a call that finds no number.

Count your proptech list free, then pull the first 25 contacts

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

Get your free API key →