How to Integrate a People Search API into Your Agency's Recruiting Workflow

Learn how to integrate a people search API into your recruiting agency's workflow. Step-by-step guide to building a candidate search tool you own.

Published

Apr 10, 2026

Written by

Manmohit Grewal

Reviewed by

Read time

7

minutes

How to Integrate a People Search API into Your Agency's Recruiting Workflow

Most recruiting agencies rent their candidate data. They pay per seat for sourcing platforms, run searches inside someone else's interface, and when the contract ends, they walk away with nothing. The candidate lists, the search history, the enriched profiles: all gone.

A people search API changes that equation. Instead of logging into a platform that controls your access, you query an API that returns structured candidate data directly into your own system. You build the filters, you store the results, and you own the database.

This guide walks through the full integration, step by step: from building your first candidate search query to setting up automated alerts that keep your database fresh without manual work.

What is a people search API?

A people search API is a programmatic interface that lets you search, filter, and retrieve professional profiles from a database of hundreds of millions (sometimes over a billion) records. You send a query with filters like job title, location, skills, and seniority. The API returns matching profiles with structured data: name, current employer, work history, education, and sometimes verified contact information.

The distinction that matters for agencies: a sourcing platform gives you a search bar inside their product. A people search API gives you the data itself. You decide where it lives, how it's displayed, and what happens to it after the search.

An enrichment API is different from a candidate search API. Search finds candidates matching criteria. Enrichment takes a known person (usually a name or profile URL) and returns detailed data about them. Most recruiting workflows need both: a candidate sourcing API to build the list, and an enrichment API to fill in contact details before outreach.

Why your candidate data costs more than you think

The line item on a sourcing tool invoice is not the full cost. Three expenses hide underneath it.

Per-seat pricing that scales with your team. Premium sourcing tools run $8,000 to $12,000 per seat per year, often with 12-month contracts. An agency with five recruiters is paying $40,000 to $60,000 annually for search access alone. Add a sixth recruiter, and the bill goes up by another $10,000 before they've placed a single candidate.

Data you can't take with you. When an agency cancels a sourcing platform subscription, the candidate profiles, saved searches, and enriched contact data stay behind. Years of sourcing work, gone. One agency founder put it bluntly during a sales call: they'd rather spend money they own and own the whole process than keep paying for access they can lose.

Stale profiles that waste outreach and embarrass your agency. Contact data decays at roughly 2% per month, which means nearly a quarter of your candidate database is out of date within a year. Reaching out to a VP of Engineering who left that role six months ago does not make your agency look good to clients. One professional services firm we spoke with described their CRM contact data as "so old and so out of date" that even basic updates would be a massive improvement.

With an API-based approach, the economics shift. You pay per query or per enriched profile, not per seat. The data lives in your system. And you can set up automated refresh cycles so profiles stay up to date.

What to look for in a people search API for recruiting

Not every people search API is built for recruiting workflows. Before integrating, evaluate on five dimensions:

Coverage and depth. How many profiles does the database contain, and how detailed are they? For recruiting, you need work history (not just current role), education, skills, and ideally certifications. If your agency recruits outside North America, check non-US coverage specifically. Some providers have strong US data but thin coverage in Europe, Southeast Asia, or Latin America.

Filter precision. Can you filter by current title, past title, years of experience, specific skills, geography (including radius search), seniority level, and company size? The more granular the filters, the less time your recruiters spend manually screening results. Watch for how the API handles non-standardized data: "Python" can appear as "python," "Python3," "Python (Programming Language)," or a dozen other variations.

Data freshness. Some APIs refresh monthly. Others enrich in real time when you request a profile. For recruiting, freshness matters because candidates change roles frequently. Ask whether the API offers real-time enrichment for profiles not already cached.

Credit model. Understand what you're charged for. Some APIs charge per search query regardless of how many results return. Others charge per profile returned. The best model for agencies: search is cheap (or free for preview results), and you pay for full enrichment only when you choose to enrich a specific candidate.

