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

How-to guide

How to Find a CIO's Phone Number (2026)

Get the direct dial, skip the switchboard, and do it for a whole list with one filter and one endpoint.

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

TL;DR

  • Search for CIOs with hasPhone set to true, then send each row's person_id (at meta.source_ids.person_id) to GET /v2/people/phone. You get the direct dial and its type, not the main line.
  • A first batch takes about 15 minutes. It costs 1 record per CIO you pull and 1 record per phone lookup.
  • Size the list first with a free count. The Free plan's 1,000 records cover roughly 500 CIOs end to end.

A CIO's phone number comes in two kinds. A direct dial rings the person or their assistant. A switchboard rings a company front desk, and the call ends at a gatekeeper.

Switchboards are easy to find and rarely useful. Direct dials are what you want, and they are what a data API returns when it holds one. LeadOcean returns the type with each number, so you can tell them apart before you dial.

Prerequisites

  • A LeadOcean account on the Free plan: 1,000 records for life, no card, 5 requests a second. Start free.
  • An API key in your shell: export LEADOCEAN_API_KEY=...
  • curl and jq.
  • Your own do-not-call check. LeadOcean does not answer it (see Troubleshooting).

Step 1: Size the CIO list for free

Count before you spend. A count costs no records. The filter is hasPhone, so you only count CIOs we hold a number for.

Send count=true as a query parameter, with limit=1:

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": ["Chief Information Officer"],
    "country": ["US"],
    "hasPhone": true,
    "limit": 1
  }'

meta.total is the answer. Add employeeRange, industry or jobLevel until the list is the size you can work.

Step 2: Pull CIOs who have a phone on file

Run the same filter as a real search. Each row you receive is 1 record. Start with 25.

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": ["Chief Information Officer", "CIO"],
    "country": ["US"],
    "employeeRange": ["1001-5000", "5001-10000"],
    "hasPhone": true,
    "limit": 25
  }' | jq '.data[].meta.source_ids.person_id'

The body is flat JSON and every filter is an array. Page with cursor from the previous response. Limit runs 1 to 100.

Titles are free text, so a CIO may also be a "Chief Information Officer" at a bank or a "Group CIO" at a retailer. Add the variants you see in your first page.

Step 3: Fetch the direct dial

Send each person_id to the phone endpoint. It costs 1 record per call, including a call that finds nothing.

bash
curl -s -G "https://api.leadocean.io/v2/people/phone" \
  --data-urlencode "person_id=1234567" \
  -H "x-api-key: $LEADOCEAN_API_KEY"

Because Step 2 filtered on hasPhone, most calls find a number. That is the point of the filter: you do not pay for empty answers.

Call the direct dial first. Use the switchboard only when no direct number exists.

  • Direct or mobile: rings the CIO or their assistant. Best answer rate. Highest care about when and why you call.
  • Office: often a desk line behind a company system. Fine for business hours.
  • Main line: a switchboard. You ask for the CIO by name and hope the gatekeeper connects you.

CIOs are senior, busy and screened. Pair the call with an email so the call has context. For the same method on another role, see how to find a VP of Sales phone number.

Prefer chat to code? The MCP tool leadocean_find_phone does the same lookup. See the Find Phone Number skill.

Step 4: Loop it over the list

At scale, script Steps 2 and 3 together. Stay under your plan's rate limit: 5 requests a second on Free, 200 on Agency.

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":["Chief Information Officer"],"country":["US"],"hasPhone":true,"limit":25}' \
  | jq -r '.data[].meta.source_ids.person_id' \
  | while read id; do
      curl -s -G "https://api.leadocean.io/v2/people/phone" \
        --data-urlencode "person_id=$id" \
        -H "x-api-key: $LEADOCEAN_API_KEY" >> cio_phones.jsonl
      echo >> cio_phones.jsonl
      sleep 0.25
    done

For thousands of rows, use a bulk CSV export instead of a loop. POST /v1/exports takes up to 50,000 rows a request and 500,000 a day, and phones come as phone_N_number columns. Bulk CSV export is not on Free. It is included on Solo ($97 a month), and Agency ($497 a month) allows 50k rows a file. You can also build the export in the app at app.leadocean.io, which shows the record price before you download.

This is not legal advice. Rules depend on the country the CIO sits in and on whether the number is a mobile or a business line.

  • Check the number against your own do-not-call lists before you dial. LeadOcean does not return a do-not-call status. The v2 phone endpoint omits dnc, and its absence is not clearance.
  • Rules for cold calls to mobiles are stricter than for business lines in many countries. Look up the rule for each country on your list.
  • Keep a record of where each number came from and when you called.
  • Honor an opt-out the first time you hear it.

Ask your counsel before you run a campaign in a new country.

What you get

A free count on 2026-10-21 for CIOs in the US, titled "Chief Information Officer":

FilterTotal
title, country US, hasPhone true77,662
title, country US, hasEmail true86,775

These are people with a phone number on file, or an email on file. They are not mailable counts and not call-ready counts. The two lists overlap.

Response shape from the API reference for one phone lookup, with placeholder values:

json
{
  "success": true,
  "data": {
    "person_id": "1234567",
    "found": true,
    "phones": [ { "phone": "+14155550133", "type": "mobile" } ],
    "best":   { "phone": "+14155550133", "type": "mobile" }
  }
}

type is the source's own label, such as mobile, direct or office. Treat an unfamiliar value as unknown. Read best first.

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-key.Re-export $LEADOCEAN_API_KEY from the app's API keys page.
402The plan's records are spent. Free is 1,000, once.Check GET /v1/account, then move to a paid plan.
429Above the plan's rate limit: 5 a second on Free, 200 on Agency.Slow the loop and honor Retry-After.
404We hold nothing for that person_id.No charge. Skip the row.
Empty resultsA value in the filter is not an exact match.Check leadocean_list_enum_values for job_level and country.
Export refusedOver 50,000 rows a request or 500,000 a day, or on the Free plan.Split the export, or move to a plan with bulk CSV.

FAQ

Can I find a CIO's phone number by name and company?

No. There is no name lookup. Search by title and company domain first, then send the person_id to the phone endpoint.

Do I pay when a lookup finds no number?

On the v2 phone endpoint, yes: a miss costs 1 record. A 404 costs nothing. Filter with hasPhone in search to avoid paying for empty answers.

How many CIOs can I look up on the Free plan?

Each CIO costs 1 record to pull and 1 for the phone, so 1,000 records covers about 500 people.

Does LeadOcean return a CIO's mobile number?

It returns the types it holds: mobile, direct and office. Not every CIO has a mobile on file. Read the type on each number.

Where do I see all phone options?

The Find Phone Number enrichment page covers the endpoint, the MCP tool and the limits. Prices are on the pricing page.

Find your first CIO phone number free

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

Get your free API key →