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 Events Companies (Owners, Sales Leads and Marketing Leads)

Find the buying committee at event agencies and organizers, size the list with a free count, and pull only the rows you will email.

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

TL;DR

  • Events companies are small and owner-led. Target the owner or founder, the sales or sponsorship lead and the marketing lead at the same company.
  • Size the list with a free count, then pull a 100-row sample. The recipe takes about 25 minutes and spends 100 records at most.
  • On 2026-10-21 the free count found 6,602 mailable owners, founders and C-level people at US events companies with 11 to 500 employees, across 2,655 employers.

Prerequisites

  • A LeadOcean account. The Free plan gives 1,000 records for life, no card, 5 requests a second. Sign up at app.leadocean.io.
  • An API key stored as $LEADOCEAN_API_KEY.
  • curl and jq, or any HTTP client. Optional: the hosted MCP server at https://api.leadocean.io/mcp if you work from Claude.

Base URL is https://api.leadocean.io. Every request carries the header x-api-key.

Step 1: Map who buys at an events company

This guide is for vendors selling software, services or data to event agencies, conference organizers and trade show producers. Events is a thin-margin, deadline-driven business. Whoever owns the show owns the budget.

Most deals touch four roles:

  • Owner or founder. Signs almost everything. At a company under 50 people this is often the only approver.
  • Sales or sponsorship lead. A director or VP who sells sponsorships, exhibitor space and tickets. Buys anything that fills a floor plan or a delegate list.
  • Marketing lead. Runs registration campaigns and attendee email. Buys data, ad tools and creative services.
  • Operations lead. Runs logistics, venues and on-site teams. Runs the pilot for ticketing, badging and staffing tools.

One data note. Event companies are small. Of the 8,169 US companies in the segment below, 6,742 have 11 to 50 employees. Expect owners and founders to be your largest group.

Write the committee down as filters so every later call reads from one place.

json
{
  "segment": { "industry": ["Events Services"], "country": ["US"], "employeeRange": ["11-50", "51-200", "201-500"] },
  "roles": {
    "owner": { "seniority": ["owner", "founder", "c_suite"] },
    "sales": { "jobLevel": ["Director", "VP", "C-Team"], "jobFunction": ["Sales & Business Development"] },
    "marketing": { "jobLevel": ["Director", "VP", "C-Team"], "jobFunction": ["Advertising & Marketing"] },
    "operations": { "jobLevel": ["Director", "VP", "C-Team"], "jobFunction": ["Operations"] }
  }
}

Step 2: Resolve the industry value

Filter values are exact strings. The industry list has 534 values. A search for event returns one match, Events Services. Check it before you build on it.

bash
curl -s "https://api.leadocean.io/v1/enums/industry?q=event" \
  -H "x-api-key: $LEADOCEAN_API_KEY" | jq -r '.data.values[]'

In Claude with the MCP server connected, the free tool does the same job.

code
leadocean_list_enum_values({ name: "industry", q: "event" })

A second route covers firms that file under another industry, such as marketing agencies that run events. Use companyKeywords with a phrase like trade show to find them, then count before you widen the list.

Step 3: Size the company list for free

Count companies first. A company count is free and tells you whether the segment can carry an outbound motion.

bash
curl -s "https://api.leadocean.io/v1/companies/count" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -G --data-urlencode "industry=Events Services" \
  --data-urlencode "hqCountry=US" \
  --data-urlencode "employeeRange=11-50" \
  --data-urlencode "employeeRange=51-200" \
  --data-urlencode "employeeRange=201-500"

The same call as an MCP tool is leadocean_count_companies. It spends no records and returns breakdowns by HQ state and NAICS code, so you see where the segment clusters.

Read the NAICS breakdown before you trust the label. On 2026-10-21 the largest code in this segment was 711219 (other spectator sports), with 3,236 of the 8,169 companies. If you sell to conference and trade show producers, check the first 25 company names and add excludeCompanyName for the ones that are not your buyer.

Step 4: Build the people filter

Search takes a flat JSON body. Filters are arrays. The count=true query parameter makes the call a free sizing call: data comes back empty and meta.total is capped at 100,000.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "industry": ["Events Services"],
    "country": ["US"],
    "employeeRange": ["11-50", "51-200", "201-500"],
    "seniority": ["owner", "founder", "c_suite"],
    "limit": 1
  }'

