# Dice Tech Jobs Scraper (`solidcode/dice-scraper`) Actor

\[💰 $0.8 / 1K] Extract US tech job listings from Dice.com. Search by keyword, location, employment type, and remote/sponsorship filters to get structured data including titles, companies, salaries, descriptions, and apply links.

- **URL**: https://apify.com/solidcode/dice-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, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 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.

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 Tech Jobs Scraper

Extract US tech job listings from Dice.com at scale. Get titles, companies, locations, salaries, full descriptions, remote and visa-sponsorship flags, easy-apply support, and direct apply links — for any keyword, location, or pasted Dice search URL.

### Why This Scraper?

- **Up to 500 results per search** — Dice's full server-side ceiling, with automatic pagination so you never hit the page-25 wall by accident
- **Full job descriptions out of the box** — every record includes the complete posting text (HTML and plain-text), not just the search snippet
- **Structured filters as first-class inputs** — keyword, location, radius, posted-within window, employment type, remote-only, easy-apply, and willing-to-sponsor are all proper input fields, no need to hand-craft Dice URLs
- **Batch keyword search** — run multiple job titles in a single execution and de-duplicate across queries automatically
- **Direct URL passthrough** — already have a Dice search dialed in on the website? Paste the URL and the scraper honors every filter you set there
- **Parsed salary fields** — alongside the raw `salary` string, you get `salaryMin`, `salaryMax`, `salaryCurrency`, and `salaryPeriod` parsed for you when the format is clean
- **Visa-sponsorship and easy-apply flags** — perfect for international candidates, recruiters, or job-aggregator sites that need to surface only sponsor-friendly or one-click apply roles
- **Pay only for what you get** — transparent per-result pricing, no monthly rental, no compute-time surprises

### Use Cases

**Recruiting & Sourcing**
- Build candidate pipelines by tracking which companies are hiring for specific tech stacks in your region
- Identify staffing firms vs direct employers via the `employerType` field
- Spot easy-apply roles in seconds for high-volume sourcing campaigns

**Lead Generation**
- Surface companies actively hiring engineers — strong intent signal for B2B SaaS, recruiting tools, dev-tool vendors, and benefits providers
- Filter by `willingToSponsor=true` to find employers open to international candidates and partner with immigration services
- Generate prospect lists of companies posting frequently in your category

**Market & Compensation Research**
- Track salary trends across cities, roles, and seniorities using parsed `salaryMin`/`salaryMax`
- Analyze remote-vs-hybrid-vs-onsite mix by location or employer
- Map demand for specific technologies (e.g. Rust, Kubernetes, LLMs) by volume and posted date

**Job Aggregation & Niche Boards**
- Power a tech-only or remote-only job board with fresh Dice listings
- Build niche aggregators (e.g. visa-sponsorship boards, contract-only boards, easy-apply boards) using the filter set
- Enrich existing job-board records with full descriptions and direct apply links

**Academic & Labor-Market Research**
- Build longitudinal datasets of tech-hiring activity by region and skill
- Study employer behavior around remote work, sponsorship, and contract employment
- Track posting volume against macro hiring trends

### Getting Started

#### Simple Keyword Search

The fastest way to get started — one keyword, sensible defaults:

