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

How-to guide

How to Find an Office Manager's Email Address (2026)

Look the address up instead of guessing it. Six steps take you from a company domain to an Office Manager email with a deliverability status, plus the patterns to fall back on.

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

The fastest way to find an Office Manager's email is to look it up in a contact database, then verify it. Search by company domain and title, enrich the match, and read the email status before you send. This guide does that against LeadOcean with curl and spends 2 records.

Examples use placeholders (Acme, acme.com, Jane Doe). Swap in your own domain.

TL;DR

  • Office Manager emails come from three places: a database lookup, a pattern guess at the company domain, or the company's own contact pages. Only the first returns a deliverability status.
  • Search by domain and title, enrich with reveal_email, and send only to verified or catch_all_valid addresses.
  • It takes about 10 minutes and spends 2 of the 1,000 free records. Sizing the audience first costs nothing.

Prerequisites

  • A LeadOcean account. The free plan gives 1,000 records for life, no card: register here.
  • An API key from the app, exported as $LEADOCEAN_API_KEY.
  • curl and jq.
bash
export LEADOCEAN_API_KEY="paste-your-key-here"

Every request goes to https://api.leadocean.io with the header x-api-key. A free key has both scopes, search and enrich.

Step 1: Size the Office Manager list first

Send count=true and limit=1 as query parameters and the call returns a total without spending a record. Filters go in a flat JSON body, and every filter is an array of strings.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true&limit=1" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": ["Office Manager"],
    "salesRegion": ["NORAM"]
  }' | jq '.meta'

meta.total is capped at 100,000, so a wide filter returns a floor. Enum values are exact strings: NORAM, LATAM, EMEA and APAC work, north-america returns nothing. Add employeeRange to focus the list by company size.

Step 2: Search for the Office Manager at one company

Add the company domain to find the Office Manager at that account. Each person returned costs one record, so keep limit at 1 or 2.

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 '{
    "domain": ["acme.com"],
    "title": ["Office Manager"],
    "limit": 1
  }' > om.json

jq '.data | length' om.json

Title values are keywords. Wrap one in square brackets, such as ["[Office Manager]"], for an exact match. Search rows are thin: they carry has_email and has_phone flags, not the address.

Step 3: Enrich the person to get the email

Each search row carries an id at meta.source_ids.person_id. Send it back to enrich that exact person. Enrich takes exactly one of linkedin_url, email, phone or person_id.

bash
PID=$(jq -r '.data[0].meta.source_ids.person_id' om.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\": \"$PID\", \"reveal_email\": true}" > person.json

This costs one record. reveal_email costs nothing extra and returns every email we hold for that person. If we hold nothing, you get a 404 and no charge. There is no lookup by name plus domain: search first, then enrich by person_id.

Step 4: Verify before you send

Read the status on each address and send only to ones worth sending to. A verified or catch_all_valid status is safe. A plain catch_all status means the domain accepts everything, so the mailbox may not exist.

bash
jq -r '.data.contact_data.contact_emails[]
  | select(.status == "verified" or .status == "catch_all_valid")
  | .email' person.json

Bounced emails are not refunded, so treat every other status as a no-send. The statuses are verified, catch_all_valid, catch_all, risky, unknown, untested, invalid, role, disposable, spam_trap, abuse, derived and none.

Step 5: Use a pattern only when the lookup finds nothing

When the Office Manager is not in the data, guess at the company domain, then verify the guess before you send. Four patterns cover most small-company mail setups:

text
first.last@acme.com    jane.doe@acme.com
flast@acme.com         jdoe@acme.com
first@acme.com         jane@acme.com
firstl@acme.com        janed@acme.com

Find the pattern from any other address you already hold at that domain, then apply it to the Office Manager's name.

Watch for role addresses. office@ and admin@ carry the role status and reach a shared inbox, not the person. A guess at a catch-all domain always looks valid and tells you nothing, so never send to an unverified guess.

Step 6: Pull the whole list as a CSV

For a list rather than one person, start an export. POST /v1/exports takes up to 50,000 rows a request and 500,000 a day. Each 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": "office-managers-noram",
    "filters": {
      "title": ["Office Manager"],
      "salesRegion": ["NORAM"]
    },
    "limit": 1000,
    "preset": "full"
  }'

Poll GET /v1/exports/{id}, then download from GET /v1/exports/{id}/download. The app's Exports page does the same with a filter builder, a column picker and the record price before you start. It needs no code. Solo is $97 a month and includes bulk CSV export: see pricing.

What you get

The Step 1 count is free. The free MCP tool leadocean_count_leads ran on 2026-10-21 with the title keyword Office Manager, split by salesRegion. It counts people with a verified, catch_all_valid or catch_all email by default, so these are mailable counts.

RegionMailable Office Managers (2026-10-21)All matches, any email state
Worldwide308,6851,617,148
NORAM178,713891,644
EMEA32,653236,367
APAC12,02096,800
LATAM1,88010,388

The four regions sum to less than the worldwide figure because some people carry no region. Each call returned totalIsExact: true and credits: 0. Title keywords match any title containing those words, so read a sample before you build a campaign on the total.

A record-level response has the shape below (response shape from the API reference, placeholder values):

json
{
  "success": true,
  "data": {
    "profile_data": { "name": "Jane Doe", "title": "Office Manager", "company": "Acme" },
    "contact_data": {
      "has_email": true,
      "email_status": "verified",
      "contact_emails": [
        { "email": "jane.doe@acme.com", "type": "work", "status": "verified" }
      ]
    }
  },
  "meta": { "source": "leadocean" }
}

Each record carries its own fetched_at date, and the dataset refreshes monthly. Check the date on anything you plan to act on.

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-key headerRe-export $LEADOCEAN_API_KEY and check the header name
402Out of records. The 1,000 on Free are a one-off allowanceMove to Solo at $97 a month, or lower limit
429Above the plan's rate limit (5 requests a second on Free, 200 on Agency)Honour the Retry-After header and back off
Empty dataA filter value is not an exact enum stringList the allowed values with leadocean_list_enum_values or GET /v1/enums and copy one
404 on enrichWe hold nothing for that personNo charge. Search again, or try the pattern route in Step 5
Export refusedOver 50,000 rows a request or 500,000 a day, or a Free keySplit the export, wait for the reset, or use a paid plan

FAQ

Where do Office Manager emails come from?

From a contact database, from a pattern guess at the company domain, or from a public contact page. Only a database lookup returns a deliverability status. Guesses and scraped addresses need verifying before you send.

How many Office Manager emails can I get for free?

The free plan gives 1,000 records for life with no card. One search row costs one record and one enrichment costs one more, so a verified address for one Office Manager costs about 2 records. Sizing the audience with count=true is free.

Can I find an Office Manager's email from their name and company?

Not in one call. Search by domain or companyName with a title filter, then enrich the match by person_id.

Why does an Office Manager email bounce?

Usually the address was guessed, the person left, or the domain is catch-all and the mailbox never existed. Read the status and the record's fetched_at date before you send. Bounced emails are not refunded.

Where do I go next?

The same recipe works for other roles: IT Manager, Product Manager and Procurement Manager. See pricing if you outgrow the free records.

Find your first Office Manager email with a free API key

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

Get your free API key →