Sector + geo + business-profile-matched cohort comparison.
Endpoints
GET /v1/company/{domain}/cohort
Sector + geo + business-profile-matched peer comparison.
GET
Sector + geo + business-profile-matched cohort comparison.
Where does this company rank against companies that are actually like it — same sector, same geographic scope, same growth-or-established profile?
/v1/distribution gives universe context; this endpoint gives matched-peer context, which is usually what an analyst actually wants.
When to use it
- “Is
composite_score = 67actually good for a B2B SaaS in growth stage?” - “Show me where this company ranks against its competitive set.”
- Building a comp table next to a profile page.
Matching rules
The cohort filter uses three fields from the target’s stored record:- sector (e.g.
saas,fintech,healthcare, …) - geo_scope (e.g.
us,eu,global, …) - business_profile (
growthorestablished)
Response highlights
members is capped at 200 and sorted DESC by composite score. bucket_means.{bucket}.delta is target − cohort.mean — positive = target outperforms cohort on that bucket.
What 404 means
If the target has never been scored, you get404 { error: "no_history" }. Trigger a score with POST /v1/score first.
If the target exists but has no peers (rare — usually a very narrow sector / geo combination), the response is 200 with cohort.count: 0. Render gracefully.
Refresh cadence
The cohort is computed over the latest record per domain from the Kepler event stream. Refresh interval matches the platform’s scoring cadence — most cohorts are at most ~24 hours stale.Authorizations
Live keys are prefixed ki_live_, test keys ki_test_. Issue + revoke
keys at https://console.keplerinsights.us. Never embed a key in client-side
code — every endpoint is backend-to-API only.
Path Parameters
Bare hostname. Strips a leading www. and any URL scheme automatically.
Response
Cohort stats + member list (capped at 200).