```json
{
    "searchQueries": ["python developer"],
    "maxResultsPerQuery": 100
}
````

#### Filtered Search — Recent Remote Roles

Narrow down to fresh, remote, easy-apply jobs in a specific market:

```json
{
    "searchQueries": ["data engineer", "machine learning engineer"],
    "location": "Austin, TX",
    "radiusMiles": 50,
    "postedWithinDays": "SEVEN",
    "employmentType": "FULLTIME",
    "remoteOnly": true,
    "easyApply": true,
    "maxResultsPerQuery": 200
}
```

#### Visa-Sponsorship Search

Surface only roles whose employers are willing to sponsor a work visa:

```json
{
    "searchQueries": ["software engineer", "backend engineer"],
    "location": "New York, NY",
    "willingToSponsor": true,
    "postedWithinDays": "THREE",
    "maxResultsPerQuery": 150
}
```

#### Direct Dice URL + Keyword Combo

Already have a search tuned on the Dice website? Paste the URL alongside your own keywords for a mixed batch:

```json
{
    "searchQueries": ["DevOps engineer"],
    "startUrls": [
        "https://www.dice.com/jobs?q=site+reliability+engineer&location=Seattle%2C+WA&filters.employmentType=CONTRACTS&filters.easyApply=true"
    ],
    "maxResultsPerQuery": 250
}
```

### Input Reference

#### Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQueries` | string\[] | `["python developer"]` | Job titles or keywords to search for, such as `"python developer"` or `"data scientist"`. Each keyword runs a separate search. |
| `location` | string | `""` | Where to search for jobs. Enter a city, state, ZIP code, or `"Remote"`. Example: `"Austin, TX"`. Dice is US-only — locations outside the US fall back to nationwide results. |
| `radiusMiles` | integer | `30` | How far from the location to search, in miles (1-100). Ignored when location is empty. |
| `startUrls` | string\[] | `[]` | Paste full Dice search result URLs (e.g. `https://www.dice.com/jobs?q=...`) to scrape them directly. Useful when you already have a search dialed in on the Dice website. |

#### Filters & Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResultsPerQuery` | integer | `100` | Maximum number of job listings to collect per search keyword (1-500). Dice caps results at 500 per search. Use a tighter location or filters to reach more unique jobs. |
| `postedWithinDays` | string | `""` (Any time) | Only show jobs posted within this time period. Options: `"Any time"`, `"Last 24 hours"` (`ONE`), `"Last 3 days"` (`THREE`), `"Last 7 days"` (`SEVEN`). |
| `employmentType` | string | `""` (Any) | Filter by job type. Pick one or leave on `"Any"` for all types. Options: `"Any"`, `"Full-time"` (`FULLTIME`), `"Part-time"` (`PARTTIME`), `"Contract"` (`CONTRACTS`), `"Third-party"` (`THIRD_PARTY`). |
| `remoteOnly` | boolean | `false` | Only show jobs marked remote / work-from-home. |
| `easyApply` | boolean | `false` | Only show jobs that support Dice's easy-apply flow. |
| `willingToSponsor` | boolean | `false` | Only show jobs whose employer is willing to sponsor work visas. |

### Output

Each record is one job posting with the full set of structured fields:

```json
{
    "jobId": "5b2d4f7c-9a3e-4d12-b7e8-1f0c2a9b8d54",
    "title": "Senior Python Developer",
    "company": "Acme Cloud Systems",
    "companyUrl": "https://www.dice.com/company/10125678",
    "companyLogoUrl": "https://marketing-assets.dice.com/logos/acme-cloud.png",
    "location": "Austin, TX",
    "postedDate": "2026-04-22T14:08:00Z",
    "modifiedDate": "2026-04-24T09:31:00Z",
    "salary": "$140,000 - $170,000 per year",
    "salaryMin": 140000,
    "salaryMax": 170000,
    "salaryCurrency": "USD",
    "salaryPeriod": "year",
    "employmentType": "Full-time",
    "employmentTypes": ["Full-time"],
    "isRemote": true,
    "workFromHomeAvailability": "Yes",
    "workplaceTypes": ["Remote"],
    "easyApply": true,
    "willingToSponsor": false,
    "employerType": "Direct Hire",
    "summary": "Build and scale data pipelines for a fast-growing fintech...",
    "description": "We're looking for a Senior Python Developer to join our platform team...",
    "descriptionHtml": "<p>We're looking for a Senior Python Developer...</p>",
    "skills": ["Python", "AWS", "Kubernetes", "PostgreSQL"],
    "jobUrl": "https://www.dice.com/job-detail/5b2d4f7c-9a3e-4d12-b7e8-1f0c2a9b8d54",
    "searchQuery": "python developer",
    "searchLocation": "Austin, TX",
    "scrapedAt": "2026-04-25T13:45:12Z"
}
```

