← Catalog

People search API: find people by job title and company, pay per result

people.search

live

Build a people list from filters: titles, seniority, company headcount, location, industry keywords. Returns LinkedIn profiles with current role and company; enrich with contact.find next.

live coverage

Apify: all inputs ✓

Apollo: all inputs ✓

✓ marks a combination proven with a real provider call. Others are wired and unit-tested; their first live run verifies them.

Providers

ProviderStatus
Apify live
Apollo live
People Data Labs planned
Crustdata planned

Billing

Unit: per_result · unmatched results billed: no
Priced per 25-result search page ($0.175) plus $0.007 a profile in full mode (nothing extra in short mode): 3 full profiles quote $0.196, 25 quote $0.35, 200 quote $2.80. A limit under 25 still pays the whole page, so ask for 25 per query when you will use them, and narrow with titles, companies and locations rather than a free-text query. Company-constrained LinkedIn searches add up to $0.035087 per employer to the quote for identity resolution (a capped lookup); only profiles with matching current-employer ID or URL evidence are returned; this is not independent employment verification. Profiles without employer evidence are excluded, and the matched role plus all current positions are preserved. No emails are included on this LinkedIn route. The exact quote is reserved before execution; empty or unresolved searches release the hold. For the leaders of known companies pass the company (company_domains, or up to 3 names in companies) with a small limit: that route charges $0.042 a person actually returned (4 asked, 1 found, $0.042) with a work email when available, and runs first whenever it quotes less than the search page; a company it does not know, or a name two companies share, falls through to the search page. You choose what you pay for: detail short previews who holds the titles for the platform floor and reveals nobody, and person_ids then pays only for the people you pick. If the provider's actual cost overruns the estimate, the run bills the overrun at the same per-call rate, capped by the hold.

The exact quote is returned by /v1/inspect before every call and held with headroom on execution. The quote is the price floor: if the provider's actual cost overruns it, the run bills the overrun at the same rate, never above the hold. The unused part of every hold is released.

Run it

curl https://api.jell.run/v1/run \
  -H "Authorization: Bearer $JELL_API_KEY" \
  -d '{
    "capability": "people.search",
    "input": {  },
    "routing": {"provider": "auto"}
  }'

Input schema

{
  "properties": {
    "companies": {
      "description": "Current company names or LinkedIn URLs. When also supplying company_domains, pair them in the same order. The LinkedIn route resolves exact employer identities before searching; ambiguous names return no match.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "company_domains": {
      "description": "Employer domains, e.g. [\"galois.com\"]: the precise way to name a company. A domain, or up to 3 company names, with a limit of 25 or less opens the database route: the search is free, each person returned costs $0.042 and comes with a work email when one is known. A name shared by two companies is not served there and runs on LinkedIn",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "company_headcount": {
      "items": {
        "enum": [
          "1-10",
          "11-50",
          "51-200",
          "201-500",
          "501-1000",
          "1001-5000",
          "5001-10000",
          "10001+"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "detail": {
      "default": "full",
      "description": "full returns names, current role, experience and skills (on the database route: full name, LinkedIn URL and work email, $0.042 a person). short is the cheap look: on the database route a masked preview at the platform floor (first name, masked last name, title, company, whether an email exists, a person_id) with nobody revealed; on LinkedIn, truncated names and no titles",
      "enum": [
        "full",
        "short"
      ],
      "type": "string"
    },
    "industries": {
      "description": "Industry keywords, matched fuzzily",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "limit": {
      "default": 25,
      "description": "Up to 200 per call",
      "type": "integer"
    },
    "locations": {
      "description": "Countries, regions or cities",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "person_ids": {
      "description": "person_id values from a short preview: reveals exactly those people, $0.042 each, up to 25. No other filter is needed",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "query": {
      "description": "Free-text search, e.g. \"head of sales SaaS\"",
      "type": "string"
    },
    "seniority": {
      "items": {
        "enum": [
          "entry",
          "senior",
          "manager",
          "director",
          "vp",
          "cxo",
          "partner",
          "owner"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "titles": {
      "description": "Current job titles",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}

Normalized output fields

people

Used in these guides

Find high-intent leads →