# Levels.fyi Jobs Scraper (`solidcode/levels-fyi-scraper`) Actor

\[💰 $1 / 1K] Extract tech jobs from Levels.fyi with base and total compensation ranges, company metadata, locations, work arrangement, and apply links. Search by keyword and location, filter by work arrangement and job family, or paste Levels.fyi URLs for structured, export-ready data.

- **URL**: https://apify.com/solidcode/levels-fyi-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

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

## Levels.fyi Jobs Scraper

Pull tech job listings from Levels.fyi at scale — each role arrives with base and total compensation ranges, a per-seniority-level total-comp breakdown, company intelligence (type, employee count, estimated valuation), work arrangement, locations, and a ready-to-apply link. Built for technical recruiters, compensation analysts, and job seekers who need real salary data on 33,000+ tech roles without copying numbers off the website one listing at a time.

### Why This Scraper?

- **Base AND total compensation on every row** — `minBaseSalary`/`maxBaseSalary` and `minTotalSalary`/`maxTotalSalary` with currency, plus a per-seniority-level `totalCompensationEstimates` breakdown. Most job scrapers return zero salary data; this one returns four ranges and a level-by-level comp table.
- **Company intelligence on every listing** — company type, employee count, estimated valuation, a one-line description, and logo URL attached to each job, so you can segment by startup vs. public or by headcount without a second data source.
- **3 work-arrangement filters** — Remote, Hybrid, or Office, applied server-side so you only pull the roles you want.
- **8 engineering & product disciplines** — Software Engineer, Engineering Manager, Data Scientist, Data Science Manager, Product Manager, Designer, Security, and Hardware Engineer job-family filters.
- **7 seniority levels** — Internship, Entry Level, Senior, Principal, Manager, Director, and Executive, so you can isolate exactly the band you're benchmarking.
- **Minimum-total-compensation floor** — set a dollar threshold to surface only high-paying senior and staff roles and skip everything below it.
- **3 sort modes** — Relevance, Total Compensation (highest first), or Date Posted (newest first).
- **Multi-keyword batch search** — queue up to 50 job titles in one run; each keyword paginates independently and listings that overlap across keywords are deduplicated by job ID, so every job appears once.
- **Apply links and dates on every listing** — external `applicationUrl`, canonical Levels.fyi `url`, plus `postingDate` and `expiryDate` for freshness filtering.

### Use Cases

**Recruiting & Talent Sourcing**
- Build target-company shortlists by headcount, valuation, or company type
- Find roles by discipline and seniority to match open reqs
- Track which companies are actively hiring for a given title
- Pull apply-ready links to route candidates straight to live postings

**Compensation Benchmarking**
- Benchmark base vs. total pay ranges across companies for the same role
- Compare per-level total-comp estimates from Internship through Executive
- Set a minimum-total-comp floor to study only senior and staff bands
- Build market pay bands by city and work arrangement

**Job Seeking & Career Moves**
- Surface the highest-paying roles first with Total Compensation sort
- Filter to Remote-only positions across every discipline
- Compare offers against real ranges before negotiating
- Track newly posted roles with Date Posted sort and posting dates

**Market & Talent Research**
- Map hiring demand by discipline, level, and location
- Spot which startups vs. public companies are scaling headcount
- Monitor remote vs. hybrid vs. office trends across the market
- Feed structured comp and company data into analytics dashboards

### Getting Started

#### Simple keyword search

The fastest way to start — one keyword:

```json
{
    "searchQueries": ["Software Engineer"],
    "maxResults": 100
}
````

#### Remote senior roles, highest pay first

```json
{
    "searchQueries": ["Data Scientist", "Machine Learning Engineer"],
    "location": "Remote",
    "level": "principal",
    "sortBy": "total_compensation",
    "maxResults": 200
}
```

#### High-paying engineering roles with full filters

```json
{
    "searchQueries": ["Software Engineer", "Engineering Manager"],
    "location": "San Francisco",
    "workArrangement": "hybrid",
    "jobFamily": "software-engineer",
    "level": "mid_staff",
    "sortBy": "total_compensation",
    "minTotalCompensation": 300000,
    "maxResults": 500,
    "includeDescription": true
}
```

### Input Reference

#### Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQueries` | array | `["Software Engineer"]` | Job titles or keywords to search for. Each keyword runs its own search. Up to 50. Leave empty for the broadest result set for your location and filters. |
| `location` | string | `""` | City, region, or work arrangement to search in, e.g. "San Francisco", "London", "Remote". Combined with each keyword. Empty searches everywhere. |
| `startUrls` | array | `[]` | Paste full Levels.fyi job-search or individual job URLs to scrape them directly. Up to 50 per run. |