#### All Available Fields

| Field | Type | Description |
|-------|------|-------------|
| `jobId` | string | Dice's internal job identifier (GUID). |
| `title` | string | Job title. |
| `company` | string | Employer name. |
| `companyUrl` | string | Dice company-profile URL. |
| `companyLogoUrl` | string | Logo URL. |
| `location` | string | Display location string. |
| `postedDate` | string | ISO 8601 — when the posting was first listed. |
| `modifiedDate` | string | ISO 8601 — last time the posting was updated. |
| `salary` | string | Raw salary string exactly as shown on Dice (e.g. `"$120k"`, `"$60-80/hour"`, `"Depends on Experience"`). |
| `salaryMin` | number | null | Parsed minimum compensation, when the format is clean enough to extract. |
| `salaryMax` | number | null | Parsed maximum compensation. |
| `salaryCurrency` | string | null | ISO 4217 currency code (e.g. `"USD"`). |
| `salaryPeriod` | string | null | `"hour"`, `"day"`, `"week"`, `"month"`, or `"year"`. |
| `employmentType` | string | Comma-joined employment types as Dice displays them (e.g. `"Full-time, Contract"`). |
| `employmentTypes` | string\[] | Same data, pre-split into an array for easier downstream use. |
| `isRemote` | boolean | `true` if the job is remote-eligible. |
| `workFromHomeAvailability` | string | null | Dice's WFH flag (`"Yes"` / `"No"` / `"Hybrid"`). |
| `workplaceTypes` | string\[] | Workplace tags such as `"Remote"`, `"On-site"`, `"Hybrid"`. |
| `easyApply` | boolean | Whether the job supports Dice's easy-apply flow. |
| `willingToSponsor` | boolean | Whether the employer is willing to sponsor work visas. |
| `employerType` | string | null | `"Direct Hire"`, `"Recruiter"`, `"Staffing Firm"`, etc. |
| `summary` | string | Short summary as shown on the search-results card. |
| `description` | string | Full job description with HTML stripped — perfect for plain-text indexing or LLM input. |
| `descriptionHtml` | string | Full description with original HTML preserved. |
| `skills` | string\[] | Tagged skills when present in the posting (best-effort — often empty). |
| `jobUrl` | string | Public Dice detail URL for the job. |
| `searchQuery` | string | The keyword that surfaced this row (provenance). |
| `searchLocation` | string | The location used for the search (provenance). |
| `scrapedAt` | string | ISO 8601 timestamp of when the record was captured. |

### Tips for Best Results

- **Use specific keywords** — `"senior react developer"` returns far cleaner results than `"developer"`. Dice's search ranks broad terms loosely.
- **Narrow the location for better signal** — a tight `location` + small `radiusMiles` returns fewer but far more relevant jobs than a nationwide search. Dice caps every search at 500 results, so a focused search uses that budget on jobs you actually want.
- **Set `postedWithinDays: "ONE"` for fresh listings** — perfect for daily candidate-sourcing pipelines or fresh-job alerting.
- **Combine `remoteOnly` with a metro location** — Dice will return remote roles whose employers are headquartered in or hiring for that metro, useful for time-zone or compliance-aware searches.
- **Run multiple keywords in one execution** — populating `searchQueries` with several related titles (e.g. `["backend engineer", "platform engineer", "infrastructure engineer"]`) deduplicates across queries automatically and saves you spinning up multiple runs.
- **Paste a Dice URL when you already have a search dialed in** — `startUrls` honor every filter encoded in the URL, so any tuning you do on the Dice website carries through unchanged.

### Good to Know

