Job Change Tracker — Contacts Who Moved to a New Company avatar

Job Change Tracker — Contacts Who Moved to a New Company

Pricing

from $50.00 / 1,000 job changes

Go to Apify Store
Job Change Tracker — Contacts Who Moved to a New Company

Job Change Tracker — Contacts Who Moved to a New Company

Your contacts (name + last-known company) in, job changes out: who moved, new company, title, evidence URL, new domain and a pattern-matched, MX-checked work e-mail. Confirmed by the company site or two sources; per-watch memory reports each move once. No login, dataset-only, MCP-ready.

Pricing

from $50.00 / 1,000 job changes

Rating

0.0

(0)

Developer

inovaflow

inovaflow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Your best-converting leads are the people who already bought from you — and every year a fifth of them change jobs. Job Change Tracker takes your contact list (name + the company you know them at) and tells you who moved, where and in what role, with the public evidence, the new company's domain and the most likely new work e-mail. No LinkedIn login, no cookies, no data-vendor subscription.

  • Sales teams — champion tracking: a buyer who moves brings their budget and their vendor list to the new company.
  • Customer success — know when the sponsor of an account leaves before renewal.
  • Recruiters & investors — keep a watch list of operators and founders current.
  • RevOps — clean CRM contacts whose company field is stale; get the new domain and e-mail pattern.

What does Job Change Tracker do?

For every contact it runs a public-profile search (the profile headline names the current employer), a press / company-site search when that points somewhere new (or nowhere), and reads the candidate company's own home / team / leadership pages. A move is confirmed only when the new company's site lists the person, or when two independent public sources agree; one source alone is reported as a possible move and never charged as a job change. Contacts still at their company come back as no-change, contacts the web knows nothing about as not-found — never a guess. Give the same watchId on every scheduled run and each move is reported once.

Why use this job change tracker?

  • Confirmed, with evidence. Every changed: true row carries the URL that proves it (team page, announcement, profile headline) and a confidence score.
  • Priced per check, per confirmed move. $0.01 per contact checked, $0.05 only when a move is confirmed and only the first time. Possible moves, duplicates and unusable inputs are free.
  • The new seat, ready to contact. Current company, title, domain, website, a pattern-matched e-mail verified down to the mail server (or the mailbox where SMTP is reachable), plus whyNow and sellTo hints.
  • No login. Public search results, announcements and company websites only. LinkedIn pages are never fetched.
  • Runs on a schedule. Per-watch memory: known movers are skipped, unchanged contacts are re-checked, new moves are the delta.
  • MCP-ready. Flat rows, stable contactId, sources[], scrapedAt; call it from an AI agent, Zapier / Make / n8n, or the API.

What data does it extract?

