Job Change Tracker

v1.0.1$0.025/personContact Discovery

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

bash
npx @mambalabsdev/mcp-job-change-tracker

Every 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_namestringoptional

Person name. Full name of the person to check.

company_domainstringoptional

Website domain of the company your records place this person at, for example microsoft.com.

company_namestringoptional

Name of that company. Used with or instead of the domain to match roles in the person's history.

last_known_titlestringoptional

The title your records hold. Echoed on the row as input_title.

profile_urlstringoptional

The person's LinkedIn profile URL, used as the identity.

emailstringoptional

The person's work address at the last known company.

company_linkedin_urlstringoptional

The strongest company match when a role history carries LinkedIn company URLs.

locationstringoptional

Location. Echoed for your records.

input_idstringoptional

Returned unchanged on the row so you can join it back to your CRM or table.

known_historystringoptional

A role history you already have, as JSON. Read before any paid key; a history newer than maxSourceAgeDays skips Prospeo.

peoplearrayoptional

Many 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).

serperApiKeystringoptional

Web search (serper.dev): finds profile URLs and reads the search result line for the current role.

serpApiKeystringoptional

Used for web search only when no Serper key is set.

prospeoApiKeystringoptional

Prospeo enrich-person: the person's role history with start and end months.

bouncebanApiKeystringoptional

Verifies the old work address only while the person still reads as at the company.

maxSourceAgeDaysstringoptional

A history you send that is older than this is treated as lagging, so the run also reads Prospeo and the search result.

checkCompanySitestringoptional

Looks for the person on up to 4 team and about pages of the last known company domain.

checkNewsstringoptional

Cites up to 3 headlines from the last year that name the person with a move word.

verifyOldEmailstringoptional

With a BounceBan key: one check per person who still reads as at the company.

includeRoleHistorystringoptional

No keeps role_count and drops the role_history array.

cacheTtlDaysstringoptional

Reuse a reading made in the last N days, uncharged, from a store in your own Apify account. 0 turns it off.

maxPeoplestringoptional

Stop after this many people. Default 1000.

max_charge_usdstringoptional

The run stops before any row that would take its event charges past this amount.

source_tagstringoptional

Attribution for published example tasks.

Output schema

json
{
  "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

$0.025per person

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.