# Dice Jobs Scraper — US Tech Jobs Data & API (`sian.agency/dice-jobs-scraper`) Actor

Dice.com scraper & tech-jobs data API. Extract US technology job postings: title, company, salary, skills, employment type, remote flags, location, dates & full descriptions — clean JSON/CSV. Search by query or paste a search URL. No account or API key needed.

- **URL**: https://apify.com/sian.agency/dice-jobs-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Jobs, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 overview job extracteds

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

## Dice Jobs Scraper — US Tech Jobs, Salaries & Skills Data 💼

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Jobs Search API](https://img.shields.io/badge/Store-Jobs%20Search%20API-1AE392)](https://apify.com/sian.agency/jsearch-jobs-scraper?fpr=sian) [![Glassdoor Scraper](https://img.shields.io/badge/Store-Glassdoor%20Scraper-0CAA41)](https://apify.com/sian.agency/glassdoor-data-scraper?fpr=sian) [![Email & Lead Scraper](https://img.shields.io/badge/Store-Email%20%26%20Lead%20Scraper-1AE392)](https://apify.com/sian.agency/email-contact-lead-scraper?fpr=sian)

#### 🎉 Turn Dice.com into a clean tech-jobs dataset — salary, skills & full descriptions in one run
##### Built for recruiters, sourcers, market researchers & HR-tech teams who need structured job data, not screenshots

---

### 📋 Overview

**Need US tech job data without copy-pasting from Dice all day?** This actor extracts technology job postings from Dice.com into a clean, structured dataset — search by keyword and location, or paste a search URL with all your filters, and export ready-to-use JSON or CSV.

**Why thousands of professionals choose us:**
- ✅ **Rich rows by default**: every job carries title, company, salary, employment type, remote status, derived tech-skills, location and dates — not just a title and a link
- ⚡ **Fast & lightweight**: pulls ~20 jobs per search page in seconds, hundreds per run
- 🎯 **Two depths, your call**: cheap **Overview** for bulk lists, or full **Detail** with the complete HTML description, normalized salary value, expiry date and postal code
- 💰 **Pay-per-result pricing**: you're only charged for jobs you actually receive — no charge on invalid input
- 💎 **Auto-detected skills**: each posting is tagged with the tech skills mentioned (Python, AWS, Kubernetes, React…) for instant filtering
- ✨ **No account or API key needed**: just a keyword and a location

---

### ✨ Features

- 🔍 **Keyword + location search**: type `python developer` in `New York` — locations are geocoded automatically
- 🔗 **Search-URL mode**: paste any Dice `/jobs?…` URL and every on-site filter is preserved
- 🔎 **Detail mode**: enrich each job with its full description, normalized salary and posting expiry
- 🧠 **Skill tagging**: automatic detection of 35+ in-demand tech skills from each posting
- 🏠 **Remote & filter support**: filter by remote, employment type, posting date, visa sponsorship and Easy Apply
- 💵 **Salary capture**: both the raw salary string and the normalized numeric value (detail mode)
- 📅 **Fresh data**: sort by newest first to track jobs as they're posted
- 📤 **Clean export**: JSON, CSV or Excel straight from the Apify dataset

---

### 🎬 Quick Start

Pick a scrape mode, type a query and location, hit Start. In under a minute you'll have a structured dataset of US tech jobs.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~dice-jobs-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"scrapeMode":"overview","searchMode":"byQuery","query":"python developer","location":"United States","maxResults":100}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose your search

Type a keyword and location (e.g. `data engineer` in `Remote`), or paste a Dice search URL.

#### Step 2: Pick your depth

**Overview** for fast bulk lists, or **Detail** for full descriptions and normalized salaries.

#### Step 3: Run & export

Click Start and download your results as JSON, CSV or Excel.

**That's it! In about a minute, you'll have:**

- A structured dataset of tech jobs with salary and skills
- Clean fields ready for your ATS, CRM or spreadsheet
- An HTML run report summarizing what was extracted

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| scrapeMode | string | No | `overview` (fast list) or `detail` (full job pages) |
| searchMode | string | No | `byQuery`, `bySearchUrl` or `byJobUrl` |
| query | string | No | Search keyword(s), e.g. `python developer` |
| location | string | No | Free-text location, e.g. `United States`, `New York, NY`, `Remote` |
| searchUrls | array | No | One or more Dice `/jobs?…` search URLs |
| jobUrls | array | No | Specific Dice job URLs or GUIDs (detail mode) |
| maxResults | integer | No | Max jobs per run (FREE: 25, PAID: unlimited) |
| sort | string | No | `relevance` or `date` (newest first) |
| postedDate | string | No | Posted within: 1 / 3 / 7 / 14 days |
| employmentType | string | No | Full-time, Contract, Part-time, Third party |
| isRemote | boolean | No | Only remote jobs |
| willingToSponsor | boolean | No | Only visa-sponsoring employers |
| easyApply | boolean | No | Only Easy Apply jobs |

**Example:**

```json
{
  "scrapeMode": "overview",
  "searchMode": "byQuery",
  "query": "data engineer",
  "location": "United States",
  "sort": "date",
  "maxResults": 200
}
```

**By search URL:**

```json
{
  "searchMode": "bySearchUrl",
  "searchUrls": ["https://www.dice.com/jobs?q=devops&location=Remote&filters.postedDate=SEVEN"]
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **35+ fields** including:

| Field | Type | Description |
|-------|------|-------------|
| jobTitle | string | The job posting title |
| company | string | Hiring company name |
| salary\_raw | string | Salary as shown on the listing |
| value | number | Normalized numeric base salary (detail mode) |
| currency | string | Salary currency (USD) |
| employment\_type | string | Full-time, Contract, etc. |
| is\_remote | boolean | Whether the role is remote |
| skills | array | Auto-detected tech skills |
| location | string | Display location |
| city / state / country | string | Parsed location components |
| posted\_date | string | When the job was posted |
| valid\_through | string | Posting expiry (detail mode) |
| description | string | Full HTML description (detail mode) |
| url | string | Canonical job URL |

**Example:**

```json
{
  "jobTitle": "Lead Software Engineer (Python, Kubernetes)",
  "company": "Capital One",
  "salary_raw": "Depends on Experience",
  "value": 197300,
  "currency": "USD",
  "employment_type": "FULL_TIME",
  "is_remote": false,
  "skills": ["Python", "Java", "Go", "AWS", "Kubernetes", "Docker"],
  "city": "McLean",
  "state": "VA",
  "posted_date": "2026-06-10T21:08:34.000Z",
  "valid_through": "2026-07-23T20:57:46.000Z",
  "url": "https://www.dice.com/job-detail/036ff01b-8677-4679-8ff3-6fb2e8b62890"
}
```

***

### 💼 Use Cases & Examples

#### 1. Tech Recruiting Pipelines

**Recruiters and sourcers building candidate and req lists.**

**Input:** A keyword + location (e.g. `react developer` in `Austin, TX`)
**Output:** Structured postings with company, salary and skills
**Use:** Feed open reqs into your ATS and prioritize by skill match.

#### 2. Salary Benchmarking

**Compensation analysts pricing roles by market.**

**Input:** A role keyword across the US
**Output:** Raw and normalized salaries per posting
**Use:** Build pay bands by title, skill and location.

#### 3. Skill-Demand Research

**Market researchers tracking which technologies are hiring.**

**Input:** Broad queries over time (e.g. `machine learning`)
**Output:** Per-job skill tags and posting dates
**Use:** Quantify demand for Python vs Go vs Rust by month.

#### 4. Competitor Hiring Intelligence

**Talent teams watching who their rivals are hiring.**

**Input:** Company-specific searches
**Output:** Live and recent postings with roles and locations
**Use:** Spot hiring sprees and new team builds early.

#### 5. Job-Board Aggregation

**HR-tech products enriching their own listings.**

**Input:** Search URLs with filters
**Output:** Clean, normalized job records
**Use:** Power a niche job board or alert product.

#### 6. Lead Generation

**Agencies sourcing companies that are actively hiring.**

**Input:** Skill-based searches
**Output:** Hiring companies with locations
**Use:** Build outbound lists of companies in growth mode.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/dice-jobs-scraper').call({
  scrapeMode: 'overview',
  searchMode: 'byQuery',
  query: 'python developer',
  location: 'United States',
  maxResults: 100
});

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

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/dice-jobs-scraper').call(
    run_input={
        'scrapeMode': 'overview',
        'searchMode': 'byQuery',
        'query': 'data engineer',
        'location': 'Remote',
        'maxResults': 100
    }
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~dice-jobs-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","searchMode":"byQuery","query":"devops","location":"United States"}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule (e.g. daily) or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle the JSON results
4. **Action**: Save to a sheet, sync to your ATS/CRM, or send alerts

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 jobs** per run — full feature access, same data quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** jobs per run
- Faster, uninterrupted processing
- Pay-per-result: only charged for jobs you actually receive

💰 **Best value for enriched tech-jobs data** — rich rows (salary + skills + remote) at cheap-list prices.

🔗 [View current pricing](https://apify.com/sian.agency/dice-jobs-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many jobs can I extract?**
A: FREE tier: 25 per run. PAID tier: unlimited.

**Q: Do I need a Dice account or API key?**
A: No — just a keyword and location, or a search URL.

**Q: What's the difference between Overview and Detail?**
A: Overview is the fast list (title, company, salary, skills, location). Detail fetches each job page for the full HTML description, normalized salary, expiry date and postal code.

**Q: What output formats are available?**
A: JSON, CSV and Excel — export directly from the Apify dataset.

**Q: Can I filter by remote, salary or date?**
A: Yes — filter by remote, employment type, posting date, visa sponsorship and Easy Apply, and sort by newest.

**Q: Is this legal?**
A: We only extract publicly available job postings. See the legal section below.

***

### 🐛 Troubleshooting

**No results returned**

- Check your keyword spelling and broaden the location (try `United States`)
- Remove restrictive filters (e.g. last-1-day + remote-only + sponsorship)

**Fewer results than expected on FREE**

- FREE is capped at 25 jobs per run — upgrade for unlimited

**Detail mode is slower**

- Detail fetches one page per job for the full description; use Overview for bulk lists

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

> **Trademark notice:** *Dice* and *Dice.com* are trademarks of DHI Group, Inc. This actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by** DHI Group or Dice.com. All product and company names are the property of their respective owners and are used here for identification purposes only.

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `scrapeMode` (type: `string`):

🧭 **Choose how much data per job:**

- **Overview** (cheap) — fast list scrape from search results: title, company, salary, skills, location, dates, remote flags. ~20 jobs/page.
- **Detail** (full) — fetches each job page for the complete HTML description, normalized salary value + currency, posting expiry date & postal code.

💡 Detail mode is a superset of overview — it discovers jobs from search, then enriches each one.

## `searchMode` (type: `string`):

🔀 **How do you want to find jobs?**

- **By Query** — type a keyword + location (e.g. "python developer" in "New York").
- **By Search URL** — paste a dice.com `/jobs?…` search URL (carries all your on-site filters).
- **By Job URL** — paste specific dice.com job URLs or GUIDs (detail mode only).

## `query` (type: `string`):

🔍 **Job keyword(s)** to search — e.g. `python developer`, `data engineer`, `devops`.

Used when Search Mode is **By Query**. Combine with the Location field below.

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

📍 **Free-text location** — e.g. `United States`, `New York, NY`, `Remote`. Dice geocodes it server-side, so a city, state, or the whole country all work.

Used with **By Query**.

## `searchUrls` (type: `array`):

🔗 **Paste one or more dice.com search URLs** (the `/jobs?…` page). All filters and sorting you set on the site are preserved.

Used when Search Mode is **By Search URL**.

💡 Click "Bulk edit" to paste multiple URLs (one per line).

## `jobUrls` (type: `array`):

🔎 **Paste specific dice.com job URLs or job GUIDs** to fetch full details for. Used when Scrape Mode is **Detail** and Search Mode is **By Job URL**.

💡 Click "Bulk edit" to paste multiple (one per line).

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

🔢 **How many jobs to return.**

- **FREE users:** capped at 25 per run.
- **PAID users:** unlimited.

Dice paginates 20 jobs per search page.

## `sort` (type: `string`):

↕️ **Result ordering.** `relevance` (default) or `date` (newest first).

## `postedDate` (type: `string`):

📅 **Only jobs posted within this window.** Leave blank for all.

## `employmentType` (type: `string`):

💼 **Filter by employment type.** Leave blank for all.

## `isRemote` (type: `boolean`):

🏠 **Only show remote jobs.**

## `willingToSponsor` (type: `boolean`):

🛂 **Only employers willing to sponsor a visa.**

## `easyApply` (type: `boolean`):

⚡ **Only jobs that support one-click Easy Apply.**

## `useProxy` (type: `boolean`):

🛡️ **Route requests through a US residential proxy pool.** Off by default — Dice does not require a proxy. Enable only as a rate-limit hedge for very high-volume runs.

## Actor input object example

```json
{
  "scrapeMode": "overview",
  "searchMode": "byQuery",
  "query": "python developer",
  "location": "United States",
  "maxResults": 100,
  "sort": "relevance",
  "postedDate": "",
  "employmentType": "",
  "isRemote": false,
  "willingToSponsor": false,
  "easyApply": false,
  "useProxy": false
}
```

# Actor output Schema

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

Clean tech-job postings: title, company, salary, skills, location, dates & descriptions.

## `scrapingSummary` (type: `string`):

HTML summary showing extracted and failed results with key run metrics.

# 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 = {
    "query": "python developer",
    "location": "United States"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/dice-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 = {
    "query": "python developer",
    "location": "United States",
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/dice-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 '{
  "query": "python developer",
  "location": "United States"
}' |
apify call sian.agency/dice-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Dice Jobs Scraper — US Tech Jobs Data & API",
        "description": "Dice.com scraper & tech-jobs data API. Extract US technology job postings: title, company, salary, skills, employment type, remote flags, location, dates & full descriptions — clean JSON/CSV. Search by query or paste a search URL. No account or API key needed.",
        "version": "1.0",
        "x-build-id": "izxvFrPFrqT1Kc9Cj"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~dice-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-dice-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/sian.agency~dice-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-dice-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/sian.agency~dice-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-dice-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": {
                    "scrapeMode": {
                        "title": "🧭 Scrape Mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "🧭 **Choose how much data per job:**\n\n- **Overview** (cheap) — fast list scrape from search results: title, company, salary, skills, location, dates, remote flags. ~20 jobs/page.\n- **Detail** (full) — fetches each job page for the complete HTML description, normalized salary value + currency, posting expiry date & postal code.\n\n💡 Detail mode is a superset of overview — it discovers jobs from search, then enriches each one.",
                        "default": "overview"
                    },
                    "searchMode": {
                        "title": "🔀 Search Mode",
                        "enum": [
                            "byQuery",
                            "bySearchUrl",
                            "byJobUrl"
                        ],
                        "type": "string",
                        "description": "🔀 **How do you want to find jobs?**\n\n- **By Query** — type a keyword + location (e.g. \"python developer\" in \"New York\").\n- **By Search URL** — paste a dice.com `/jobs?…` search URL (carries all your on-site filters).\n- **By Job URL** — paste specific dice.com job URLs or GUIDs (detail mode only).",
                        "default": "byQuery"
                    },
                    "query": {
                        "title": "🔍 Search Query",
                        "type": "string",
                        "description": "🔍 **Job keyword(s)** to search — e.g. `python developer`, `data engineer`, `devops`.\n\nUsed when Search Mode is **By Query**. Combine with the Location field below.",
                        "default": "python developer"
                    },
                    "location": {
                        "title": "📍 Location",
                        "type": "string",
                        "description": "📍 **Free-text location** — e.g. `United States`, `New York, NY`, `Remote`. Dice geocodes it server-side, so a city, state, or the whole country all work.\n\nUsed with **By Query**.",
                        "default": "United States"
                    },
                    "searchUrls": {
                        "title": "🔗 Search URLs",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "🔗 **Paste one or more dice.com search URLs** (the `/jobs?…` page). All filters and sorting you set on the site are preserved.\n\nUsed when Search Mode is **By Search URL**.\n\n💡 Click \"Bulk edit\" to paste multiple URLs (one per line).",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "jobUrls": {
                        "title": "🔎 Job URLs or GUIDs",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "🔎 **Paste specific dice.com job URLs or job GUIDs** to fetch full details for. Used when Scrape Mode is **Detail** and Search Mode is **By Job URL**.\n\n💡 Click \"Bulk edit\" to paste multiple (one per line).",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxResults": {
                        "title": "🔢 Max Jobs Per Run",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🔢 **How many jobs to return.**\n\n- **FREE users:** capped at 25 per run.\n- **PAID users:** unlimited.\n\nDice paginates 20 jobs per search page.",
                        "default": 100
                    },
                    "sort": {
                        "title": "↕️ Sort Order",
                        "enum": [
                            "relevance",
                            "date"
                        ],
                        "type": "string",
                        "description": "↕️ **Result ordering.** `relevance` (default) or `date` (newest first).",
                        "default": "relevance"
                    },
                    "postedDate": {
                        "title": "📅 Posted Within",
                        "enum": [
                            "",
                            "ONE",
                            "THREE",
                            "SEVEN",
                            "FOURTEEN"
                        ],
                        "type": "string",
                        "description": "📅 **Only jobs posted within this window.** Leave blank for all.",
                        "default": ""
                    },
                    "employmentType": {
                        "title": "💼 Employment Type",
                        "enum": [
                            "",
                            "FULLTIME",
                            "PARTTIME",
                            "CONTRACTS",
                            "THIRD_PARTY"
                        ],
                        "type": "string",
                        "description": "💼 **Filter by employment type.** Leave blank for all.",
                        "default": ""
                    },
                    "isRemote": {
                        "title": "🏠 Remote Only",
                        "type": "boolean",
                        "description": "🏠 **Only show remote jobs.**",
                        "default": false
                    },
                    "willingToSponsor": {
                        "title": "🛂 Visa Sponsorship",
                        "type": "boolean",
                        "description": "🛂 **Only employers willing to sponsor a visa.**",
                        "default": false
                    },
                    "easyApply": {
                        "title": "⚡ Easy Apply",
                        "type": "boolean",
                        "description": "⚡ **Only jobs that support one-click Easy Apply.**",
                        "default": false
                    },
                    "useProxy": {
                        "title": "🛡️ Use Residential Proxy",
                        "type": "boolean",
                        "description": "🛡️ **Route requests through a US residential proxy pool.** Off by default — Dice does not require a proxy. Enable only as a rate-limit hedge for very high-volume runs.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
