Company Suggest

Ranked candidate companies for the start of a name with GET /v1/companies/suggest. Free.

GET https://api.jobspipe.dev/v1/companies/suggest?q={text}

Turns the start of a company name into ranked candidates: companies with open postings whose name starts with the text. It never picks a winner; it gives you the identity of each company the text may mean, so you can choose one and carry on with its key, name or domain. Requires authentication and costs nothing.

Use it for typeahead, to disambiguate a name before a company lookup, or after a lookup by name answered 404.

Request

ParameterTypeDescription
qstringRequired. The start of a company name, 2 to 100 characters.
limitintegerHow many candidates to return, 1 to 10. Default 10.

The text is matched case-insensitively, punctuation is ignored, and a trailing legal suffix (Inc, GmbH, Ltd and the like) is dropped, so Anthropic, Inc. and anthropic match the same companies.

curl "https://api.jobspipe.dev/v1/companies/suggest?q=vanta&limit=3" \
  -H "Authorization: Bearer jp_live_your_key_here"
import requests

resp = requests.get(
    "https://api.jobspipe.dev/v1/companies/suggest",
    params={"q": "vanta", "limit": 3},
    headers={"Authorization": "Bearer jp_live_your_key_here"},
    timeout=30,
)
candidates = resp.json()["candidates"]
const res = await fetch("https://api.jobspipe.dev/v1/companies/suggest?q=vanta&limit=3", {
  headers: { Authorization: "Bearer jp_live_your_key_here" },
});
const { candidates } = await res.json();

Response

{
  "query": "vanta",
  "candidates": [
    { "key": "1109385274236711038", "name": "Vanta", "domain": "vanta.com", "jobs": 58, "hq_country": "US", "verified": false },
    { "key": "7721560914385020117", "name": "Vanta Staffing", "domain": "vantastaffing.co.uk", "jobs": 31, "hq_country": "GB", "verified": true },
    { "key": "9031118745227703846", "name": "Vanta Diagnostics", "domain": null, "jobs": 4, "hq_country": null, "verified": false }
  ]
}
FieldTypeDescription
querystringThe text that was matched, normalised.
candidatesarrayMatching companies, best first. Empty when nothing matches.

Each candidate carries six identity fields and nothing else:

FieldTypeDescription
keystringThe company's id. Opens the company page and matches company_key_or on job search.
namestringThe company's name as its postings state it.
domainstring | nullConfirmed when verified is true; otherwise the best-known domain, or null.
jobsintegerOpen postings currently shown for this company.
hq_countrystring | nullHeadquarters country as an ISO 3166-1 alpha-2 code, or null.
verifiedbooleantrue when two independent sources agree on the domain, so GET /v1/companies/{domain} resolves it.

Ranking

  1. An exact name match comes first, verified or not, so vanta puts Vanta above a verified staffing firm with a longer name.
  2. Then companies whose domain is verified.
  3. Then by open postings, most first; ties fall to the name.

Only companies with at least one open posting are candidates. A company that has never posted a job we collected is absent, and a company we added recently may take time to appear in suggestions.

What to do with a candidate

  • Its jobs: POST /v1/jobs/search with company_key_or: [key] for exactly that company, or company_name_or: [name].
  • Its profile and hiring numbers: GET /v1/jobs/companies/{key}, the company page.
  • Its record: GET /v1/companies/{domain} when verified is true. An unverified domain is a hint, not a confirmed identity, and may not resolve there.

Cost and limits

Free: no credits, and no slot in your plan's search rate limit. The endpoint has its own limit of 5 requests a second per account; over it, 429 with Retry-After: 1.

Errors

StatusMeaning
400q is shorter than two letters or digits, or limit is outside 1 to 10.
401Missing or invalid API key.
429More than 5 suggest requests in one second. Wait a second and retry.
502Suggest is temporarily unavailable. Retry shortly.
504The suggest query timed out. Retry shortly.

On this page