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

How-to guide

How to Find a Head of RevOps's Email Address (2026)

Size the audience for free, pull the Heads of RevOps with a mailable address, reveal the email and check its status before you send.

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

You find a Head of RevOps's email by looking it up in a data source, not by guessing it. A lookup returns an address with a deliverability status. A guess returns a mailbox that may not exist.

Head of RevOps emails come from four places: a data provider, a pattern guess at the company domain, a shared inbox on the company site, or a personal address. Only the first scales, so this guide builds on it with the LeadOcean API.

TL;DR

  • Search by title, then reveal the email only for the people you will write to. Do not guess patterns.
  • It takes about 15 minutes and about 10 LeadOcean records: 5 search rows and 5 reveals. The count in Step 1 is free.
  • Read email_status before you send. Send to verified. Treat catch_all as a risk you choose, and skip the rest.

Prerequisites

  • A LeadOcean account. The free plan gives you 1,000 records, one-off, with no card: start free.
  • An API key in your shell: export LEADOCEAN_API_KEY=... (the app lists your keys).
  • curl and jq. Every request goes to https://api.leadocean.io with the x-api-key header.

Step 1: Count the mailable Heads of RevOps

Count first. It is free and tells you if the filter is worth running. Send count=true as a query parameter with limit 1 in the body.

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 '{
    "title": ["Head of Revenue Operations", "Head of RevOps"],
    "salesRegion": ["NORAM"],
    "limit": 1
  }' | jq '.meta | {total, totalIsExact}'

Change salesRegion to EMEA, APAC or LATAM to size each region. We ran the same filters through the free MCP count_leads tool on 21 October 2026. These are mailable counts: emailStatus verified, catch_all_valid or catch_all, the default.

RegionMailable Heads of RevOps
NORAM318
EMEA196
APAC57
LATAM30
All regions620

The four regions add to 601. The other 19 match the title but sit outside all four regions. Without the email condition the same title matches 1,291 people, so about half hold a mailable address.

The title filter matches only the words you list. Many RevOps leaders are titled "VP Revenue Operations" or "Director of Revenue Operations". Add those titles if you want them. With all four titles the worldwide mailable count rises to 2,039 people at 1,808 companies (count_leads, 2026-10-21).

Step 2: Pull a first page of Heads of RevOps

Run the search without count. Each person returned costs one record, so keep limit small while you test. Add emailStatus to keep only addresses worth sending to.

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 '{
    "title": ["Head of Revenue Operations", "Head of RevOps"],
    "country": ["US"],
    "emailStatus": ["verified"],
    "limit": 5
  }' > revops.json

jq '.meta | {count, credits, nextCursor}' revops.json

Search rows are thin. They carry has_email and email_status but no address. Pass meta.nextCursor back unchanged to fetch the next page.

Step 3: Reveal the email for the people you want

Enrich each person by person_id. Send reveal_email=true, or the call returns no address. It costs one record per person.

bash
PERSON_ID=$(jq -r '.data[0].meta.source_ids.person_id' revops.json)

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\", \"reveal_email\": true}" > reveal.json

jq '.data.contact_data.contact_emails' reveal.json

There is no name plus domain lookup. If you start from a company list, search by domain first, then enrich by person_id.

Step 4: Verify before you send

Check the status on every address. This reads the file from Step 3, so it spends nothing. A guessed pattern (first.last@, flast@) may point at a mailbox that does not exist. A found address with a status is better. A shared inbox such as revops@acme.com reaches a team queue, not the person, so do not treat it as a substitute.

bash
jq -r '.data.contact_data.contact_emails[]
  | select(.type == "work")
  | [.email, .status, .verified_batch_date] | @tsv' reveal.json

Use this rule:

  • verified: send.
  • catch_all_valid: the mailbox was confirmed on a domain that accepts everything. Send.
  • catch_all: the domain accepts everything, so a bounce is possible. Send a small batch and watch it.
  • risky, unknown, untested, role, invalid: do not send.

There is no refund for bounced emails, so this step protects your sender reputation.

Step 5: Export the whole list

When the count looks right, export instead of paging. One request takes up to 50,000 rows, with 500,000 a day. 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": "head-of-revops-noram-verified",
    "filters": {
      "title": ["Head of Revenue Operations", "Head of RevOps"],
      "salesRegion": ["NORAM"],
      "emailStatus": ["verified"]
    },
    "limit": 300,
    "preset": "full",
    "caps": {"emails": 1}
  }'

Poll GET /v1/exports/{id} until status is done, then download the CSV. The headers are email_1_address and email_1_status. You can build the same export in the app (app.leadocean.io, Exports page), which shows the record price before you start.

What you get

The free count for the NORAM filter, from the MCP count_leads tool on 21 October 2026:

json
{
  "total": 318,
  "totalIsExact": true,
  "distinctCompanies": 303,
  "credits": 0,
  "totalAll": 543
}

A search row, as a response shape from the API reference. Values are placeholders and profile_data is abbreviated:

json
{
  "success": true,
  "data": [
    {
      "profile_data": {},
      "contact_data": {
        "has_email": true,
        "has_phone": false,
        "email_status": "verified",
        "email_type": "work"
      },
      "meta": { "source_ids": { "person_id": "1234567" } }
    }
  ],
  "meta": { "count": 1, "credits": 1, "nextCursor": "..." }
}

After the reveal, contact_data.contact_emails holds objects with email, type, status and verified_batch_date, for example jane.doe@acme.com, work, verified.

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-key headerSend the key in x-api-key, not as a bearer token. Check $LEADOCEAN_API_KEY is set.
429Above the plan's rate limit (5 a second on Free, 200 on Agency)Honour the Retry-After header and slow the loop.
402Out of records. The 1,000 free records are one-offCount first and lower limit, or move to Solo at $97 a month or Agency at $497 a month.
Empty dataA filter value that is not an exact enum string, such as C-Level instead of C-TeamCheck the exact values with GET /v1/enums or the free list_enum_values tool.
export_limit_rows (400)limit above 50,000 rows in one exportSplit into several exports with narrower filters.
export_limit_daily (429)More than 500,000 rows exported in a dayWait for resetsAt in the error, or ask support.

FAQ

What title should I search for to find a Head of RevOps?

Search Head of Revenue Operations and Head of RevOps. Add VP Revenue Operations and Director of Revenue Operations to widen the list. Sizing is free, so test each spelling.

Does LeadOcean guess email patterns?

No. It returns the address it holds, with a status. If it holds nothing for a person, enrich returns a 404 and costs nothing.

How many records does one Head of RevOps cost?

One for the search row and one to reveal the email, so two if you do both. An export row costs one record and includes the address. Counts are free.

Can I find a Head of RevOps's phone number too?

Yes. GET /v2/people/phone returns numbers. It costs one record per call, including a call that finds nothing.

Why is the Head of RevOps list so small?

Many companies give the job a VP or Director title instead. The two Head spellings return 620 mailable people worldwide, and adding the VP and Director titles lifts that to 2,039. Widen the title array before you decide the market is too thin.

Does the record show past roles?

Yes. Since 2026-10-17 person enrich returns career history in resume_data: past roles with title, company name and dates, plus education and certifications when held. Past employers carry no company_id yet.

Where do I go for other roles?

See the guides for a Head of Product, a Head of Growth and a Head of Talent Acquisition. More recipes live in the blog hub. Pricing is on the pricing page.

Count the Heads of RevOps you can mail today, free

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

Get your free API key →