Build one filter per committee role.

RoleFilter
Owner or founderseniority: ["owner", "founder", "c_suite"]
Sales or sponsorship leadjobLevel: ["Director", "VP", "C-Team"], jobFunction: ["Sales & Business Development"]
Marketing leadjobLevel: ["Director", "VP", "C-Team"], jobFunction: ["Advertising & Marketing"]
Operations leadjobLevel: ["Director", "VP", "C-Team"], jobFunction: ["Operations"]

Enum values are case-exact: C-Team, VP, Director. Seniority is lowercase. If you sell to organizers of a single vertical, add keywords or companyKeywords with a phrase such as conference or trade show.

Step 5: Pull a sample and check email status

Spend a small number of records to check quality before a bulk pull. Page size is 1 to 100 and pagination uses cursor.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/search" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "industry": ["Events Services"],
    "country": ["US"],
    "employeeRange": ["11-50", "51-200", "201-500"],
    "jobLevel": ["Director", "VP", "C-Team"],
    "jobFunction": ["Sales & Business Development"],
    "emailStatus": ["verified", "catch_all_valid"],
    "limit": 100
  }' | jq '(.data | length), (.data[0] | keys)'

This spends up to 100 records. Read email_status on every row. LeadOcean does not refund bounces, so send to verified first and treat catch_all as a second wave.

One search pages to 10,000 rows. If meta.depthCapped is true, narrow the filters instead of walking further. Add a state or a headcount band.

Step 6: Export the rows you will email

For lists above a sample, use an export. It takes up to 50,000 rows a request and 500,000 a day. Filters go inside filters, the row count in limit, and every row costs one record. Bulk CSV export is not on the Free plan.

bash
curl -s -X POST "https://api.leadocean.io/v1/exports" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "US events owners",
    "filters": {
      "industry": ["Events Services"],
      "country": ["US"],
      "employeeRange": ["11-50", "51-200", "201-500"],
      "seniority": ["owner", "founder", "c_suite"],
      "emailStatus": ["verified"]
    },
    "limit": 5000
  }'

You can also do this in the app at app.leadocean.io. The Exports page has a filter builder, a column picker, the record price before you start, and a CSV download. It is not a sequencer. Load the CSV into the tool you already send from.

Step 7: Match the message to the role

Events people think in show dates. Every message should name a date, a deadline or a floor plan.

  • Owner or founder. Lead with margin per event or the cost of a missed sell-out. Keep it to one number you move.
  • Sales or sponsorship lead. Lead with sponsor and exhibitor pipeline. They are measured on revenue booked before the show, so open with how you find or warm buyers.
  • Marketing lead. Lead with registrations. Offer a way to reach more of the right attendees before early-bird pricing ends.
  • Operations lead. Lead with fewer on-site failures: staffing, check-in, badging or vendor coordination. Offer a pilot on one upcoming event.

Keep each email under 90 words with one ask. Time it to the event calendar, not the quarter. Do not name a customer you have not cleared.

Sequence the committee

At a company under 50 people, write to the owner first. Delegation is short, and one yes closes it. At a company of 51 to 500, start with the sales or marketing lead, then copy the idea to the owner with the lead's problem stated in business terms.

Reach two roles at the same company within two weeks. Never send the same template to both. Avoid the weeks right before a flagship show: the whole team is on site and unreachable.

Step 8: Pick the first segment

Do not mail all 6,602 owners at once. Pick one slice, test it, then widen. Three slices work for most vendors.

  • By size. The 51 to 200 band holds 1,184 companies. Buyers there are more likely to have a separate sales lead and a budget line.
  • By state. California holds 1,570 of the 8,169 companies. A regional claim ("venues in Los Angeles") is more specific than a national one.
  • By role pair. Owner plus sales lead at the same company. Pull the owner sample, take its company domains, and pass them as domain in a second count for the sales lead filter.