Contact data. Does the recruiting data API return verified business email and phone, or is that a separate enrichment step with additional cost? For outreach-heavy agencies, contact data availability is a dealbreaker.

Step 1: Build your candidate universe with a search query

The first integration step is replacing your sourcing platform's search bar with an API call. Here is an example using Crustdata's People Search API to find senior software engineers in the Bay Area:

import requests

url = "https://api.crustdata.com/screener/person/search"
headers = {
    "Authorization": "Token YOUR_API_TOKEN",
    "Content-Type": "application/json"
}

payload = {
    "filters": {
        "op": "and",
        "conditions": [
            {"filter_type": "current_title", "type": "(.)", "value": "Senior Software Engineer"},
            {"filter_type": "current_region", "type": "in", "value": ["San Francisco Bay Area"]},
            {"filter_type": "years_of_experience", "type": ">", "value": 5},
            {"filter_type": "current_company_employee_count", "type": "between", "value": {"min": 50, "max": 500}}
        ]
    },
    "limit": 25
}

response = requests.post(url, headers=headers, json=payload)
candidates = response.json()
import requests

url = "https://api.crustdata.com/screener/person/search"
headers = {
    "Authorization": "Token YOUR_API_TOKEN",
    "Content-Type": "application/json"
}

payload = {
    "filters": {
        "op": "and",
        "conditions": [
            {"filter_type": "current_title", "type": "(.)", "value": "Senior Software Engineer"},
            {"filter_type": "current_region", "type": "in", "value": ["San Francisco Bay Area"]},
            {"filter_type": "years_of_experience", "type": ">", "value": 5},
            {"filter_type": "current_company_employee_count", "type": "between", "value": {"min": 50, "max": 500}}
        ]
    },
    "limit": 25
}

response = requests.post(url, headers=headers, json=payload)
candidates = response.json()
import requests

url = "https://api.crustdata.com/screener/person/search"
headers = {
    "Authorization": "Token YOUR_API_TOKEN",
    "Content-Type": "application/json"
}

payload = {
    "filters": {
        "op": "and",
        "conditions": [
            {"filter_type": "current_title", "type": "(.)", "value": "Senior Software Engineer"},
            {"filter_type": "current_region", "type": "in", "value": ["San Francisco Bay Area"]},
            {"filter_type": "years_of_experience", "type": ">", "value": 5},
            {"filter_type": "current_company_employee_count", "type": "between", "value": {"min": 50, "max": 500}}
        ]
    },
    "limit": 25
}

response = requests.post(url, headers=headers, json=payload)
candidates = response.json()

This returns a list of candidate profiles matching your criteria. Each result includes name, current title, current company, location, and a preview of their work history. The response is structured JSON, so you can parse it directly into your internal database, CRM, or candidate tracking spreadsheet.

The key difference from a sourcing platform: these results live in your system. You can re-query, combine results across multiple searches, and build a growing candidate universe that belongs to your agency.

What to do with the results: Store them in whatever system your agency uses for candidate tracking. A simple PostgreSQL database works. So does Airtable, a Google Sheet with Apps Script, or your existing ATS if it accepts API imports. The point is that the data flows into your infrastructure, not someone else's.

Step 2: Preview candidates before spending credits

The most expensive mistake agencies make with API-based sourcing is enriching every result. Search results return enough data to evaluate fit: name, title, company, location, and summary work history. Full enrichment, including verified email, phone number, complete work history, education details, and skills, costs additional credits.

Build your workflow around a preview-first pattern:

  1. Run the search query (Step 1). You get 25-100 candidate previews.

  2. Your recruiter reviews the preview cards. Name, title, company, location, and headline are usually enough to decide "worth pursuing" or "skip."

  3. Only candidates the recruiter selects move to the enrichment step.

This mirrors what one agency building their own platform described: recruiters browse preview cards, click to expand full profiles, and only the expanded profiles consume enrichment credits. At scale, this approach cuts data costs by 60-80% compared to enriching every search result upfront.

