Skip to main content
GET /search/candidates is the primary v1 endpoint. It searches Cutshort’s talent database and returns 10 hits per page with triage data — no identity or contact fields.

Response fields

Each hit includes: Use profileSignals and redactedResumeText together to judge fit without contact details. When you want email, phone, or the resume file, call Get candidate details — it auto-unlocks the candidate (one credit). At least one search filter is required (q, inresume, location/experience/salary, profile attributes, or activity). Bare pagination-only requests are rejected with 400 search_criteria_required. Add q (up to 20,000 characters; inputs above 50,000 are rejected) for semantic ranking:
Cutshort rewrites q with a role-summary prompt, embeds it, and runs kNN search. Short phrases like python developer work. Combine q with structured filters — filters narrow the pool, q ranks within it. Response includes searchType: "ai" when q is present, otherwise "structured".

Skill search — use inresume

Skill requirements are expressed with inresume — a Lucene boolean query over the full resume text. It catches every mention (tagged skills, job descriptions, projects), so recall is much higher than tag-based filtering. There is no separate skills parameter.

Good inresume examples

Rules:
  • Use uppercase AND / OR / NOT
  • Quote phrases: "machine learning", "system design"
  • Within a group, list synonyms and abbreviations with OR (ML OR "machine learning")
  • Keep 2–4 skill groups — more groups reduce recall
  • Avoid version suffixes: python, not python 3.10
  • Do not URL-encode manually; pass the raw expression

Location encoding

Encoding:
  • Spaces → + (e.g. Navi+Mumbai)
  • Multiple cities → dash-separated (Mumbai-Pune)
  • Bangalore → Bengaluru+%28Bangalore%29

Experience and salary

Always pass both bounds when filtering experience: If only one experience bound is sent, the API fills the other automatically.

Availability

Profile attribute filters

These filters correspond to fields in profileSignals on each hit. Dash-separated values within one param are OR’d (e.g. eduPed=tier1plus-tier1 = either tier).

Combining profile attributes: AND vs OR

By default, supplying more than one of eduPed, startupExp, entrExp, domainTags requires a candidate to match all of them. Add profileAttributesMode=or to match any:
profileAttributesMode=or affects only these four params. All other filters (location, experience, salary, inresume, availability, activity) always stay ANDed.

Pagination

Search discipline

  • Run searches sequentially — not in parallel
  • Review each page before refining
  • Avoid near-identical queries (overlapping results waste quota)
  • When exploring multiple angles, use disjoint slices (different experience bands or locations)
See Rate limits for burst caps.

Example — ML engineer in Bangalore