Run the count for each slice before you pull. Each count is free, so ten counts cost nothing.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "industry": ["Events Services"],
    "country": ["US"],
    "employeeRange": ["51-200"],
    "jobLevel": ["Director", "VP", "C-Team"],
    "jobFunction": ["Sales & Business Development"],
    "limit": 1
  }' | jq '.meta.total, .meta.distinctCompanies'

On 2026-10-21 that slice returned 314 mailable sales leads at 169 employers. Choose the slice where the number of employers is above 300 and the mailable share is highest.

Run it from Claude

If you work in Claude with the MCP server connected, the same recipe is one prompt. The count tools are free. Search spends records, so ask for a small limit.

code
Use leadocean_count_companies for industry "Events Services", HQ US,
employee ranges 11-50, 51-200 and 201-500. Then use leadocean_count_leads
for seniority owner, founder and c_suite. Report both totals and the top
five HQ states. Do not run a search.

Keep the list clean

Re-run the free count monthly, since the dataset refreshes monthly. If the total drops, re-pull the accounts you are working and drop anyone whose title no longer matches.

Person enrich returns career history too: past roles, education and certifications. Use it to open with a real detail, such as a prior employer you both know.

What you get

Free counts run on 2026-10-21 with the MCP tools leadocean_count_leads and leadocean_count_companies. The industry filter is Events Services. Country is US and headcount is 11 to 500. People figures are mailable (verified, catch_all_valid or catch_all) unless the row says otherwise.

FilterResult
Companies: Events Services, HQ US, 11 to 500 employees8,169 companies
People: seniority owner, founder or c_suite6,602 mailable (23,199 with any email status), 2,655 employers
People: Director/VP/C-Team, Sales & Business Development1,128 mailable (3,602 with any email status), 623 employers
People: Director/VP/C-Team, Advertising & Marketing864 mailable (3,099 with any email status), 605 employers
People: Director/VP/C-Team, Operations623 mailable (2,090 with any email status), 438 employers

Of the 8,169 companies, 6,742 have 11 to 50 employees, 1,184 have 51 to 200 and 243 have 201 to 500. The state breakdown put California first (1,570), then New York (683), Florida (549), Texas (530) and Illinois (449). Of the 6,602 owner-level people, 3,629 are filed as owner and 2,973 as c_suite.

Response shape from the API reference, placeholder values only.

json
{
  "success": true,
  "data": [
    {
      "profile_data": {
        "profile_full_name": "Jane Doe",
        "profile_headline": "Founder at Acme Events"
      },
      "contact_data": {
        "has_email": true,
        "has_phone": false,
        "email_status": "verified",
        "contact_current_experiences": [
          { "company_name": "Acme Events", "company_domain": "acme.com", "job_title": "Founder" }
        ]
      },
      "meta": { "source_ids": { "person_id": "PERSON_ID" } }
    }
  ],
  "meta": { "nextCursor": "CURSOR", "depthCapped": false }
}

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-keyCheck $LEADOCEAN_API_KEY is exported and sent as the x-api-key header.
429Above the plan's rate limit (5 a second on Free, 200 on Agency)Back off and honor Retry-After.
402Out of records on the Free planThe 1,000 records are spent. Move to Solo ($97 a month) or Agency ($497 a month).
Empty resultsBad enum value, such as Events or Event Management as an industryResolve values with /v1/enums or leadocean_list_enum_values.
Export refusedOver 50,000 rows a request or 500,000 a daySplit by state or headcount band and run several exports.

FAQ

Which industry value should I use for events?

Use Events Services. It is the only industry value that matches event in the 534-value list. Add companyKeywords such as trade show or conference to catch firms filed elsewhere, and count before you widen.

How many events contacts can I get for free?

The Free plan gives 1,000 records for life, no card. Counts never spend records, so you can size the whole segment first and pull a 100-row sample.

Can I get phone numbers for event owners?

Yes, through GET /v2/people/phone or the find_phone MCP tool. Each call costs one record, including a call that finds nothing.

Does this replace my sequencer or CRM?

No. LeadOcean returns data through an API, an MCP server and an app with an Exports page. Send from the tool you already use.

Related reading: lead generation for web3, lead generation for travel, lead generation for telecom, pricing and the blog hub.

Size your events list before you spend a record

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

Get your free API key →