The preview-first pattern also makes your recruiters faster. Instead of scrolling through fully loaded profiles with information they don't need yet, they make quick yes/no decisions on lightweight cards and then go deep only on candidates worth pursuing.

Step 3: Enrich shortlisted candidates for outreach

Once a recruiter selects a candidate from the preview list, enrich that profile to get the contact details and background depth needed for personalized outreach. Here is an example using Crustdata's People Enrichment API:

curl -X GET "https://api.crustdata.com/screener/person/enrich?linkedin_profile_url=https://linkedin.com/in/candidate-profile" \
  -H "Authorization: Token YOUR_API_TOKEN"
curl -X GET "https://api.crustdata.com/screener/person/enrich?linkedin_profile_url=https://linkedin.com/in/candidate-profile" \
  -H "Authorization: Token YOUR_API_TOKEN"
curl -X GET "https://api.crustdata.com/screener/person/enrich?linkedin_profile_url=https://linkedin.com/in/candidate-profile" \
  -H "Authorization: Token YOUR_API_TOKEN"

The response includes:

  • Contact info: verified business email, phone number (where available)

  • Full work history: every employer, title, and date range

  • Education: schools, degrees, graduation years

  • Skills: listed skills and endorsements

  • Profile metadata: connection count, location, summary

With this data, your recruiter can write outreach that references the candidate's specific background, not a generic "I found your profile" message. The enriched profile also gives your agency a complete record to store and reference for future roles.

Writing it back to your system: The enrichment response is JSON. Map the fields to your candidate database schema. A basic integration writes the enriched data back to the same record you created in Step 1, so your candidate universe grows richer over time without manual data entry.

Step 4: Set up job change alerts so your database stays fresh

A static candidate database decays. People change jobs, get promoted, relocate. If your agency placed a CFO six months ago and they've already moved on, that's a new placement opportunity you're missing.

Job change alerts solve this by monitoring candidates and contacts you care about. When something changes, you get notified automatically. Using Crustdata's Watcher API, you can set up monitoring for:

  • Placed candidates: Get alerted when someone you placed changes roles. That's a new opening at the company you placed them into, and a relationship you can use at their new company.

  • Key client contacts: If your main point of contact at a client company leaves, you want to know before your competitor does.

  • Passive candidates: Monitor high-value candidates who weren't ready to move. When their profile updates, it might signal they're open to conversations.

One professional services firm described their situation: "We're very poor at tracking when someone's gone from one place to another. And if they have, we're very poor at updating it." Automated alerts replace that manual tracking entirely.

The alerts deliver via webhook, so they can trigger actions in your system: update the candidate record, notify the recruiter who owns that relationship, or add the candidate to a re-engagement queue. See how one recruiting platform keeps 100K candidate profiles fresh using this approach.

Keep it compliant: GDPR and CCPA basics for agencies

If your agency operates in or recruits from the EU, GDPR applies. For California-based candidates, CCPA applies. The practical requirements for API-based recruiting:

  • Legitimate interest basis: B2B recruiting generally qualifies under GDPR's legitimate interest provision, but document your basis and make it available if a candidate asks.

  • Right to deletion: If a candidate requests their data be removed from your system, you must comply. Build a deletion workflow into your candidate database from the start.

  • Data retention policy: Don't store candidate data indefinitely without purpose. Set retention periods (12-24 months is common for recruiting) and auto-archive or delete expired records.

  • Transparent sourcing: Be prepared to tell candidates where you got their information if they ask.

Choose an API provider that sources data from publicly available professional profiles and has its own compliance certifications. That way, you're building on a foundation that's already been vetted.


Build the tool your agency actually owns

The workflow covered in this guide, search, preview, enrich, and monitor, replaces the sourcing platform dependency that most agencies accept as unavoidable. Each step uses a standard API call. The data flows into your system, not someone else's.

Your agency's candidate database grows with every search. It stays up to date through automated alerts. And it doesn't disappear when a contract ends.

Book a demo to see how the People Search and Enrichment APIs work with your recruiting workflow, or explore the API documentation to start building.

Data

Delivery Methods

Solutions

Start for free