# Company Career Page Jobs API | 💵$2/1K (`webdata_labs/company-career-page-jobs-api`) Actor

\[💵 $2.00 / 1K] Turn company websites and career pages into normalized open-job data. Auto-discovers Workday, Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, or Personio boards.

- **URL**: https://apify.com/webdata\_labs/company-career-page-jobs-api.md
- **Developed by:** [WebData Labs](https://apify.com/webdata_labs) (community)
- **Categories:** Jobs, Automation, Lead generation
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 normalized job records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Company Career Page Jobs API

Turn ordinary company websites and careers pages into clean, normalized job data.

Instead of finding an ATS board slug by hand, paste a company website, careers page, or direct job-board URL. The Actor follows career links, detects the underlying ATS, and exports every open role in one consistent schema.

### ✅ What you get / ❌ what this isn't

- ✅ Automatic discovery of supported ATS job boards from ordinary career pages.
- ✅ One schema across Workday, Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, and Personio.
- ✅ Job rows plus company-level hiring summaries.
- ✅ Optional descriptions and new-jobs-only monitoring mode.
- ❌ Not a LinkedIn, Indeed, or Google Jobs scraper.
- ❌ Generic custom career sites without a supported ATS may return a clear not-found summary.

### 🔎 Use cases

- Build a normalized job feed from a company watchlist.
- Detect which ATS a prospect uses.
- Monitor portfolio companies for new roles.
- Turn customer/company URLs into recruiting or B2B hiring signals.

### 👥 Who it is for

Recruiters, job boards, sales-intelligence teams, investors, researchers, and automation builders who start with company URLs rather than ATS-specific board identifiers.

### ⚙️ Input

```json
{
  "careerPages": [
    "https://linear.app/careers",
    "https://www.figma.com/careers"
  ],
  "maxJobsPerCompany": 200,
  "includeDescription": false,
  "onlyNewJobs": false
}
```

### 📥 How it works

1. Fetch the supplied site or career page.
2. Follow likely Careers/Jobs links and redirects.
3. Detect a supported ATS URL in the page or destination.
4. Call the ATS public job-board endpoint.
5. Normalize jobs and emit a company summary.

### 📤 Output

Job rows include `company`, `ats`, `jobId`, `title`, `department`, `team`, `location`, `isRemote`, `workplaceType`, `employmentType`, `url`, `applyUrl`, posting timestamps where exposed, `sourceInput`, and `resolvedCareerPage`.

Company summaries include detected ATS, open-job count, remote-job count, department/location rollups, newest visible posting date, and discovery provenance.

### 💵 Pricing

Pay per dataset item. Errors are emitted for diagnosis but are not intended as paid result events. Platform usage is included when published under the portfolio's pay-per-event model.

### 🔁 Monitoring

Enable `onlyNewJobs` for scheduled runs. The first run establishes state; later runs emit only previously unseen jobs while retaining a current company summary.

### ⚠️ Limits

- ATS discovery depends on the careers page exposing or redirecting to its public board.
- Some sites block datacenter traffic or hide links behind client-side applications.
- Workday list endpoints expose fewer fields than some other ATS platforms.
- A company with no current postings can be indistinguishable from an invalid public board on some systems; the summary preserves that uncertainty.

### 🧩 Supported ATS platforms

Workday, Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, and Personio.

### ❓ Quick start

Keep the prefilled Linear careers URL and click Start. The run should discover its public ATS and return normalized jobs in under five minutes.

### 🛠️ Support

For a missed careers page, include the original URL and run ID in the issue. Do not include private credentials or session cookies.

### ❓ FAQ

#### Can I submit a normal company website instead of an ATS URL?

Yes. The Actor can discover a supported careers or ATS page from a company or career-page URL when it is publicly linked.

#### Does it return closed jobs?

It returns jobs exposed by the supported public career source at run time. Removed or unpublished roles are not included.

# Actor input Schema

## `careerPages` (type: `array`):

Paste company websites, careers pages, or direct ATS board URLs. The Actor follows careers/jobs links and detects Workday, Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, and Personio.

## `onlyNewJobs` (type: `boolean`):

Return only jobs not seen in previous runs for each company.

## `maxJobsPerCompany` (type: `integer`):

Maximum number of open jobs returned for each discovered company board.

## `includeDescription` (type: `boolean`):

Include full HTML descriptions when the underlying public ATS endpoint exposes them.

## `proxyConfiguration` (type: `object`):

Optional; public ATS endpoints normally work without a proxy.

## Actor input object example

```json
{
  "careerPages": [
    "https://www.figma.com/careers"
  ],
  "onlyNewJobs": false,
  "maxJobsPerCompany": 200,
  "includeDescription": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `OUTPUT` (type: `string`):

No description

# 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 = {
    "careerPages": [
        "https://www.figma.com/careers"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("webdata_labs/company-career-page-jobs-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 = { "careerPages": ["https://www.figma.com/careers"] }

# Run the Actor and wait for it to finish
run = client.actor("webdata_labs/company-career-page-jobs-api").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "careerPages": [
    "https://www.figma.com/careers"
  ]
}' |
apify call webdata_labs/company-career-page-jobs-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=webdata_labs/company-career-page-jobs-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/TKgF71aj6dRhsdryL/builds/cyeehBlXhJzVp43K4/openapi.json
