Job Change Tracker
Last updated October 14, 2026
Checks whether your contacts still work where your CRM says. Returns current employer, title, start month, role history, and left, landed, or promoted status, with a namesake check and a source date on every row. Runs on your own data and your own search, Prospeo, and verifier keys.
Install
npx @mambalabsdev/mcp-job-change-trackerEvery tool here also runs hosted, with no install at all, through Apify's MCP endpoint.
Features
- Returns current employer, title, start month, role history, and left, landed, or promoted status, with a namesake check and a source date on every row.
- Runs on your own data and your own search, Prospeo, and verifier keys.
- Pay per event: Person read at $0.025.
- Pay per event: Profile resolved at $0.006.
Input
person_namestringoptionalPerson name. Full name of the person to check.
company_domainstringoptionalWebsite domain of the company your records place this person at, for example microsoft.com.
company_namestringoptionalName of that company. Used with or instead of the domain to match roles in the person's history.
last_known_titlestringoptionalThe title your records hold. Echoed on the row as input_title.
profile_urlstringoptionalThe person's LinkedIn profile URL, used as the identity.
emailstringoptionalThe person's work address at the last known company.
company_linkedin_urlstringoptionalThe strongest company match when a role history carries LinkedIn company URLs.
locationstringoptionalLocation. Echoed for your records.
input_idstringoptionalReturned unchanged on the row so you can join it back to your CRM or table.
known_historystringoptionalA role history you already have, as JSON. Read before any paid key; a history newer than maxSourceAgeDays skips Prospeo.
peoplearrayoptionalMany people at once. Each item takes the same keys as the single person fields: person_name, company_domain, company_name, last_known_title, profile_url, email, company_linkedin_url, location, input_id, and known_history (an object).
serperApiKeystringoptionalWeb search (serper.dev): finds profile URLs and reads the search result line for the current role.
serpApiKeystringoptionalUsed for web search only when no Serper key is set.
prospeoApiKeystringoptionalProspeo enrich-person: the person's role history with start and end months.
bouncebanApiKeystringoptionalVerifies the old work address only while the person still reads as at the company.
maxSourceAgeDaysstringoptionalA history you send that is older than this is treated as lagging, so the run also reads Prospeo and the search result.
checkCompanySitestringoptionalLooks for the person on up to 4 team and about pages of the last known company domain.
checkNewsstringoptionalCites up to 3 headlines from the last year that name the person with a move word.
verifyOldEmailstringoptionalWith a BounceBan key: one check per person who still reads as at the company.
includeRoleHistorystringoptionalNo keeps role_count and drops the role_history array.
cacheTtlDaysstringoptionalReuse a reading made in the last N days, uncharged, from a store in your own Apify account. 0 turns it off.
maxPeoplestringoptionalStop after this many people. Default 1000.
max_charge_usdstringoptionalThe run stops before any row that would take its event charges past this amount.
source_tagstringoptionalAttribution for published example tasks.
Output schema
{
"input_id": "string or null",
"person_name": "string",
"input_company_domain": "string",
"input_company_name": "string",
"input_title": "string",
"profile_url": "string or null",
"match_method": "string",
"match_confidence": "string",
"match_evidence": "array",
"candidate_profile_urls": "array",
"read_status": "string",
"employment_status": "string",
"employment_confidence": "string or null",
"current_company_name": "string or null",
"current_company_domain": "string or null",
"current_company_linkedin_url": "string or null",
"current_title": "string or null",
"start_month": "string or null",
"start_precision": "string or null",
"days_in_role": "string or null",
"open_to_work": "string or null",
"career_break": "boolean",
"concurrent_open_roles": "integer",
"leaver_status": "string",
"leaver_confidence": "string or null",
"left_month": "string or null",
"landing_status": "string",
"move_type": "string or null",
"move_type_reason": "string or null",
"seniority_change": "string or null",
"previous_company_name": "string or null",
"previous_title": "string or null",
"role_history": "array",
"role_count": "integer",
"evidence": "array",
"source": "string",
"source_detail": "string or null",
"source_date": "string or null",
"source_date_method": "string",
"source_age_days": "string or null",
"sources_tried": "array",
"read_at": "string",
"cache_hit": "boolean",
"billable_events_json": "string",
"error_reason": "string or null"
}Pricing
Pay-per-event billing on the Apify platform. You are charged only when the actor returns a result. No subscription, no seat license.
Free-tier Apify accounts include monthly free compute. Upgrade for higher concurrency and volume.