#### Filters & Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `workArrangement` | string | `Any` | Where the role is performed: Any, Remote, Hybrid, or Office. |
| `jobFamily` | string | `Any` | Limit to one discipline: Any, Software Engineer, Engineering Manager, Data Scientist, Data Science Manager, Product Manager, Designer, Security, or Hardware Engineer. |
| `level` | string | `Any` | Seniority band: Any, Internship, Entry Level, Senior, Principal, Manager, Director, or Executive. |
| `sortBy` | string | `Relevance` | Result order: Relevance, Total Compensation (highest first), or Date Posted (newest first). |
| `minTotalCompensation` | integer | `null` | Only include jobs whose median total compensation is at least this many US dollars. Empty means no minimum. |
| `maxResults` | integer | `100` | Max listings to collect per keyword (or per start URL). Set to `0` for all available. The final page is always kept whole, so a small cap can return slightly more; duplicates across pages and across keywords are removed, so the count can also run slightly under. |

#### Output

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeDescription` | boolean | `true` | Include the full job description (text and HTML) for each listing. Turn off for lighter records with only titles, companies, locations, and compensation. |

### Output

Each job is a single flat record. Example:

```json
{
    "jobId": "123456",
    "title": "Senior Software Engineer, Backend",
    "company": "Stripe",
    "companySlug": "stripe",
    "companyType": "Private",
    "companyEmployeeCount": "5000-10000",
    "companyEstimatedValuation": "$65B",
    "companyShortDescription": "Financial infrastructure for the internet.",
    "companyIcon": "https://logos.levels.fyi/stripe.png",
    "isPromoted": false,
    "locations": ["San Francisco, CA", "New York, NY"],
    "workArrangement": "hybrid",
    "jobFamily": "software-engineer",
    "employmentTypes": ["Full-time"],
    "minBaseSalary": 180000,
    "maxBaseSalary": 240000,
    "minTotalSalary": 320000,
    "maxTotalSalary": 480000,
    "salaryCurrency": "USD",
    "totalCompensationEstimates": [
        { "level": "L4", "totalCompensation": 350000 },
        { "level": "L5", "totalCompensation": 450000 }
    ],
    "postingDate": "2026-05-28",
    "expiryDate": "2026-07-28",
    "applicationUrl": "https://stripe.com/jobs/listing/senior-software-engineer/123456",
    "descriptionText": "We are looking for a backend engineer to...",
    "descriptionHtml": "<p>We are looking for a backend engineer to...</p>",
    "url": "https://www.levels.fyi/jobs?jobId=123456",
    "searchQuery": "Software Engineer",
    "searchLocation": "San Francisco",
    "scrapedAt": "2026-06-10T14:32:00Z"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `jobId` | string | Unique Levels.fyi job ID |
| `title` | string | Job title |
| `locations` | array | Listed locations for the role |
| `workArrangement` | string | `remote`, `hybrid`, or `office` |
| `jobFamily` | string | Discipline slug (e.g. `software-engineer`); populated when full descriptions are enabled |
| `employmentTypes` | array | Full-time, Intern, Contract, etc. |
| `isPromoted` | boolean | Whether the listing is sponsored |
| `url` | string | Canonical Levels.fyi job URL |

#### Compensation

| Field | Type | Description |
|-------|------|-------------|
| `minBaseSalary` | number | Minimum base salary |
| `maxBaseSalary` | number | Maximum base salary |
| `minTotalSalary` | number | Minimum total compensation |
| `maxTotalSalary` | number | Maximum total compensation |
| `salaryCurrency` | string | Currency code (e.g. `USD`) |
| `totalCompensationEstimates` | array | Per-seniority-level total-comp estimates |

#### Company

| Field | Type | Description |
|-------|------|-------------|
| `company` | string | Company name |
| `companySlug` | string | Company slug on Levels.fyi |
| `companyType` | string | Company type (public, private, startup, etc.) |
| `companyEmployeeCount` | string | Reported employee count or band |
| `companyEstimatedValuation` | string | Estimated company valuation |
| `companyShortDescription` | string | One-line company blurb |
| `companyIcon` | string | Company logo/icon URL |

#### Dates, Links & Context

| Field | Type | Description |
|-------|------|-------------|
| `postingDate` | string | When the job was posted |
| `expiryDate` | string | When the listing expires |
| `applicationUrl` | string | External application link |
| `descriptionText` | string | Plain-text job description (when enabled) |
| `descriptionHtml` | string | Full HTML job description (when enabled) |
| `searchQuery` | string | The keyword that produced this row |
| `searchLocation` | string | The location used for the search |
| `scrapedAt` | string | Extraction timestamp (ISO 8601) |

### Tips for Best Results

- **Run several related titles in one batch.** Levels.fyi returns at most around 200 companies' worth of jobs for a single keyword, so one keyword tops out near a few hundred listings — queue "Software Engineer", "Backend Engineer", and "Full Stack Engineer" together to widen coverage well beyond that ceiling.
- **Set a minimum total compensation to isolate senior roles.** A `minTotalCompensation` floor (e.g. 300000) filters on the median total comp, surfacing staff and principal roles without scrolling past junior listings.
- **Pair a keyword with a location** for sharper results — "Data Scientist" plus "New York" returns a tighter, more relevant set than either alone.
- **Use Total Compensation sort** when you want the highest-paying roles first and Date Posted sort when you only care about the freshest listings.
- **Turn off full descriptions for lighter, faster pulls** when you only need titles, companies, locations, and compensation — flip `includeDescription` off.
- **Add a seniority level filter** to benchmark a single band cleanly; combine it with a discipline to compare, say, Senior Data Scientist pay across companies.
- **Paste a tuned URL into `startUrls`** when you've already dialed in a search on the website — the scraper lifts the keyword and filters straight from the link.

### Pricing

**From $1 per 1,000 results** — among the most affordable ways to collect Levels.fyi compensation and company data at scale. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.12 | $0.11 | $0.11 | $0.10 |
| 1,000 | $1.20 | $1.13 | $1.07 | $1.00 |
| 10,000 | $12.00 | $11.30 | $10.70 | $10.00 |
| 100,000 | $120.00 | $113.00 | $107.00 | $100.00 |

A "result" is one job listing pushed to your dataset. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This scraper collects publicly available job-listing and compensation data for legitimate research, recruiting, and analytics. You are responsible for using the data in compliance with Levels.fyi's terms of service and all applicable laws, including data protection regulations such as GDPR and CCPA. Do not use the data to harass individuals, and respect the rights of the data's original publishers. When in doubt, consult legal counsel about your specific use case.

# Actor input Schema

## `searchQueries` (type: `array`):

Job titles or keywords to search for, such as 'Software Engineer', 'Data Scientist', or 'Product Manager'. Each keyword runs a separate search. Add up to 50 keywords per run; each is searched independently. Leave empty to collect the broadest result set for your location and filters.

## `location` (type: `string`):

City, region, or work arrangement to search in. Examples: 'San Francisco', 'New York', 'London', 'Remote'. Combined with each keyword. Leave empty to search everywhere.

## `startUrls` (type: `array`):

Paste full Levels.fyi job-search URLs (e.g. https://www.levels.fyi/jobs?...) or individual job-listing URLs to scrape them directly. Useful when you already have a search dialed in on the website. Up to 50 URLs per run.

## `workArrangement` (type: `string`):

Filter by where the role is performed. Leave on 'Any' to include all arrangements.

## `jobFamily` (type: `string`):

Limit results to one engineering or product discipline. Leave on 'Any' to include all job families.

## `level` (type: `string`):

Limit results to one seniority level. Leave on 'Any' to include all levels.

## `sortBy` (type: `string`):

Order in which jobs are returned. 'Relevance' is the default ranking.

## `minTotalCompensation` (type: `integer`):

Only include jobs whose median total compensation is at least this many US dollars. Leave empty for no minimum.

## `maxResults` (type: `integer`):

Maximum number of job listings to collect per search keyword (or per start URL). Set to 0 to collect all available results. Results are fetched in pages: the actor stops once your cap is reached but always keeps the whole final page, so a small cap (e.g. 10) can return a little more than you asked for. Listings repeated across pages — or shared between keywords — are deduplicated, so the final count can also run slightly below your cap. Note: Levels.fyi returns at most ~200 companies' worth of jobs for a single keyword, so one keyword tops out around a few hundred listings — use several keywords (or add a location/level filter) to widen coverage beyond that.

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

Include the full job description (text and HTML) for each listing. Leave on for the most complete data. Turn off for lighter records when you only need titles, companies, locations, and compensation.

## Actor input object example

```json
{
  "searchQueries": [
    "Software Engineer"
  ],
  "startUrls": [],
  "workArrangement": "",
  "jobFamily": "",
  "level": "",
  "sortBy": "relevance",
  "maxResults": 100,
  "includeDescription": true
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of scraped job listings with key fields.

## `detail` (type: `string`):

Complete job data including descriptions, parsed compensation fields, company metadata, and timestamps.

# 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 = {
    "searchQueries": [
        "Software Engineer"
    ],
    "location": "",
    "startUrls": [],
    "workArrangement": "",
    "jobFamily": "",
    "level": "",
    "sortBy": "relevance",
    "maxResults": 100,
    "includeDescription": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/levels-fyi-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 = {
    "searchQueries": ["Software Engineer"],
    "location": "",
    "startUrls": [],
    "workArrangement": "",
    "jobFamily": "",
    "level": "",
    "sortBy": "relevance",
    "maxResults": 100,
    "includeDescription": True,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/levels-fyi-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 '{
  "searchQueries": [
    "Software Engineer"
  ],
  "location": "",
  "startUrls": [],
  "workArrangement": "",
  "jobFamily": "",
  "level": "",
  "sortBy": "relevance",
  "maxResults": 100,
  "includeDescription": true
}' |
apify call solidcode/levels-fyi-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/levels-fyi-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Levels.fyi Jobs Scraper",
        "description": "[💰 $1 / 1K] Extract tech jobs from Levels.fyi with base and total compensation ranges, company metadata, locations, work arrangement, and apply links. Search by keyword and location, filter by work arrangement and job family, or paste Levels.fyi URLs for structured, export-ready data.",
        "version": "1.0",
        "x-build-id": "gGoB9QEm0obW9w6fh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~levels-fyi-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-levels-fyi-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/solidcode~levels-fyi-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-levels-fyi-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/solidcode~levels-fyi-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-levels-fyi-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": {
                    "searchQueries": {
                        "title": "Search Keywords",
                        "maxItems": 50,
                        "type": "array",
                        "description": "Job titles or keywords to search for, such as 'Software Engineer', 'Data Scientist', or 'Product Manager'. Each keyword runs a separate search. Add up to 50 keywords per run; each is searched independently. Leave empty to collect the broadest result set for your location and filters.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City, region, or work arrangement to search in. Examples: 'San Francisco', 'New York', 'London', 'Remote'. Combined with each keyword. Leave empty to search everywhere."
                    },
                    "startUrls": {
                        "title": "Direct Levels.fyi URLs",
                        "maxItems": 50,
                        "type": "array",
                        "description": "Paste full Levels.fyi job-search URLs (e.g. https://www.levels.fyi/jobs?...) or individual job-listing URLs to scrape them directly. Useful when you already have a search dialed in on the website. Up to 50 URLs per run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "workArrangement": {
                        "title": "Work Arrangement",
                        "enum": [
                            "",
                            "remote",
                            "hybrid",
                            "office"
                        ],
                        "type": "string",
                        "description": "Filter by where the role is performed. Leave on 'Any' to include all arrangements.",
                        "default": ""
                    },
                    "jobFamily": {
                        "title": "Job Family",
                        "enum": [
                            "",
                            "software-engineer",
                            "software-engineering-manager",
                            "data-scientist",
                            "data-science-manager",
                            "product-manager",
                            "product-designer",
                            "security-analyst",
                            "hardware-engineer"
                        ],
                        "type": "string",
                        "description": "Limit results to one engineering or product discipline. Leave on 'Any' to include all job families.",
                        "default": ""
                    },
                    "level": {
                        "title": "Seniority Level",
                        "enum": [
                            "",
                            "internship",
                            "entry",
                            "mid_staff",
                            "principal",
                            "manager",
                            "director",
                            "executive"
                        ],
                        "type": "string",
                        "description": "Limit results to one seniority level. Leave on 'Any' to include all levels.",
                        "default": ""
                    },
                    "sortBy": {
                        "title": "Sort Results By",
                        "enum": [
                            "relevance",
                            "total_compensation",
                            "date_published"
                        ],
                        "type": "string",
                        "description": "Order in which jobs are returned. 'Relevance' is the default ranking.",
                        "default": "relevance"
                    },
                    "minTotalCompensation": {
                        "title": "Minimum Total Compensation (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include jobs whose median total compensation is at least this many US dollars. Leave empty for no minimum."
                    },
                    "maxResults": {
                        "title": "Max Results per Search",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of job listings to collect per search keyword (or per start URL). Set to 0 to collect all available results. Results are fetched in pages: the actor stops once your cap is reached but always keeps the whole final page, so a small cap (e.g. 10) can return a little more than you asked for. Listings repeated across pages — or shared between keywords — are deduplicated, so the final count can also run slightly below your cap. Note: Levels.fyi returns at most ~200 companies' worth of jobs for a single keyword, so one keyword tops out around a few hundred listings — use several keywords (or add a location/level filter) to widen coverage beyond that.",
                        "default": 100
                    },
                    "includeDescription": {
                        "title": "Fetch Full Job Descriptions",
                        "type": "boolean",
                        "description": "Include the full job description (text and HTML) for each listing. Leave on for the most complete data. Turn off for lighter records when you only need titles, companies, locations, and compensation.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
