# Multi-ATS Company Jobs Scraper (`automation-lab/multi-ats-jobs-scraper`) Actor

Scrape job listings from company career pages across 5 ATS platforms: Greenhouse, Workday, SmartRecruiters, Lever, and Ashby. Standardized output with 15 fields per job. Pure HTTP, no browser needed.

- **URL**: https://apify.com/automation-lab/multi-ats-jobs-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Multi-ATS Company Jobs Scraper

### What does Multi-ATS Company Jobs Scraper do?

**Multi-ATS Company Jobs Scraper** extracts job listings from company career pages across **5 major ATS (Applicant Tracking System) platforms**: Greenhouse, Workday, SmartRecruiters, Lever, and Ashby. Just paste a company's career page URL, and get standardized job data — title, location, department, employment type, salary, and more — in a single, unified format.

This is the easiest way to monitor job openings at any company. Try it now by clicking **Start** with the default input (Airbnb on Greenhouse). No API key or login required.

Unlike other scrapers that only work with one ATS, this actor **auto-detects** which platform a company uses and applies the right extraction logic. Pure HTTP — no browser overhead, blazing fast.

### Who is Multi-ATS Company Jobs Scraper for?

🎯 **HR Tech Companies & Job Boards**
- Aggregate job listings from hundreds of companies into your job board
- Monitor new openings across your client portfolio
- Build ATS-agnostic job feeds for your platform

📊 **Recruiters & Talent Acquisition Teams**
- Track open positions at target companies across any ATS
- Monitor competitor hiring activity and team growth
- Filter by department, location, or keyword to find relevant openings

📈 **Market Researchers & Analysts**
- Analyze hiring trends across industries and geographies
- Track workforce expansion signals for investment decisions
- Build datasets of job market supply by company, role type, or location

🤖 **Automation Engineers & Data Teams**
- Feed structured job data into CRM, ATS, or enrichment pipelines
- Schedule daily scrapes for real-time job monitoring
- Integrate with Zapier, Make, Google Sheets, or any API client

### Why use Multi-ATS Company Jobs Scraper?

✅ **5 ATS platforms in one actor** — Greenhouse, Workday, SmartRecruiters, Lever, and Ashby
✅ **Standardized output** — 15 fields per job, same format regardless of ATS
✅ **Auto-detection** — paste any career page URL, the scraper figures out the rest
✅ **Pure HTTP** — no browser, no Playwright, 256MB memory, minimal compute cost
✅ **No API key or login required** — all data from public career pages
✅ **Resilient** — gracefully skips invalid companies, never crashes on bad input
✅ **Predictable pricing** — pay per job listing extracted, not per compute minute
✅ **Full Apify platform** — API access, scheduling, webhooks, 3,000+ integrations

### What data can you extract?

Each job listing includes up to **15 standardized fields**:

| Field | Description | Example |
|-------|-------------|---------|
| 📌 title | Job title | "Senior Software Engineer" |
| 🏢 company | Company name | "Airbnb" |
| 📍 location | Primary location | "San Francisco, CA" |
| 🏷️ department | Department or team | "Engineering" |
| 💼 employmentType | Full-time, Part-time, Contract | "Full-time" |
| 🏠 workplaceType | Remote, Hybrid, On-site | "Remote" |
| 🔗 url | Direct job posting URL | `https://boards.greenhouse.io/...` |
| 📝 applyUrl | Application URL | `https://boards.greenhouse.io/.../apply` |
| 📅 postedAt | When the job was posted | "2026-03-15T09:00:00Z" |
| 📄 description | Full HTML job description | `<div>About the role...</div>` |
| 💰 salary | Compensation info (if available) | "$150,000 - $200,000" |
| 🎓 experienceLevel | Required experience level | "Mid-Senior Level" |
| 🆔 jobId | Platform-specific job ID | "7649441" |
| ⚙️ atsSource | ATS platform detected | "greenhouse" |
| 🔑 companySlug | Company identifier on ATS | "airbnb" |

### How much does it cost to scrape company job listings?

This Actor uses **pay-per-event** pricing — you pay only for what you scrape. No monthly subscription. All platform costs are **included**.

| | Free | Starter ($29/mo) | Scale ($199/mo) | Business ($999/mo) |
|---|---|---|---|---|
| **Per job listing** | $0.00115 | $0.001 | $0.00078 | $0.0006 |
| **1,000 jobs** | $1.15 | $1.00 | $0.78 | $0.60 |
| **10,000 jobs** | $11.50 | $10.00 | $7.80 | $6.00 |

