The reliable way to reach an HR Director is a direct dial or mobile from a contact database. The company switchboard routes you to HR operations or reception, and a guessed number reaches a stranger.
TL;DR
- Sizing an HR Director list is free. A search costs 1 record per person returned, and a phone lookup costs 1 record per call.
- Filter on
hasPhonefirst, so you only spend records on people we hold a number for. Ten minutes covers one HR Director. - For a list, search and then export.
POST /v1/exportstakes up to 50,000 rows a request and 500,000 a day.
Prerequisites
- A LeadOcean API key from the free plan: 1,000 records for life, no card. Export it as
$LEADOCEAN_API_KEY. curlandjq.- A target: a company domain such as
acme.com, or a segment such as HR Directors in one country. - A calling policy for your market. See Step 4.
Step 1: Know which number you are after
An HR Director has three kinds of number. Each one behaves differently when you dial it.
- Switchboard: the main company line. Always findable, and it lands on HR operations or a reception desk.
- Office direct: a desk line. In larger firms an HR coordinator or assistant often answers it.
- Mobile: the best number, and the one to treat with the most care.
The v2 phone endpoint labels each number mobile, direct or office, best first. Take the label as a hint about the line, not a promise about who answers.
Titles vary. The role appears as HR Director, Director of Human Resources, Director of People or Director of Talent. Search more than one title, or filter on job function and level, so you do not miss the person.
Step 2: Size the list for free
Count the HR Directors you could reach before you spend anything. A search with count=true as a query parameter and limit 1 returns a total and no rows. It costs nothing.
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 '{
"jobFunction": ["Human Resources"],
"jobLevel": ["Director"],
"country": ["US"],
"hasPhone": true,
"limit": 1
}' | jq '.meta'hasPhone: true drops everyone we hold no number for. Filter values are arrays and enums are exact strings, so check them with GET /v1/enums if a result looks wrong. The total is capped at 100,000.
The same count runs from Claude with the MCP tool leadocean_count_leads, which is also free.
Step 3: Get the number for one HR Director
If you know the company, search its people by domain and pick the HR Director. The search costs 1 record per person returned. Then fetch every number we hold by person_id.
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"], "jobFunction": ["Human Resources"], "jobLevel": ["Director"], "limit": 5}' \
| jq -r '.data[].meta.source_ids.person_id'
curl -s "https://api.leadocean.io/v2/people/phone?person_id=PERSON_ID" \
-H "x-api-key: $LEADOCEAN_API_KEY"The phone call costs 1 record, including a call that finds nothing. If you already hold a LinkedIn URL, call the phone endpoint with linkedin_url instead of searching. There is no lookup by name plus domain, so search by domain first.
In Claude, the MCP tool leadocean_find_phone does the same lookup for 1 record.
Step 4: Check before you dial
A number in a database is not permission to call it. The v2 phone response does not publish a do-not-call flag. Its absence is not clearance.
Check the do-not-call and telemarketing rules for the country you are calling, and for mobiles in particular. Rules for business calls differ by country, so ask counsel if you are unsure. Log who you called, when and why.
An HR Director who picks up a mobile expects a reason in the first ten seconds. If you cannot give one, send a short email first and call after. Stop after two attempts a day.
Dial in business hours in the HR Director's time zone. Lead with a reason tied to their hiring plan, benefits or HR stack, not a script.
Step 5: Pull numbers at scale
A list changes the job. You stop looking up one person and start choosing a segment, so the filters matter more than the endpoint. Pick one company size band per list, so one opener fits every call.
For a list, export the searched segment. The export takes the same filters as search and asks for the phone columns by name. Numbered columns use N, and the CSV comes back with phone_1_number, phone_2_number and so on.
curl -s -X POST https://api.leadocean.io/v1/exports \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"filters": {
"jobFunction": ["Human Resources"],
"jobLevel": ["Director"],
"country": ["US"],
"hasPhone": true
},
"columns": ["profile_full_name", "current_job_title", "current_company_name", "phone_N_number", "phone_N_type"],
"limit": 5000
}'Bulk CSV export is not on the Free plan. Solo at $97 a month includes it, and Agency at $497 a month adds 200 requests a second and 5 keys for teams. Prefer the app? The Exports page at app.leadocean.io has a filter builder, a column picker and a price preview before you download.
One search pages to 10,000 rows. Narrow the filters, by country or company size, rather than walking past that.
What you get
First, a live count from the free leadocean_count_leads tool, run on 2026-10-21. It filtered on job function Human Resources, job level Director, country US and hasPhone. It is a count of people with a phone on file, not a mailable count.
{
"total": 232762,
"totalIsExact": true,
"distinctCompanies": 113780,
"facets": {
"company_size": [
{ "value": "51-200", "count": 51448 },
{ "value": "11-50", "count": 33641 },
{ "value": "201-500", "count": 32783 },
{ "value": "1001-5000", "count": 31018 }
]
}
}The job function filter matches anyone in HR at Director level, so the list includes Directors of Talent, Total Rewards and Learning as well as the generalist HR Director. Add a title filter to tighten it.
Second, the response shape of a phone lookup, from the API reference, with placeholder values. It is not a real record.
{
"success": true,
"data": {
"found": true,
"phones": [
{ "phone": "+1 415 555 0133", "type": "mobile" },
{ "phone": "+1 415 555 0100", "type": "office" }
]
}
}The array position is the priority. Try the first number first. The endpoint returns data and no meta object, so read your spend from GET /v1/usage.
Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing, wrong or revoked key | Check that x-api-key carries $LEADOCEAN_API_KEY and the key is active in the app. |
| 402 | Free plan: the 1,000 records are spent | The allowance is one-off. Move to Solo at $97 a month to keep going. |
| 429 | Above the plan's rate limit: 5 a second on Free, 50 on Solo, 200 on Agency | Honour Retry-After. Slow the loop or upgrade the plan. |
| Empty results | A bad enum value, such as hr for a job function | Use exact strings such as Human Resources from GET /v1/enums, and arrays for every filter. |
found: false | We hold no number for that person | It still costs 1 record on v2. Filter with hasPhone first to avoid it. |
| Export refused | Over 50,000 rows a request or 500,000 a day | Split the export by country or headcount band. |
FAQ
Can I find an HR Director's phone number for free?
For a few, yes. The free plan gives you 1,000 records for life, with no card. Sizing a list costs nothing.
Is the HR switchboard enough?
Rarely. It reaches a gatekeeper or an HR service desk. A direct dial or mobile reaches the person, which is why this guide filters on hasPhone.
Is it legal to call an HR Director's mobile?
It depends on the country and on whether the line is registered as do-not-call. We publish no compliance flag, so check the rules where you call and keep a call log.
How many people do you hold numbers for?
We hold a phone for 166M people (measured September 2026). The count for HR Directors in your country is a free call in Step 2.
How do I find the email as well?
Use the same filters and request the email columns in the export, or call the work email endpoint. See how to find an HR Director's email.
Related
- How to find a Sales Director's phone number
- How to find a Marketing Director's phone number
- Find phone number, the section hub
- Pricing
Get HR Director direct dials with your free API key
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →