Hospitality buyers split into owners, operators and brands, and each group buys differently. Build one list per group, not one list for "hotels".
This guide picks the buying committee, finds it with LeadOcean filters, sizes the list with a free count and drafts the first message for each role.
TL;DR
- Target three groups: owners and asset managers, management companies and operators, and brands and chains. Each has its own committee.
- Size first with a free count. On 2026-10-21, the Hospitality and Hotels and Motels industries held 60,154 mailable C-level, VP and director people in the US at companies with 51 to 5,000 employees, across 4,031 companies. Hotel keywords cut that to 43,756 people at 2,484 companies.
- 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
Hotel deals rarely close on one signature. Pick the roles before you touch a filter.
| Buyer type | Economic buyer | Champion | Gatekeeper |
|---|---|---|---|
| Owner or asset manager | Owner, principal, CEO | VP Asset Management | CFO, controller |
| Management company or operator | COO, VP Operations | Director of Revenue or Rooms | Procurement, IT |
| Brand or chain | CEO, SVP Operations | VP Technology or Guest Experience | Regional and franchise heads |
At a single property the General Manager decides most spend under a set limit. Above that limit the decision moves to the management company or the owner. Match your deal size to the level you target.
LeadOcean has industry values close to this segment. Look the exact strings up before you use them.
curl -s "https://api.leadocean.io/v1/enums/industry?limit=500" \
-H "x-api-key: $LEADOCEAN_API_KEY" | jq -r '.data.values[]' | grep -iE "hospitality|hotel|lodging|resort|restaurant|food and beverage"Enum values are exact strings. The same lookup is free through the MCP tool leadocean_list_enum_values. On 2026-10-21 a search for "hotel" returned one value, Hotels and Motels. Hospitality is a separate value and is far larger.
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": ["Hospitality", "Hotels and Motels"],
"jobLevel": ["C-Team", "VP", "Director"],
"employeeRange": ["51-200", "201-500", "501-1000", "1001-5000"],
"country": ["US"]
}Related values for a second pass: Food and Beverage Services, Restaurants, Leisure; Travel and Tourism and Accommodation and Food Services. Keep them in separate lists, because a restaurant group and a hotel brand want different things.
Narrow by function when one product has one owner. A revenue tool sells to Sales & Business Development and Finance & Accounting. A staffing or scheduling tool sells to Operations and Human Resources.
The Hospitality label is broad. On 2026-10-21 the free company count put 11,471 US companies with 51 to 5,000 employees in the two industries. Of those, 6,611 carried NAICS 621111 (offices of physicians) as their primary code, and 1,955 carried 721110 (hotels and motels). The label is not only hotels.
Add company keywords to cut it down. With companyKeywords set to hotel, resort and lodging, the same company count fell to 5,541. Read the titles and company names in your first batch before you trust the list.
{
"industry": ["Hospitality", "Hotels and Motels"],
"companyKeywords": ["hotel", "resort", "lodging"],
"jobLevel": ["C-Team", "VP", "Director"],
"employeeRange": ["51-200", "201-500", "501-1000", "1001-5000"],
"country": ["US"]
}Step 3: Size the list with a free count
Count before you pull. A count costs no records and can run 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": ["Hospitality","Hotels and Motels"],
"companyKeywords": ["hotel","resort","lodging"],
"jobLevel": ["C-Team","VP","Director"],
"country": ["US"],
"limit": 1
}' | jq '.meta'count=true goes in the query string. The JSON body rejects unknown fields. companyKeywords matches words in the employer's description, specialties, tags or name, and applies only when the matching companies number 50,000 or fewer. Keep an industry or a country in the filter so it applies. The response has no rows, only meta.total (capped at 100,000) and meta.countOnly: true.
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 4: 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.
curl -s "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"industry": ["Hotels and Motels"],
"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 returns an email status. Send to verified and catch_all_valid. Read the status before you send, because LeadOcean does not credit back bounces.
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. A prior role at a flagship brand or a hospitality degree 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. A v2 contact call costs one record even when it finds nothing.
Step 6: Write messages that fit the buyer
Hospitality buyers answer to occupancy, RevPAR, labor cost and guest scores. Open with the metric they own.
| Buyer | Their pressure | First line angle |
|---|---|---|
| Owner, asset manager | Return on the asset, capex | One number: cost saved or revenue added per room |
| COO, VP Operations | Labor cost, consistency across sites | Hours saved per property per week |
| Director of Revenue | Rate, channel mix, direct share | Direct booking share or rate accuracy |
| General Manager | Guest scores, staffing | A fix that needs no new system |
Time the send. Avoid peak season and holidays, when property teams are busiest, and keep the email under 80 words.
Plain example for an operator:
Subject: Fewer hours on shift handovers
Hi Jane,
Acme Hotels runs front desk handovers at every property. We replace the
paper log with a single shared view, so the next shift starts informed.
Open to a 15-minute call next month?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 type and run each segment on its own copy.
- Owners and asset managers.
jobLevelC-Team,seniorityowner or founder. Lead with return and cost. - Management companies. VP and Director titles in operations, revenue and finance. Lead with time saved across many properties.
- Brands and chains. Headcount 1001-5000, VP technology and operations titles. Lead with rollout and integration.
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: Rank accounts before you send
A list of 60,000 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 the 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.
What you get
Output of leadocean_count_leads on 2026-10-21 for the Step 2 industries, jobLevel C-Team, VP and Director, country US and four headcount bands from 51-200 to 1001-5000. The count includes only people whose best email is verified, catch_all_valid or catch_all.
{
"total": 60154,
"totalIsExact": true,
"totalAll": 182270,
"distinctCompanies": 4031,
"facets": {
"seniority": [
{ "value": "director", "count": 31082 },
{ "value": "c_suite", "count": 18849 },
{ "value": "owner", "count": 5812 },
{ "value": "vp", "count": 4411 }
]
}
}The same filters without the headcount bands and the US limit gave 266,344 mailable people at 42,207 companies on the same date.
Adding companyKeywords hotel, resort and lodging to the US count above cut it to 43,756 mailable people at 2,484 companies (125,488 with no email condition). That is the list to start from if you sell to hotels. The company side, from leadocean_count_companies with the same keywords, showed 5,541 US companies, 1,710 of them with NAICS 721110 (hotels and motels). Only 137 US companies in these size bands are filed under the Hotels and Motels industry itself.
Record shape, from the API reference (placeholder values):
{
"success": true,
"data": [
{
"profile_data": {
"profile_full_name": "Jane Doe",
"profile_headline": "VP Operations at Acme Hotels"
},
"contact_data": {
"has_email": true,
"has_phone": false,
"email_status": "verified",
"contact_current_experiences": [
{ "company_name": "Acme Hotels", "company_domain": "acme.com", "job_title": "VP Operations" }
]
},
"meta": { "source_ids": { "person_id": "PERSON_ID" } }
}
],
"meta": { "nextCursor": "CURSOR", "depthCapped": false }
}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 "Hotels" | Resolve the value with list_enum_values first |
unsupported_filters on a count | A filter like 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 headcount band or add a job function |
FAQ
Is there a hotel industry filter?
Yes, two. Hotels and Motels is narrow, at 137 US companies in the size bands above on 2026-10-21. Hospitality is much larger and broader. Use both with companyKeywords such as hotel and resort, and check the first batch for off-target companies.
How many records does this cost?
A count costs none. The test batch costs 25, plus a few enrichments, about 30 in all. The Free plan holds 1,000 records for life.
Can I export the whole list?
Bulk CSV export is not on Free. Solo at $97 a month includes it, and Agency at $497 a month allows 50k rows a file. An export takes up to 50,000 rows a request and 500,000 a day. See pricing.
Do I need a CRM or sequencer?
LeadOcean returns data, not a sequencer. The app at app.leadocean.io has an Exports page with a filter builder and CSV download. Load the file into the tool you already send from.
Count your hospitality buyers free, then pull the first 25
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →