Sales Prospecting API: Live LinkedIn Data
For SDR teams, growth teams, and anyone building an outbound prospecting workflow.
| Endpoint | Returns |
|---|---|
POST /v1/people/search | People matching title, seniority, company, location, or industry filters |
POST /v1/companies/search | Companies matching industry, headcount range, or HQ location |
GET /v1/company/decision-makers | C-level, VP, and director tier contacts at a target company |
GET /v1/company/hiring-signals | People who joined a target company recently, a proxy for growth or new budget |
GET /v1/person/job-changes | People who recently changed jobs, optionally filtered by their previous employer |
POST /v1/monitors | A signed webhook when a tracked person or company changes |
Most prospecting workflows start the same way: define an ideal customer profile, pull a list of accounts that match it, then find the right person to contact at each one. The part that usually breaks is the third step, going from "this company matches" to "here is a real, current decision-maker there," without either buying a seat-based tool or writing your own scraper.
/v1/companies/search filters by industry, headcount range, and HQ location, so a target list can be built directly from firmographic criteria rather than a static CSV that goes stale the day it is exported. From there, /v1/company/decision-makers pulls exactly the tiers a prospecting workflow usually wants, c-level, VP, director, deliberately excluding manager-level titles, which are the largest bucket and rarely who "decision-maker" means in this context.
Timing outreach around a real signal
Two endpoints exist specifically to answer "why reach out now, not some other week." /v1/company/hiring-signals returns people who joined a given company within a configurable lookback window (up to 365 days), which tends to correlate with headcount growth, new budget, or expansion into a new function. /v1/person/job-changes runs the same idea from the other direction: people who recently started a new role, optionally filtered to those who came from a specific prior employer, which is the classic "champion moved to a new company" trigger.
Both are plain GET requests with a company_id and a days parameter, no separate signals product to license, no add-on pricing, they are part of the same flat-rate API as every other endpoint.
Keeping a list current without re-running the search
A target list built once and never revisited degrades the moment someone on it changes jobs. /v1/monitors lets you subscribe to a specific person or company LinkedIn URL and get a signed webhook the moment something changes, job_changed and title_changed for people, staff_changed for companies, rather than requiring a workflow to re-poll the search API on a schedule to catch the same thing.
curl "https://kooperativa.io/api/v1/company/hiring-signals?company_id=1441&days=60" \
-H "Authorization: Bearer ik_live_..."Get started
Try Kooperativa
One API key. Every endpoint on this page, and every other one, included on the same flat license with unlimited requests.