- **500-results-per-search ceiling** — Dice's own search engine caps every query at 500 jobs (25 pages × 20 per page) regardless of how many matches actually exist. To reach more unique jobs, split a broad query into narrower ones (by city, role, or seniority) and run them in a single batch. *Actual counts may run roughly 1-3% under the requested cap because Dice occasionally repeats listings across pages — we deduplicate, which can shave a few off your requested total. This is expected.*
- **Full descriptions are populated by default** — every record includes the complete job description from the detail page. This is the most valuable field for LLM enrichment, candidate matching, and full-text indexing.
- **`skills` is best-effort** — Dice doesn't expose a structured skills tag on every posting. The field is always present (defaults to `[]`) so the dataset shape stays stable, but it'll be empty for many jobs.
- **Dice is US-only** — non-US locations silently fall back to nationwide US results rather than returning an error. If you need international coverage, this is not the right source.
- **Salary parsing is best-effort** — when Dice shows `"Depends on Experience"`, `"Competitive"`, or other free-text formats, the parsed `salaryMin`/`salaryMax` fields will be `null`. The raw `salary` string is always preserved.

### Pricing

**$0.80 per 1,000 results** — pay only for jobs you actually receive. **No compute charges — you only pay per result returned.**

| Results | Estimated Cost |
|---------|----------------|
| 100 | $0.08 |
| 1,000 | $0.80 |
| 10,000 | $8.00 |

Half the price of comparable Dice scrapers on Apify, with richer output (parsed salaries, full descriptions, batch keyword input, structured filters). No monthly rental, no tiered plans.

### Integrations

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

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Get notified when a run completes
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate recruiting, market research, lead generation, and labor-market analysis. Only public job listings are collected — no private employer dashboards, applicant data, or personal contact details. Users are responsible for complying with applicable laws and Dice's Terms of Service. Do not redistribute scraped listings as a substitute for Dice's own product, and do not use collected data for spam, harassment, candidate impersonation, or any unlawful purpose.

# Actor input Schema

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

Job titles or keywords to search for, such as 'python developer' or 'data scientist'. Each keyword runs a separate search. Up to 50 keywords per run.

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

Where to search for jobs. Enter a city, state, ZIP code, or 'Remote'. Example: 'Austin, TX'. Dice is US-only — locations outside the US fall back to nationwide results.

## `radiusMiles` (type: `integer`):

How far from the location to search, in miles. Ignored when location is empty.

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