Higher-tier plans get additional volume discounts (up to 72% off at Diamond tier).

**Real-world cost examples:**

| Company | ATS | Jobs | Duration | Cost (Free tier) |
|---------|-----|------|----------|------------------|
| Airbnb (Greenhouse) | Greenhouse | 253 | ~2s | ~$0.30 |
| VISA (SmartRecruiters) | SmartRecruiters | 933 | ~10s | ~$1.08 |
| Spotify (Lever) | Lever | 166 | ~1s | ~$0.20 |
| Ramp (Ashby) | Ashby | 132 | ~1s | ~$0.16 |

💡 **Free plan** ($5 credits): scrape ~4,300 job listings across any ATS.

### How to scrape company job listings

1. Go to the [Multi-ATS Company Jobs Scraper](https://apify.com/automation-lab/multi-ats-jobs-scraper) page on Apify Store
2. Click **Start** to try with the default input (Airbnb on Greenhouse)
3. To add your own companies, paste career page URLs into the **Company Career Page URLs** field:
   - Greenhouse: `https://boards.greenhouse.io/airbnb`
   - Workday: `https://walmart.wd5.myworkdayjobs.com/WalmartExternal`
   - SmartRecruiters: `smartrecruiters:VISA`
   - Lever: `lever:spotify`
   - Ashby: `https://jobs.ashbyhq.com/ramp`
4. Optionally set filters (keyword, location, department) and max jobs per company
5. Click **Start** and wait for results
6. Download results as JSON, CSV, or Excel from the **Dataset** tab

**Input example — multiple companies:**
```json
{
    "companyUrls": [
        "https://boards.greenhouse.io/airbnb",
        "https://jobs.ashbyhq.com/ramp",
        "lever:spotify",
        "smartrecruiters:VISA",
        "https://walmart.wd5.myworkdayjobs.com/WalmartExternal"
    ],
    "maxJobsPerCompany": 50,
    "includeDescription": true
}
````

**Input example — filtered search:**

```json
{
    "companyUrls": ["https://boards.greenhouse.io/airbnb"],
    "filterDepartment": "Engineering",
    "filterLocation": "San Francisco",
    "maxJobsPerCompany": 100
}
```

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| companyUrls | array | `[]` | Career page URLs or `ats:slug` format entries |
| maxJobsPerCompany | integer | 100 | Maximum jobs to extract per company (0 = unlimited) |
| searchQuery | string | `""` | Filter jobs by keyword in title/description |
| filterLocation | string | `""` | Filter by location text (partial match) |
| filterDepartment | string | `""` | Filter by department name (partial match) |
| includeDescription | boolean | `true` | Include full HTML job descriptions |

### Output example

```json
{
    "title": "Senior Software Engineer",
    "company": "Airbnb",
    "location": "San Francisco, CA",
    "department": "Software Engineering",
    "employmentType": null,
    "workplaceType": null,
    "url": "https://careers.airbnb.com/positions/7649441?gh_jid=7649441",
    "applyUrl": "https://careers.airbnb.com/positions/7649441?gh_jid=7649441#app",
    "postedAt": "2026-02-24T09:04:33-05:00",
    "description": "<div><h3>About the role...</h3></div>",
    "salary": null,
    "experienceLevel": null,
    "jobId": "7649441",
    "atsSource": "greenhouse",
    "companySlug": "airbnb"
}
```

### Tips for best results

💡 **Start small** — try with 1-2 companies and `maxJobsPerCompany: 10` to verify your URLs work before scaling up.

💡 **ATS detection** — the scraper auto-detects the ATS from the URL. If auto-detection fails, use the `ats:slug` format: `greenhouse:airbnb`, `lever:spotify`, `smartrecruiters:VISA`, `ashby:ramp`.

💡 **Finding career page URLs** — Google `[company name] careers` to find their career page. Look at the URL to identify the ATS platform.

💡 **Skip descriptions for speed** — set `includeDescription: false` if you only need job metadata (title, location, department). This is 2-10x faster for Workday and SmartRecruiters.

💡 **Schedule daily runs** — use Apify scheduling to monitor job openings daily and get notified of new positions via webhooks or integrations.

💡 **Workday URLs** — Workday career pages follow the pattern `{company}.wd{N}.myworkdayjobs.com/{board}`. You can find the exact URL on the company's career page.

### Integrations

📊 **Multi-ATS Jobs Scraper → Google Sheets** — export daily job listings to a shared spreadsheet for your recruiting team to review.

💬 **Multi-ATS Jobs Scraper → Slack/Discord** — get instant alerts when new engineering roles open at target companies.

🔄 **Multi-ATS Jobs Scraper → Make/Zapier** — trigger enrichment workflows when new jobs appear: look up hiring manager on LinkedIn, add to CRM, send outreach.

📅 **Scheduled monitoring** — run daily/weekly to track hiring trends. Compare job counts over time to detect team expansions or contractions.

🔗 **Webhooks** — get real-time notifications when a run completes. Process results immediately in your pipeline.

🗄️ **Multi-ATS Jobs Scraper → Database** — pipe standardized job data into PostgreSQL, MongoDB, or any database for analytics dashboards.

### Using the Apify API

**Node.js:**

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('automation-lab/multi-ats-jobs-scraper').call({
    companyUrls: ['https://boards.greenhouse.io/airbnb', 'lever:spotify'],
    maxJobsPerCompany: 50,
    includeDescription: false,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("automation-lab/multi-ats-jobs-scraper").call(run_input={
    "companyUrls": ["https://boards.greenhouse.io/airbnb", "lever:spotify"],
    "maxJobsPerCompany": 50,
    "includeDescription": False,
})

items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

**cURL:**

```bash
curl -X POST "https://api.apify.com/v2/acts/automation-lab~multi-ats-jobs-scraper/runs?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "companyUrls": ["https://boards.greenhouse.io/airbnb"],
    "maxJobsPerCompany": 50,
    "includeDescription": false
  }'
