# LinkedIn Job Change Tracker (`data-slayer/linkedin-job-change-tracker`) Actor

Track LinkedIn job changes - people starting a new role, leaving a company, or being promoted - filtered by company, title, location and recency. No cookies.

- **URL**: https://apify.com/data-slayer/linkedin-job-change-tracker.md
- **Developed by:** [Data Slayer](https://apify.com/data-slayer) (community)
- **Categories:** Lead generation, Social media, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00 / 1,000 job change events

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## LinkedIn Job Change Tracker

Track LinkedIn job changes at scale — the people who started a new role, left a company or were promoted — filtered by company, job title, location and recency, and exported as a structured feed to JSON, CSV or Excel.

**Cookieless · Fresh data · No LinkedIn login or account risk.**

### Watch the demo

Video tutorial coming soon.

### What you get

A job change is the highest-intent buying signal in B2B. A new VP of Engineering buys differently in week three than in month nine, and the champion who just left your customer is the reason that account is about to churn. This actor returns those events as a feed you can poll — with the person and the company already attached, so one call gives you something you can act on immediately.

Each event includes:

- `event_type` — `joined`, `left` or `title_change`
- `changed_at` — when the change took effect
- `detected_at` — when it was detected
- `detection_lag_days` — the gap between the two (lower is fresher)
- `title.current` / `title.previous` — the new title and, where meaningful, the one it replaced
- `person` — profile id, handle, full name, first/last name, headline and LinkedIn URL
- `organization` — organization id, name and LinkedIn URL
- flattened convenience fields: `person_full_name`, `person_headline`, `person_linkedin_url`, `organization_name`, `organization_linkedin_url`, `title_current`, `title_previous`

Output example:

```json
{
  "event_type": "title_change",
  "changed_at": "2026-05-01T00:00:00Z",
  "detected_at": "2026-05-01T17:20:04.389921Z",
  "detection_lag_days": 0,
  "title": { "current": "Data Engineer", "previous": "Data Analyst" },
  "person": {
    "profile_id": "dm_prsn_tnd66ysw4lmt4yighsalfnmf2tcanlpmp3exh6q",
    "handle": "lecomte-quentin",
    "full_name": "Quentin Lecomte",
    "headline": "Data Engineer @ Aktivco | Camusat Group",
    "linkedin_url": "https://linkedin.com/in/lecomte-quentin"
  },
  "organization": {
    "organization_id": "dm_org_33u32yb3sh56d6jxiw3lzljselgver2p4ons6",
    "name": "AktivCo",
    "slug": "activco",
    "linkedin_url": "https://www.linkedin.com/company/activco"
  },
  "person_full_name": "Quentin Lecomte",
  "person_linkedin_url": "https://linkedin.com/in/lecomte-quentin",
  "organization_name": "AktivCo",
  "organization_linkedin_url": "https://www.linkedin.com/company/activco",
  "title_current": "Data Engineer",
  "title_previous": "Data Analyst",
  "input_page": 1,
  "fetched_at": "2026-09-23T00:00:00Z"
}
```

### Input

| Field | Type | Description |
|---|---|---|
| `company_urls` | `string[]` | LinkedIn company URLs or company page names, e.g. `google` for `/company/google/` (up to 50 companies combined with `organization_ids`) |
| `organization_ids` | `string[]` | Organization IDs (`dm_org_...`) from a previous run — faster than URLs once you have them |
| `event_type` | `string` | `any` (default), `joined`, `left` or `title_change` |
| `title` | `string` | Word-match on the new job title (min 3 characters) |
| `geo_city` | `string` | Partial city match (min 3 characters) |
| `geo_country_code` | `string` | Two-letter country code, e.g. `DE` |
| `days_ago` | `integer` | Recency window on detection time, 1–365 days |
| `max_results` | `integer` | Maximum events to save (default 100, `0` = no limit, 40-page safety cap) |
| `limit_per_page` | `integer` | Events per page, 1–50 (default 25) |

### How to use it

1. Optionally add company URLs or company page names (or `organization_ids` from a previous run).
2. Optionally filter by event type, job title, city, country code and recency.
3. Set **Maximum results** (default 100) and click **Start**.
4. Download the dataset as JSON, CSV, Excel, XML or another Apify export format.

Example — who just joined engineering roles in Germany in the last week:

```json
{
  "event_type": "joined",
  "title": "Engineering",
  "geo_country_code": "DE",
  "days_ago": 7,
  "max_results": 100
}
```

Results are sorted by freshness. The feed opens with same-day detections; events detected long after the fact surface as you page deeper. Every real dated event is included — a stale one is ordered later, never dropped.

### Use cases

- **Champion tracking** — re-engage the power users and decision-makers who changed jobs, at their new company, while the relationship is still warm.
- **Customer churn signals** — see who just left an account you serve and get ahead of the renewal conversation.
- **Territory and hiring-signal prospecting** — find companies hiring into a function, or people promoted into budget-owning roles, and reach out with timely context.
- **Enrichment and routing** — feed new-role events into your CRM, scoring and routing workflows so the right rep sees them first.
- **AI-agent context** — give an agent structured job-change context before drafting outreach.

### Pricing

The actor costs **$4 per 1,000 job-change events** (`$0.004` per event).

### Integrations

Run from Apify Console or call it through the Apify API. Results land in the default dataset and can feed HubSpot, Salesforce, Clay, Make, Zapier, n8n, webhooks, Google Sheets, Airtable, databases, and Apify MCP Server for AI agents. Use schedules to poll page 1 and catch new events as they are detected.

### Other LinkedIn Actors by data-slayer

| Actor | What it does |
|---|---|
| [LinkedIn Job Scraper](https://apify.com/data-slayer/linkedin-job-scraper) | Full details for LinkedIn job postings |
| [LinkedIn People Search (ICP)](https://apify.com/data-slayer/linkedin-people-search) | Find people by title, seniority, function, company, location |
| [LinkedIn Company Employees](https://apify.com/data-slayer/linkedin-company-employees) | Employees at a company, filtered by title, seniority and function |
| [LinkedIn Company Search (ICP)](https://apify.com/data-slayer/linkedin-company-search) | Find companies by industry, size, location and tech stack |
| [LinkedIn Profile Scraper](https://apify.com/data-slayer/linkedin-profile-scraper) | Full profile data from any LinkedIn profile URL |
| [LinkedIn Profile Posts Scraper](https://apify.com/data-slayer/linkedin-profile-posts-scraper) | Recent posts from a profile, with engagement metrics |
| [LinkedIn Company Scraper](https://apify.com/data-slayer/linkedin-company-scraper) | Full company profile data |
| [LinkedIn Company Posts Scraper](https://apify.com/data-slayer/linkedin-company-posts-scraper) | Recent posts from any company page |
| [LinkedIn Post Performance Scraper](https://apify.com/data-slayer/linkedin-post-analytics-scraper) | Likes, comments, shares and reaction breakdown for any post |
| [LinkedIn Post Engagers Scraper](https://apify.com/data-slayer/linkedin-post-engagers-email-finder-no-cookies) | Everyone who engaged with a post — commenters, reactors, reposters |
| [LinkedIn Post Comments Scraper](https://apify.com/data-slayer/linkedin-post-comments) | Every comment on a post, with commenter profiles |
| [LinkedIn Post Reactions Scraper](https://apify.com/data-slayer/linkedin-post-reactions) | Everyone who reacted to a post, with reactor profiles |
| [LinkedIn Post Reposts Scraper](https://apify.com/data-slayer/linkedin-post-reposts) | Everyone who reposted or shared a post |
| [LinkedIn Profile Engagers Scraper](https://apify.com/data-slayer/linkedin-audience-email-finder-no-cookies) | Everyone who engaged across a profile's recent posts, ranked by engagement |
| [LinkedIn Profile Reactions Scraper](https://apify.com/data-slayer/linkedin-profile-reactions) | Reactions a profile left on other people's posts |
| [LinkedIn Profile Comments Scraper](https://apify.com/data-slayer/linkedin-profile-comments) | Comments a profile left on other people's posts |

### Which LinkedIn actor should I use?

| I have… | And I want… | Use |
|---|---|---|
| A company URL | People who recently changed jobs | LinkedIn Job Change Tracker |
| A job URL or ID | Full job details | LinkedIn Job Scraper |
| Search filters | People matching an ICP | LinkedIn People Search (ICP) |
| A company URL | Its employees, by title/seniority/function | LinkedIn Company Employees |
| Search filters | Companies matching an ICP | LinkedIn Company Search (ICP) |
| Profile URL(s) | Full profile data | LinkedIn Profile Scraper |
| A company URL | Full company profile | LinkedIn Company Scraper |

### FAQ

#### Can I track LinkedIn job changes without login or cookies?

Yes. The actor uses public data and requires no LinkedIn account, session cookies or browser extension.

#### What event types can I track?

`joined` (started a new role), `left` (left a company), `title_change` (promoted or retitled) — or `any` for all three.

#### How fresh are the events?

Results are sorted by freshness and each event carries `detection_lag_days`. Poll page 1 on a schedule and stop when the lag exceeds what you have already processed.

#### Can I track specific companies?

Yes — pass LinkedIn company URLs or company page names, or the `organization_ids` returned by a previous run.

#### Can I filter by title or location?

Yes. `title` word-matches the new job title, and `geo_city` / `geo_country_code` narrow by place. The location filters narrow results but are not echoed back on events — fetch the person's profile if you need their location.

#### Is this a LinkedIn job change API?

Yes. Call the actor through the Apify API, receive a run ID and retrieve structured results from the default dataset. AI agents can also call it through Apify MCP Server.

#### What formats can I export?

JSON, CSV, Excel, XML and the other Apify dataset export formats.

#### How much does it cost?

`$0.004` per event — **$4 per 1,000 job changes**.

### Limits and data notes

- Only process data you are permitted to use and comply with applicable laws and platform terms.
- Company URLs that are not yet tracked are rejected by the provider; use the `organization_ids` returned from a successful run afterwards.
- `title.previous` is only meaningful for `title_change` and `left`; a `joined` event has no title to have replaced.

### Feedback and support

Found a bug or need a filter added? Open an issue on the actor's Apify page and it will be reviewed.

### Related actors

More from the same portfolio. Apify only auto-recommends actors in the same category, so here are the rest of ours:

| Actor | What it does |
|---|---|
| [LinkedIn Account Intent Feed](https://apify.com/data-slayer/linkedin-account-intent-feed) | LinkedIn workflow |
| [LinkedIn Buying-Committee Mapper](https://apify.com/data-slayer/linkedin-buying-committee-mapper) | LinkedIn workflow |
| [LinkedIn Champion Tracker](https://apify.com/data-slayer/linkedin-champion-job-change-tracker) | LinkedIn workflow |
| [LinkedIn Company Employees](https://apify.com/data-slayer/linkedin-company-employees) | LinkedIn workflow |
| [LinkedIn Company Posts Scraper](https://apify.com/data-slayer/linkedin-company-posts-scraper) | LinkedIn workflow |
| [LinkedIn Company Scraper](https://apify.com/data-slayer/linkedin-company-scraper) | LinkedIn workflow |
| [LinkedIn Company Search (ICP)](https://apify.com/data-slayer/linkedin-company-search) | LinkedIn workflow |
| [LinkedIn Competitor Content Intelligence](https://apify.com/data-slayer/linkedin-competitor-content-intelligence) | LinkedIn workflow |
| [LinkedIn Competitor Hijack Leads](https://apify.com/data-slayer/linkedin-competitor-hijack-leads) | LinkedIn workflow |
| [LinkedIn Engagement Audience Builder](https://apify.com/data-slayer/linkedin-engagement-audience-builder) | LinkedIn workflow |
| [LinkedIn Executive Post Monitor](https://apify.com/data-slayer/linkedin-executive-post-monitor) | LinkedIn workflow |
| [LinkedIn Hiring Pulse](https://apify.com/data-slayer/linkedin-hiring-pulse) | LinkedIn workflow |
| [LinkedIn Job Scraper](https://apify.com/data-slayer/linkedin-job-scraper) | LinkedIn workflow |
| [LinkedIn Market Map Builder](https://apify.com/data-slayer/linkedin-market-map-builder) | LinkedIn workflow |
| [LinkedIn People Search (ICP)](https://apify.com/data-slayer/linkedin-people-search) | LinkedIn workflow |
| [LinkedIn Post Comments](https://apify.com/data-slayer/linkedin-post-comments) | LinkedIn workflow |
| [LinkedIn Post Engagers Scraper](https://apify.com/data-slayer/linkedin-post-engagers-email-finder-no-cookies) | LinkedIn workflow |
| [LinkedIn Post Performance Scraper](https://apify.com/data-slayer/linkedin-post-analytics-scraper) | LinkedIn workflow |
| [LinkedIn Post Reactions](https://apify.com/data-slayer/linkedin-post-reactions) | LinkedIn workflow |
| [LinkedIn Post Reposts](https://apify.com/data-slayer/linkedin-post-reposts) | LinkedIn workflow |
| [LinkedIn Profile Comments](https://apify.com/data-slayer/linkedin-profile-comments) | LinkedIn workflow |
| [LinkedIn Profile Engagers Scraper](https://apify.com/data-slayer/linkedin-audience-email-finder-no-cookies) | LinkedIn workflow |
| [LinkedIn Profile Posts Scraper](https://apify.com/data-slayer/linkedin-profile-posts-scraper) | LinkedIn workflow |
| [LinkedIn Profile Reactions](https://apify.com/data-slayer/linkedin-profile-reactions) | LinkedIn workflow |
| [LinkedIn Profile Scraper · Fresh · No Cookies](https://apify.com/data-slayer/linkedin-profile-scraper) | LinkedIn workflow |
| [LinkedIn Skill Mapper](https://apify.com/data-slayer/linkedin-skill-mapper) | LinkedIn workflow |
| [LinkedIn Talent Flow Mapper](https://apify.com/data-slayer/linkedin-talent-flow-mapper) | LinkedIn workflow |
| [LinkedIn Talent Mapper](https://apify.com/data-slayer/linkedin-talent-mapper) | LinkedIn workflow |
| [LinkedIn Warm Path Finder](https://apify.com/data-slayer/linkedin-warm-path-finder) | LinkedIn workflow |
| [LinkedIn Why-Now Account Brief](https://apify.com/data-slayer/linkedin-why-now-account-brief) | LinkedIn workflow |

# Actor input Schema

## `company_urls` (type: `array`):

LinkedIn company URLs (e.g. https://www.linkedin.com/company/stripe/) or bare slugs (e.g. stripe). Up to 50 companies total across this field and Company IDs.

## `organization_ids` (type: `array`):

Datamagnet organization IDs (dm\_org\_...) returned by a previous run. Faster than company URLs. Up to 50 companies total across this field and Company URLs.

## `event_type` (type: `string`):

Restrict to one kind of job-change event. Choose Any event type to receive all three.

## `title` (type: `string`):

Word-match on the new job title, minimum 3 characters. For example Engineering matches VP of Engineering and Engineering Manager.

## `geo_city` (type: `string`):

Partial match on the person's current city, minimum 3 characters. For example Berlin.

## `geo_country_code` (type: `string`):

Two-letter country code for the person's current location, case-insensitive. For example DE or US.

## `days_ago` (type: `integer`):

Recency window on the detection time, from 1 to 365 days. Leave empty to search all events.

## `max_results` (type: `integer`):

Maximum number of job-change events to save. Enter 0 for no limit (up to a 40-page safety cap).

## `limit_per_page` (type: `integer`):

How many events to request per page, from 1 to 50. Higher values finish faster.

## Actor input object example

```json
{
  "company_urls": [],
  "organization_ids": [],
  "event_type": "any",
  "title": "",
  "geo_city": "",
  "geo_country_code": "",
  "max_results": 100,
  "limit_per_page": 25
}
```

# Actor output Schema

## `results` (type: `string`):

One dataset item per job-change event.

## `run_summary` (type: `string`):

Per-run status, filters and counts.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("data-slayer/linkedin-job-change-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("data-slayer/linkedin-job-change-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call data-slayer/linkedin-job-change-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data-slayer/linkedin-job-change-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/wC04prCPeKot6Floy/builds/FpBxAbGfqcB3seW4e/openapi.json