Paste full Dice search result URLs (e.g., https://www.dice.com/jobs?q=...) to scrape them directly. Useful when you already have a search dialed in on the Dice website. Up to 50 URLs per run.

## `maxResultsPerQuery` (type: `integer`):

Maximum number of job listings to collect per search keyword. Dice caps results at 500 per search (25 pages × 20). Use a tighter location or filters to reach more unique jobs. Note: Dice may repeat jobs across pages, so the actual count can run ~2-3% below your cap because we deduplicate across pages.

## `postedWithinDays` (type: `string`):

Only show jobs posted within this time period.

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

Filter by job type. Pick one or leave on 'Any' for all types.

## `remoteOnly` (type: `boolean`):

Only show jobs marked remote / work-from-home.

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

Only show jobs that support Dice's easy-apply flow.

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

Only show jobs whose employer is willing to sponsor work visas.

## `fetchDescription` (type: `boolean`):

Fetch the full job description from each listing's detail page. Leave on for the most complete data. Turn off to make runs about 3x faster — but the description, descriptionHtml, and skills fields will be empty.

## Actor input object example

```json
{
  "searchQueries": [
    "python developer"
  ],
  "radiusMiles": 30,
  "startUrls": [],
  "maxResultsPerQuery": 100,
  "postedWithinDays": "",
  "employmentType": "",
  "remoteOnly": false,
  "easyApply": false,
  "willingToSponsor": false,
  "fetchDescription": true
}
```

# Actor output Schema

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

Table of scraped job listings with key fields.

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

Complete job data including descriptions, skills, and parsed salary fields.

# 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": [
        "python developer"
    ],
    "location": "",
    "radiusMiles": 30,
    "startUrls": [],
    "maxResultsPerQuery": 100,
    "postedWithinDays": "",
    "employmentType": "",
    "remoteOnly": false,
    "easyApply": false,
    "willingToSponsor": false,
    "fetchDescription": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/dice-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": ["python developer"],
    "location": "",
    "radiusMiles": 30,
    "startUrls": [],
    "maxResultsPerQuery": 100,
    "postedWithinDays": "",
    "employmentType": "",
    "remoteOnly": False,
    "easyApply": False,
    "willingToSponsor": False,
    "fetchDescription": True,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/dice-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": [
    "python developer"
  ],
  "location": "",
  "radiusMiles": 30,
  "startUrls": [],
  "maxResultsPerQuery": 100,
  "postedWithinDays": "",
  "employmentType": "",
  "remoteOnly": false,
  "easyApply": false,
  "willingToSponsor": false,
  "fetchDescription": true
}' |
apify call solidcode/dice-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Dice Tech Jobs Scraper",
        "description": "[💰 $0.8 / 1K] Extract US tech job listings from Dice.com. Search by keyword, location, employment type, and remote/sponsorship filters to get structured data including titles, companies, salaries, descriptions, and apply links.",
        "version": "1.0",
        "x-build-id": "vypZiL8KAfdlEfWL9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~dice-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-dice-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~dice-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-dice-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~dice-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-dice-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 'python developer' or 'data scientist'. Each keyword runs a separate search. Up to 50 keywords per run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Where to search for jobs. Enter a city, state, ZIP code, or 'Remote'. Example: 'Austin, TX'. Dice is US-only — locations outside the US fall back to nationwide results."
                    },
                    "radiusMiles": {
                        "title": "Search Radius (miles)",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "How far from the location to search, in miles. Ignored when location is empty.",
                        "default": 30
                    },
                    "startUrls": {
                        "title": "Direct Dice Search URLs",
                        "maxItems": 50,
                        "type": "array",
                        "description": "Paste full Dice search result URLs (e.g., https://www.dice.com/jobs?q=...) to scrape them directly. Useful when you already have a search dialed in on the Dice website. Up to 50 URLs per run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResultsPerQuery": {
                        "title": "Max Results per Query",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of job listings to collect per search keyword. Dice caps results at 500 per search (25 pages × 20). Use a tighter location or filters to reach more unique jobs. Note: Dice may repeat jobs across pages, so the actual count can run ~2-3% below your cap because we deduplicate across pages.",
                        "default": 100
                    },
                    "postedWithinDays": {
                        "title": "Posted Within",
                        "enum": [
                            "",
                            "ONE",
                            "THREE",
                            "SEVEN"
                        ],
                        "type": "string",
                        "description": "Only show jobs posted within this time period.",
                        "default": ""
                    },
                    "employmentType": {
                        "title": "Employment Type",
                        "enum": [
                            "",
                            "FULLTIME",
                            "PARTTIME",
                            "CONTRACTS",
                            "THIRD_PARTY"
                        ],
                        "type": "string",
                        "description": "Filter by job type. Pick one or leave on 'Any' for all types.",
                        "default": ""
                    },
                    "remoteOnly": {
                        "title": "Remote Only",
                        "type": "boolean",
                        "description": "Only show jobs marked remote / work-from-home.",
                        "default": false
                    },
                    "easyApply": {
                        "title": "Easy Apply Only",
                        "type": "boolean",
                        "description": "Only show jobs that support Dice's easy-apply flow.",
                        "default": false
                    },
                    "willingToSponsor": {
                        "title": "Willing to Sponsor (Visa)",
                        "type": "boolean",
                        "description": "Only show jobs whose employer is willing to sponsor work visas.",
                        "default": false
                    },
                    "fetchDescription": {
                        "title": "Fetch Full Job Descriptions",
                        "type": "boolean",
                        "description": "Fetch the full job description from each listing's detail page. Leave on for the most complete data. Turn off to make runs about 3x faster — but the description, descriptionHtml, and skills fields will be empty.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
