post
https://api.adept-id.com/candidate-feeds/v2/search
Searches and recommends candidates for a job from a candidate feed.
Recent Requests
Log in to see full request history
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Loading…
Use this endpoint to search for candidates best fit for a job and matching a set of filters. During a search, candidate profiles are sourced from a specified candidate feed, filtered, and then ranked based on fit for the job. AdeptID's Candidate Search incorporates semantic understanding of the job and potential candidates. It can search over millions of candidates in just a few seconds, delivering almost instantaneous results for end users.
- Job: The Job object describes the job’s responsibilities, requirements, and preferences in the form of a title, description, skills, languages, certifications, and more. This information is used to determine the best-fit candidates and to generate a Match Report accompanying each recommended candidate.
- Filters: The caller may filter results based on candidate attributes such as location, experience requirements, and more.
Additional Notes:
- Access: To access this service and attain a
candidate_feed_id, please contact your AdeptID Partner Success team. - Normalizing Skills, Languages, and Certifications: Skills, languages, and certifications must be normalized before including them in the Candidate Search payload. AdeptID’s Normalize Skills API accepts the raw skills, languages, and/or certifications extracted from the job description and normalizes them to our standard taxonomy. We suggest showing normalized skills within a user interface so that users see consistent, normalized entities in both the user interface and in the search results. In addition to (or in place of) Normalize Skills, Extract Skills may be useful.
- Users are often interested in finding candidates who hold a specific skill/certification OR a similar skill/certification (e.g., .NET and .NET4). For that reason, our models use skills and certifications to find candidates with similar competencies. Languages only ever function as filters, and certifications can function as filters if
certification.requiredis set toTrue.
| Can be filtered, returning only candidates who meet the exact criteria | Used by models to find candidates with similar competencies | |
|---|---|---|
| Languages | ✔ | |
| Skills | ✔ | |
| Certifications | ✔ | ✔ |
- Location: Location searching performs a radial search in miles from a job’s location. Searches can include remote candidates when specified by the
remote_candidatesfield. The job’s location is a latitude/longitude centroid value derived (when possible) from the suppliedpostal_code, or the suppliedcity,state, andcountryif nopostal_codeis supplied. AdeptID will return an HTTP error response if a latitude/longitude cannot be derived from the provided location fields. - Session and User ID: AdeptID asks for pseudonymized (e.g., hashed) representations of the browser session ID generating the request and the user submitting the request. These IDs enable correlation of searches made by a user, and correlation of sequential updates a user makes to a search, informing improvements to future search results. With pseudonymization, an individual can't be identified (e.g., by name or other identifying information) via the IDs.
- Custom Filters: Custom filters restrict the candidate pool on customer-defined fields. Every custom filter you specify must match for a candidate to be returned. Each field type supports a different set of operators, but they share common behavior:
- A bare scalar value is shorthand for an exact match (
"string_1": "Nursing"is equivalent to"string_1": { "eq": "Nursing" }). eqmatches a single exact value.one_ofmatches any value in a list (set membership).- Range operators bound the value on either or both ends, inclusive. Operators can be combined within a single field object (e.g., a
minand amaxtogether). - The differences by type:
- A bare scalar value is shorthand for an exact match (
| Field type | Fields | Range operators | eq / one_of | Notes |
|---|---|---|---|---|
| String | string_1–string_10 | — | ✔ | Exact match only (no partial/fuzzy matching); matching is case-insensitive |
| Integer | integer_1–integer_5 | min, max | ✔ | |
| Float | float_1–float_5 | min, max | ✔ | |
| Date | date_1–date_5 | after, before | ✔ | Uses after/before instead of min/max; formatted as ISO 8601 (YYYY-MM-DD) |
| Boolean | boolean_1–boolean_5 | — | — | Scalar true/false only |
"custom_filters": {
"string_1": "s93jfQZ40293", // exact match
"string_2": { "one_of": ["721bA3", "834mF6"] }, // any of these
"integer_1": { "min": 3, "max": 10 }, // inclusive range
"float_1": { "one_of": [1.0, 1.5, 2.0] },
"date_1": { "after": "2024-01-01", "before": "2024-12-31" },
"date_2": { "eq": "2025-06-15" },
"boolean_1": true
}