FieldDescription
fullName, firstName, lastName, contactIdThe contact (id = hash of name + last-known company; stable across runs)
previousCompany, previousTitleWhat you knew (title from your input or from the sources)
currentCompany, currentTitleWhere the person is now, as the sources state it
changedtrue only for a confirmed move
statusconfirmed-move · possible-move (one source) · no-change · not-found
confidence0–100 (team page 92–97, two sources 80–85, one source 45–60, unchanged 65–90)
currentDomain, currentWebsiteThe new company's domain and website (verified page, not a guess)
newEmail, emailPattern, emailConfidence, emailVerification, emailCandidatesMost likely new address (first.last@, flast@ …, the domain's own pattern when visible on its site) with mx-only / smtp-valid / smtp-catch-all verification
movedAt, announcedAt, changeDetectedAtStart date only when a source states it ("effective …"), the announcement date, when this run detected the move
evidenceUrl, evidenceTitle, evidenceSnippet, signals[], signalCount, sources[]The proof
linkedinUrlPublic profile URL as the search engine shows it
seniority, department, whyNow, sellTo[]Outreach hints
isNewSinceLastRunWith a watchId: whether this move is new to the watch
searchesUsed, scrapedAt, errorProvenance

How to track job changes for your contacts

  1. Open the Actor and click Try for free.
  2. Under Contacts to check paste your list — JSON objects ({"name": "Jane Doe", "company": "Acme", "title": "VP Sales"}) or plain lines Jane Doe, Acme, VP Sales. A title or LinkedIn URL helps with common names.
  3. Leave Confirm on the new company's website and Guess the new work e-mail on. Set a Watch id if you will run the same list again.
  4. Click Start. About 10–15 seconds per contact; results stream into the Output tab.
  5. Export as CSV / Excel / JSON, or use the Job changes view for the outreach-ready columns.

Scheduling

Create a schedule with the same input and the same watchId. Every run re-checks the contacts who had not moved, skips the ones already reported as moved (not charged), and reports only new moves as isNewSinceLastRun: true.

How much does it cost?

Pay-per-event, no subscription: $0.01 per contact checked plus $0.05 per confirmed job change (first report only) and a small run-start fee. A 100-contact list with 20 confirmed moves ≈ $2. Compute and proxy usage is a small fraction of that (about $0.001–0.003 per contact).

Input

Only contacts is required. Example:

{
"contacts": [
{ "name": "Laura Zwahlen", "company": "NextRoll", "title": "Chief Revenue Officer" },
{ "name": "Arnab Bose", "company": "Okta", "title": "Chief Product Officer" },
{ "name": "Amy Hood", "company": "Microsoft", "title": "Chief Financial Officer" }
],
"onlyChanged": false,
"findEmails": true,
"verifyEmails": true,
"confirmOnTeamPage": true,
"watchId": "customers-q4"
}
InputDefaultNotes
contacts—Objects with name, company (+ optional title, email, linkedinUrl) or Name, Company, Title lines
onlyChangedfalseDeliver (and charge) only confirmed moves
daysBack365Ignore announcements older than this
confirmOnTeamPagetrueRead the candidate company's site (authoritative evidence)
findEmails, verifyEmailstrueNew e-mail guess + MX / SMTP verification
watchId—Memory across runs; each move reported once
maxContacts, maxSearchesPerContact, maxConcurrency5000 / 3 / 6Limits
searchEngineautoYahoo → Bing → Google SERP proxy
proxyConfigurationresidentialFallback when a site challenges the run's own connection

Output sample

{
"contactId": "0c2f3c1e9c7d4a1b",
"fullName": "Laura Zwahlen",
"previousCompany": "NextRoll",
"previousTitle": "Chief Revenue Officer",
"currentCompany": "Airship",
"currentTitle": "Chief Revenue Officer",
"currentDomain": "airship.com",
"changed": true,
"status": "confirmed-move",
"confidence": 97,
"movedAt": null,
"announcedAt": "2026-06-23",
"changeDetectedAt": "2026-09-26T13:26:46.970Z",
"evidenceUrl": "https://www.airship.com/company/why-airship/",
"linkedinUrl": "https://www.linkedin.com/in/laura-zwahlen-2613514",
"newEmail": "laura.zwahlen@airship.com",
"emailPattern": "first.last",
"emailVerification": "mx-only",
"signals": [
"profile-headline:linkedin.com → Airship (Chief Revenue Officer)",
"company-site:airship.com → Airship (Chief Revenue Officer)",
"team-page:airship.com → Airship (Chief Revenue Officer)"
],
"whyNow": "Laura Zwahlen moved from NextRoll to Airship as Chief Revenue Officer (3 months ago, announced 2026-06-23) — inside the first-90-days window when a new leader picks their tools.",
"sellTo": ["Laura Zwahlen at Airship (Chief Revenue Officer) — a champion in a new seat re-buys sales engagement, CRM/RevOps, data & enrichment", "Their successor at NextRoll — the seat they left is re-evaluating the same vendors"]
}

The key-value store holds OUTPUT (run summary: checked, confirmed, possible, unchanged, not found, e-mails, search-engine stats, watch state) and CONTACTS.csv.

FAQ

How accurate is it? On a 70-contact benchmark (43 executives whose moves were announced in 2025–2026 press releases, 28 who stayed) confirmed moves were right 9 times out of 10 and about half of the real moves were confirmed; most of the rest came back as possible-move (one source) or not-found, never as a wrong "confirmed". See docs/DECISIONS.md §3.

Why is a move only "possible"? One public source named the new company (usually the profile headline) and neither an announcement nor the company's own site confirmed it yet. It is delivered for you to verify and is not charged as a job change.

Does it read LinkedIn? No page on linkedin.com is ever fetched. It reads what search engines show publicly about profiles (title and snippet), announcements and company websites.

Will a promotion inside the same company count as a move? No — changed stays false, currentTitle carries the new title.

Why is the e-mail "mx-only"? Outbound SMTP (port 25) is blocked on the platform, so addresses are verified down to the mail server; the pattern is the domain's own where it is visible on its site, otherwise the most common one.

Common names? Add title and/or linkedinUrl to the contact. A lone profile that neither mentions the last-known company nor matches the title nor agrees with an announcement is not trusted.