Commercial real estate (CRE) sells to three groups: brokerages, owners and landlords, and property managers. Each has a different committee, so you build one list per group.
This guide picks the roles, finds them with LeadOcean filters, sizes the list with a free count and drafts a first message for each.
TL;DR
- Target brokerages, owners and landlords, and property managers separately. Titles, deal cycles and budgets differ.
- Size first with a free count. On 2026-10-21,
Commercial Real Estateheld 1,477 mailable C-level, VP and director contacts at 78 US firms of 51 to 1,000 people. - 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. curlandjq, 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
CRE deals rarely close on one signature. Name the roles before you touch a filter.
| Buyer group | Economic buyer | Champion | Gatekeeper |
|---|---|---|---|
| Brokerage | Managing Principal, CEO, President | Director of Operations or Technology | Finance, compliance |
| Owner or landlord | CEO, Chief Investment Officer | VP Asset Management | Finance, legal |
| Property manager | President, COO | Director of Property Operations | Procurement, accounting |
Most CRE firms are small. In the US, 3,137 of 4,079 companies in the Commercial Real Estate industry have 1 to 10 people (count on 2026-10-21). A solo broker has no committee and often no published work email. If your product needs a committee, start at 51 people or more.
LeadOcean has no single CRE bucket for every kind of firm. Look up the exact strings first, because enum values are exact.
for q in "commercial real estate" "non-residential" "real estate agents"; do
curl -s -G "https://api.leadocean.io/v1/enums/industry" \
--data-urlencode "q=$q" \
-H "x-api-key: $LEADOCEAN_API_KEY" | jq -r '.data.values[]'
doneThe same lookup is free through the MCP tool leadocean_list_enum_values. On 2026-10-21 a search for "real estate" returned six values. The ones used here are Commercial Real Estate, Leasing Non-residential Real Estate and Real Estate Agents and Brokers. The others are Leasing Residential Real Estate, Real Estate and Real Estate and Equipment Rental Services.
Step 2: Turn the committee into filters
Write the filters as flat JSON. Every filter is an array, even when it holds one value.
{
"industry": ["Commercial Real Estate"],
"jobLevel": ["C-Team", "VP", "Director"],
"employeeRange": ["51-200", "201-500", "501-1000"],
"country": ["US"]
}Add Leasing Non-residential Real Estate when you sell to landlords and owners. It is the largest bucket by far. On 2026-10-21 it held 9,781 of 15,297 mailable senior contacts across three CRE-related industries in the US. Many are small holding entities, so pair it with a headcount filter and read the test batch.
Leave out Real Estate and Leasing Residential Real Estate unless you also sell to residential teams. They pull in agents and landlords of single homes.
Narrow by function when one product has one owner. A lease-accounting tool sells to Finance & Accounting. A tenant-experience app sells to Operations and Marketing. Check the exact function names with list_enum_values.
Step 3: Size the list with a free count
Count before you pull. A count costs no records and you can run it as often as you like.
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": ["Commercial Real Estate"],
"jobLevel": ["C-Team","VP","Director"],
"country": ["US"],
"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. It 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 firms sit before you pick a market.
Step 4: Pull a 25-row test batch
Pull a small batch first. Read the titles. If half are the wrong role, tighten the filters before you spend more.
curl -s "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"industry": ["Commercial Real Estate"],
"jobLevel": ["C-Team","VP","Director"],
"employeeRange": ["51-200","201-500"],
"country": ["US"],
"limit": 25
}' > batch.json
jq '.data | length' batch.jsonA 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 contact_data.email_status. Send to verified and catch_all_valid. LeadOcean does not credit back bounces, so read the status before you send.
Step 5: 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.
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 and certifications. In CRE, a past role at a large brokerage or a named fund is 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. Brokers live on their mobiles, so phone is worth it for your top accounts. A v2 contact call costs one record even when it finds nothing.
Step 6: Write messages that fit the buyer
CRE buyers watch deal flow, vacancy and cost per square foot. Open with the number they watch this quarter.
| Buyer | Their pressure | First line angle |
|---|---|---|
| Brokerage principal | Agent retention, commission split, deal count | Closing more deals per broker |
| Owner or asset manager | Vacancy, net operating income, capital calls | Filling space or cutting operating cost |
| Property manager | Tenant turnover, maintenance cost, reporting | Hours saved on tenant requests and reports |
| Finance lead | Lease accounting, month-end close | Fewer manual steps per lease |
Timing matters. Year-end is closing season for deals and budgets. Send planning pitches in the autumn and keep the email under 80 words.
Plain example for a brokerage:
Subject: More tours booked at Acme Realty
Hi Jane,
Acme Realty runs most tour scheduling by phone and email. We help
brokerages your size book tours without the back and forth.
Open to a 15-minute call before year-end?Names, domain and subject are placeholders. Use your own product and a claim you can back up.
Step 7: Split the list into three campaigns
Do not send one message to the whole list. Split by buyer group and run each segment on its own copy.
- Brokerages. Industry
Commercial Real EstateandReal Estate Agents and Brokers,jobLevelC-Team. Principals read their own email, so keep it short and lead with agent productivity. - Owners and landlords. Industry
Leasing Non-residential Real Estate,jobLevelC-Team and VP, headcount 11 and up. Lead with vacancy or operating cost. - Property managers. Industry
Commercial Real Estatewith a title filter such as "Property Management" or "Operations". Lead with hours saved.
Run the count again for each segment. The totals will not add up to the combined list, because a person can match more than one filter set. Use the combined count for planning and the segment counts for sending.
Step 8: Check where the firms sit
CRE is local. A free company count by HQ state shows where the firms are before you pick a market. POST /v1/companies/count takes the same filters as a JSON body.
curl -s -X POST "https://api.leadocean.io/v1/companies/count" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{"industry":["Commercial Real Estate"],"hqCountry":["US"]}' | jq '.data.facets.hq_state'Pick two or three states and run them as separate sends. Name the local market in the first line, so the email reads as written for that state.
Step 9: Rank accounts before you send
A list of 1,477 people is too many to write by hand. Rank the accounts and send to the top group first.
- Count people per company in the test batch. An account with three matching titles is a committee you can reach from several sides.
- Prefer a work email marked
verified. It bounces less than a catch-all address. - Use
GET /v1/companies/{domain}/peoplefor your top accounts. It lists the other people at one domain, so you can add missing roles. - Drop accounts where the only match is a Staff or Other level title.
Then send in batches of 50 to 100 and read the replies. If replies cluster on one role, move effort toward it.
Keep a note of which industry value each reply came from. After two or three batches you will know whether landlords or brokerages answer your offer, and you can drop the weaker segment from the next pull.
What you get
Output of leadocean_count_leads on 2026-10-21 for industry Commercial Real Estate, jobLevel C-Team, VP and Director, headcount 51-1000 and country US. The count includes only people whose best email is verified, catch_all_valid or catch_all.
{
"total": 1477,
"totalIsExact": true,
"totalAll": 4141,
"distinctCompanies": 78
}Drop the headcount filter and the same count on the same date is 3,622 people at 894 companies. Adding Leasing Non-residential Real Estate and Real Estate Agents and Brokers raises it to 15,297 people at 4,256 companies. Adding the Finance & Accounting function to the first filter set cuts it to 61 people at 20 companies.
Response shape from the API reference (placeholder values). Search rows carry no contact points. Enrich with reveal_email for the address.
{
"success": true,
"data": [
{
"profile_data": {
"profile_full_name": "Jane Doe",
"profile_headline": "Managing Principal at Acme Realty",
"profile_url": "https://www.linkedin.com/in/jane-doe"
},
"contact_data": {
"has_email": true,
"has_phone": false,
"email_status": "verified",
"email_type": "work"
},
"meta": { "source_ids": { "person_id": "1234567890" } }
}
],
"meta": { "count": 1, "credits": 1, "nextCursor": "CURSOR" }
}Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key header | Check $LEADOCEAN_API_KEY is exported and sent in the x-api-key header |
| 429 | More than the plan's rate limit (5 requests a second on Free, 200 on Agency) | Wait for the Retry-After seconds, then retry slower |
| 402 | The 1,000 Free records are spent | Move to a paid plan or reduce the pull; counts still work |
| Empty results | An enum value is not an exact string, such as "CRE" or "Commercial Property" | Resolve the value with list_enum_values first |
unsupported_filters on a count | A filter such as fundingType or hqCity is not supported in people counts | Drop it and count without it |
meta.depthCapped: true | One search stops at 10,000 rows | Split by country or headcount band |
FAQ
Is there a commercial real estate industry filter?
Yes, and it is one of several. LeadOcean has 534 industry values. CRE sits mainly across Commercial Real Estate, Leasing Non-residential Real Estate and Real Estate Agents and Brokers. Build the segment from those and check the title mix on a 25-row batch.
Why are most CRE firms so small?
Brokerages and owner entities are often one to ten people. On 2026-10-21, 3,137 of 4,079 US companies in Commercial Real Estate had 1 to 10 people. Filter by headcount if you need a committee.
How many records does this cost?
About 30: 25 for the test batch and a handful of enrichments. Counts, enum lookups and GET /v1/companies/count are free.
Can I download the whole list as a CSV?
Yes, on a paid plan. Bulk CSV export is not on Free. Solo is $97 a month and Agency is $497 a month, both with a fair-use pace instead of credits. See pricing.
Related
- Hub: all lead generation guides
- Lead generation for web3
- Lead generation for travel
- Lead generation for telecom
Count your commercial real estate buyers free, then pull only the ones you will email
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →