# Expired Jobs API for: Advanced LinkedIn Job Search API (`fantastic-jobs/expired-jobs-api-for-advanced-linkedin-job-search-api`) Actor

This Actor is a companion to the Advanced LinkedIn Job Search API Actor. It provides expired jobs once per day.

- **URL**: https://apify.com/fantastic-jobs/expired-jobs-api-for-advanced-linkedin-job-search-api.md
- **Developed by:** [Fantastic.jobs](https://apify.com/fantastic-jobs) (community)
- **Categories:** Jobs
- **Stats:** 10 total users, 3 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.75 / actor start

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 Expired Jobs API

Keep your job database clean by removing LinkedIn postings that are no longer live.

This Actor is a companion to the [Advanced LinkedIn Job Search API](https://apify.com/fantastic-jobs/advanced-linkedin-job-search-api). It returns the IDs of every LinkedIn job that expired or was removed during the **previous day**. Match these IDs against the `id` field of the jobs you stored from the Advanced LinkedIn Job Search API, and delete or deactivate the matching rows.

**Heads up: this Actor returns between 300,000 and 500,000 IDs every day.** Make sure your pipeline can handle a list of that size.

### How it works

- Every job we index is re-checked daily until it is 6 months old. Jobs older than 6 months are expired automatically.
- The list is a **daily snapshot of the previous UTC day**, not a rolling 24-hour window. It is refreshed every day at 01:00 UTC.
- Only LinkedIn jobs are covered. Jobs from Wellfound and Y Combinator are never flagged as expired, so you'll need your own freshness logic for those (for example, removing them after a fixed number of days).

### When to run it

Run this Actor **once per day, after 01:00 UTC** (for example, schedule it at 02:00 UTC). Each run returns all jobs that expired during the previous day.

**You must run this Actor every single day.** Each run only returns the jobs that expired during the previous day. If you skip a day, the IDs from that day are gone and this Actor can't return them later, so those expired jobs will stay in your database.

**Please don't run this Actor more than once per day.** The snapshot only changes once a day, so extra runs return the same IDs and cost you money without adding any data.

Tip: use [Apify Schedules](https://docs.apify.com/platform/schedules) with a cron expression like `0 2 * * *` to automate this.

### Input

This Actor takes no input. Just run it.

### Output

The dataset contains a single item with all expired IDs in one array:

```json
{
    "id": [1234567890, 1234567891, 1234567892]
}
```

### Typical workflow

1. Run the [Advanced LinkedIn Job Search API](https://apify.com/fantastic-jobs/advanced-linkedin-job-search-api) on a schedule and store the jobs in your own database, keyed by `id`.
2. Every day after 01:00 UTC, run this Actor. Don't skip any days.
3. Delete or mark as expired every stored job whose `id` appears in the output.

### Pricing

This Actor is charged per run. We can no longer offer a flat monthly fee through Apify, which is why we moved to this model.

### Need more?

For hourly expiry updates or longer backfill windows (last month or last 6 months), use the [Fantastic.jobs API](https://developer.fantastic.jobs) directly.

# Actor input Schema

## Actor input object example

```json
{}
```

# 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("fantastic-jobs/expired-jobs-api-for-advanced-linkedin-job-search-api").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("fantastic-jobs/expired-jobs-api-for-advanced-linkedin-job-search-api").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 fantastic-jobs/expired-jobs-api-for-advanced-linkedin-job-search-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fantastic-jobs/expired-jobs-api-for-advanced-linkedin-job-search-api"
        }
    }
}
```

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/gyYUygphXEA0HSgHZ/builds/tpAJNyZbVyGSnqs3j/openapi.json