```

### Use with AI agents via MCP

Multi-ATS Company Jobs Scraper is available as a tool for AI assistants that support the [Model Context Protocol (MCP)](https://docs.apify.com/platform/integrations/mcp).

Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:

#### Setup for Claude Code

```bash
claude mcp add --transport http apify "https://mcp.apify.com"
```

#### Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

```json
{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com"
        }
    }
}
```

Your AI assistant will use OAuth to authenticate with your Apify account on first use.

#### Example prompts

Once connected, try asking your AI assistant:

- "Use automation-lab/multi-ats-jobs-scraper to find all open engineering jobs at Airbnb and Ramp"
- "Scrape all remote job listings from Spotify's Lever career page and VISA's SmartRecruiters page"
- "Get a list of all jobs at Walmart's Workday career site that mention 'data science' in the title"

Learn more in the [Apify MCP documentation](https://docs.apify.com/platform/integrations/mcp).

### Is it legal to scrape company job listings?

Web scraping of publicly available data is generally legal, as confirmed by the US Ninth Circuit Court of Appeals in [HiQ Labs v. LinkedIn](https://en.wikipedia.org/wiki/HiQ_Labs_v._LinkedIn) (2022). This scraper only accesses publicly available career pages and job listings that companies intentionally publish for public viewing.

This Actor does not require login credentials, does not bypass any access controls, and only extracts data that companies have made publicly available. Users are responsible for ensuring their use of the extracted data complies with applicable laws and the terms of service of the respective platforms.

For more information, see [Apify's guide on the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### FAQ

**How fast is this scraper?**
Very fast. Most companies complete in 1-5 seconds because we use direct API endpoints (no browser rendering). A typical run scraping 5 companies finishes in under 10 seconds.

**How much does it cost to scrape 10,000 jobs?**
At the free tier: approximately $11.50 (10,000 × $0.00115). With a Scale plan ($199/mo): approximately $7.80. The start fee is $0.005 per run.

**What's the difference between this and your Greenhouse Jobs Scraper?**
The [Greenhouse Jobs Scraper](https://apify.com/automation-lab/greenhouse-jobs-scraper) is specialized for Greenhouse with deeper features (application questions, advanced filters). This Multi-ATS scraper covers 5 platforms with a standardized output format — ideal when you need to scrape across multiple ATS platforms.

**Why are some fields null?**
Not all ATS platforms expose the same data. For example, Greenhouse doesn't provide salary or employment type in listings. Workday doesn't include department in search results. Fields are null when the source ATS doesn't provide that information.

**Why does the scraper skip my company URL?**
The scraper needs to detect which ATS platform to use from the URL. If auto-detection fails, use the explicit format: `greenhouse:slug`, `lever:slug`, `smartrecruiters:slug`, `ashby:slug`, or `workday:slug`. Check that the URL matches one of the supported ATS patterns.

**Which ATS platforms are supported?**
Currently: Greenhouse (220K+ companies), Workday (10K+ companies), SmartRecruiters (4K+ companies), Lever (2K+ companies), and Ashby (800+ companies). More platforms will be added based on user demand.

### Other job scrapers

- [Greenhouse Jobs Scraper](https://apify.com/automation-lab/greenhouse-jobs-scraper) — specialized Greenhouse scraper with application questions and deep filtering
- [Google Jobs Scraper](https://apify.com/automation-lab/google-jobs-scraper) — scrape job listings from Google Jobs search results

# Actor input Schema

## `companyUrls` (type: `array`):

Paste career page URLs from supported ATS platforms. The scraper auto-detects which ATS to use.

Examples:

- Greenhouse: https://boards.greenhouse.io/airbnb
- Workday: https://walmart.wd5.myworkdayjobs.com/WalmartExternal
- SmartRecruiters: VISA (company identifier)
- Lever: spotify
- Ashby: ramp

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

Maximum number of job listings to extract per company. Set to 0 for unlimited.

## `searchQuery` (type: `string`):

Filter jobs matching this keyword in title or description. Works on all ATS platforms. Case-insensitive.

## `filterLocation` (type: `string`):

Show only jobs matching this location text (e.g., "New York", "Remote"). Case-insensitive partial match.

## `filterDepartment` (type: `string`):

Show only jobs matching this department or team name. Case-insensitive partial match.

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

Fetch full HTML job descriptions. Disabling this makes scraping faster but omits job details.

## Actor input object example

```json
{
  "companyUrls": [
    "https://boards.greenhouse.io/airbnb"
  ],
  "maxJobsPerCompany": 20,
  "searchQuery": "",
  "filterLocation": "",
  "filterDepartment": "",
  "includeDescription": true
}
```

# Actor output Schema

## `overview` (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 = {
    "companyUrls": [
        "https://boards.greenhouse.io/airbnb"
    ],
    "maxJobsPerCompany": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/multi-ats-jobs-scraper").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 = {
    "companyUrls": ["https://boards.greenhouse.io/airbnb"],
    "maxJobsPerCompany": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/multi-ats-jobs-scraper").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 '{
  "companyUrls": [
    "https://boards.greenhouse.io/airbnb"
  ],
  "maxJobsPerCompany": 20
}' |
apify call automation-lab/multi-ats-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/multi-ats-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Multi-ATS Company Jobs Scraper",
        "description": "Scrape job listings from company career pages across 5 ATS platforms: Greenhouse, Workday, SmartRecruiters, Lever, and Ashby. Standardized output with 15 fields per job. Pure HTTP, no browser needed.",
        "version": "0.1",
        "x-build-id": "ttBOtnDYTvMI8lD5h"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~multi-ats-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-multi-ats-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/automation-lab~multi-ats-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-multi-ats-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/automation-lab~multi-ats-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-multi-ats-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "companyUrls": {
                        "title": "🏢 Company Career Page URLs",
                        "type": "array",
                        "description": "Paste career page URLs from supported ATS platforms. The scraper auto-detects which ATS to use.\n\nExamples:\n- Greenhouse: https://boards.greenhouse.io/airbnb\n- Workday: https://walmart.wd5.myworkdayjobs.com/WalmartExternal\n- SmartRecruiters: VISA (company identifier)\n- Lever: spotify\n- Ashby: ramp",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "maxJobsPerCompany": {
                        "title": "📊 Max Jobs per Company",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of job listings to extract per company. Set to 0 for unlimited.",
                        "default": 100
                    },
                    "searchQuery": {
                        "title": "🔎 Keyword Filter",
                        "type": "string",
                        "description": "Filter jobs matching this keyword in title or description. Works on all ATS platforms. Case-insensitive.",
                        "default": ""
                    },
                    "filterLocation": {
                        "title": "📍 Location Filter",
                        "type": "string",
                        "description": "Show only jobs matching this location text (e.g., \"New York\", \"Remote\"). Case-insensitive partial match.",
                        "default": ""
                    },
                    "filterDepartment": {
                        "title": "🏷️ Department Filter",
                        "type": "string",
                        "description": "Show only jobs matching this department or team name. Case-insensitive partial match.",
                        "default": ""
                    },
                    "includeDescription": {
                        "title": "📄 Include Job Descriptions",
                        "type": "boolean",
                        "description": "Fetch full HTML job descriptions. Disabling this makes scraping faster but omits job details.",
                        "default": true
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
