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

How-to guide

How to Use Claude for Recruiting (With Live People Data)

Add one MCP URL, size a talent pool for free, pull a shortlist, and read career history. Real queries, real output.

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

Claude is good at judging a profile and bad at knowing who exists. Give it a people-data tool and it stops guessing. This guide wires Claude to LeadOcean's MCP server and runs one sourcing loop end to end.

TL;DR

  • Claude sources best when it sizes the pool first, then pulls a small page, then enriches only the people worth a closer look.
  • Setup takes about 20 minutes. The example run spends about 30 LeadOcean records. Counting and filter lookups are free.
  • The free plan (1,000 records for life, no card) covers this guide about 30 times over.

Prerequisites

  • A free LeadOcean account at app.leadocean.io. Your key goes in $LEADOCEAN_API_KEY for the REST calls.
  • Claude Code installed, or any Claude client that accepts a remote MCP server. The MCP route signs in with OAuth, so no key is pasted.
  • A role you are hiring for, written as filters: title, country, seniority, industry.

Step 1: Connect the MCP server

Add LeadOcean as a remote HTTP server. Claude Code documents this command shape.

bash
claude mcp add --transport http leadocean https://api.leadocean.io/mcp

Run /mcp inside Claude Code and sign in when prompted. The server exposes 13 tools. Three are free and matter most here: leadocean_count_leads, leadocean_list_filters and leadocean_list_enum_values.

Step 2: Turn the job spec into filters

Closed-list filters take exact strings. Never let Claude guess them. Tell it to resolve them first.

text
I am hiring a senior backend engineer in Germany. Before you search:
1. Call leadocean_list_enum_values for job_function and seniority.
2. Use only values it returns.
3. Do not call any tool that spends records until I approve a count.

Seniority values are lowercase (senior, manager, director). Job levels are C-Team, VP, Director, Manager, Staff, Other. Resolving them first saves a wasted call.

Step 3: Size the pool before you pull anyone

A count costs nothing, so make Claude run several and compare.

text
Count people with title "Technical Recruiter" in the US. Use
leadocean_count_leads with facets=false. Then narrow by
employeeRange 201-500 and count again. Report both numbers and say
what email filter the count used.

The same count over REST is a search with count=true as a query parameter and limit=1. It returns meta.total, capped at 100,000.

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":["Technical Recruiter"],"country":["US"]}'

Step 4: Pull a small page and let Claude rank it

Ask for 25 people, not 2,500. Claude reads 25 rows well and loses the thread on thousands.

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":["Staff Engineer","Senior Backend Engineer"],
       "country":["DE"],
       "keywords":["distributed systems"],
       "limit":25}'

In Claude, ask in one line.

Search for senior backend engineers in Germany with distributed systems in their profile, 25 results, then rank them against this job spec.

Each person returned is one record. Page further with cursor, and remember one search stops at 10,000 rows.

Step 5: Enrich the top few for career history

Since October 2026, person enrich returns past roles, education, certifications and awards. Enrich takes exactly one of linkedin_url, email, phone or person_id. Use the person_id from the search page.

bash
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 from step 4>"}'

Past employers carry no company_id yet, so match them by company name. An enrichment that finds nobody is a 404 and costs nothing.

What you get

The count from Step 3, run through the MCP tool on 2026-10-21:

json
{
  "total": 23913,
  "totalIsExact": true,
  "totalAll": 74953,
  "distinctCompanies": 6510,
  "credits": 0
}

Filters: title "Technical Recruiter", country US. total counts people with a verified, catch_all_valid or catch_all email. totalAll is the same filters with no email condition. Cost: 0 records.

Enrich returns career history under resume_data. Response shape from the API reference, placeholder values:

json
{
  "contact_data": {
    "contact_current_experiences": [{ "job_title": "Staff Engineer", "company_name": "Acme" }]
  },
  "resume_data": {
    "experiences": [{ "job_title": "Senior Engineer", "company_name": "Example Co" }],
    "educations": [{ "school": "Example University" }],
    "certifications": [],
    "awards": []
  }
}

Each section appears only when we hold it. Past roles also carry start and end dates and a job level, and educations carry diploma and dates. The enrich docs list every field.

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-keyCheck $LEADOCEAN_API_KEY is exported in the shell that runs curl.
429Above the plan's rate limit (5 a second on Free, 200 on Agency)Honour Retry-After. Ask Claude to run calls one at a time.
402Out of recordsFree is 1,000 records for life. Move to Solo ($97 a month) to keep going.
Zero resultsA filter value is not an exact enum stringCall leadocean_list_enum_values and copy the string.
Search stops with meta.depthCappedOne search pages to 10,000 rowsNarrow the filters instead of paging on.
Export refusedBulk CSV is not on Free; exports cap at 50,000 rows a requestUpgrade, or split the pull by country.

FAQ

Can Claude contact candidates for me?

No. LeadOcean returns data. It has no sequencer or dialer. Claude can draft the message, and you send it from your own tool.

Does this find passive candidates?

It finds people by current title, location and profile keywords, whether or not they are looking. Treat every record as a lead to qualify, not a consent to contact.

How many records does a sourcing run use?

One record per person returned. A 25-row page is 25 records, and counts are free. The example here is about 30.

Which plan do I need?

Free covers learning the loop. Solo ($97 a month) suits one recruiter. Agency ($497 a month) suits a team that shares keys.

Related reading:

Give Claude a people database to recruit from

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

Get your free API key →