# Dice Jobs Scraper (`fetch_cat/dice-jobs-scraper`) Actor

Scrape public Dice tech jobs by keyword, location, or Dice search URL. Export titles, companies, salaries, work models, descriptions, and links.

- **URL**: https://apify.com/fetch\_cat/dice-jobs-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.11 / 1,000 dice job listing saveds

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

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

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

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

# README

## Dice Jobs Scraper

Export public Dice tech job listings by keyword, location, or Dice search URL, including job titles, companies, locations, salaries, work models, descriptions, skills, and job links.

Use this Actor when you need a repeatable CSV, JSON, Excel, API, or AI-agent export of Dice job data for recruiting intelligence, hiring-market research, lead generation, or job monitoring.

### What Does Dice Jobs Scraper Do?

Dice Jobs Scraper turns Dice search results into a structured dataset.

- **Search by keyword and location**: query Dice for roles such as software engineer, Java developer, cybersecurity analyst, data scientist, or cloud architect.
- **Use Dice search URLs**: paste one or more Dice `/jobs` URLs when you already have a filtered search.
- **Collect job details**: export titles, companies, locations, salary text, workplace types, posting dates, summaries, and job URLs.
- **Optionally open detail pages**: include fuller descriptions and detected skills when you enable `includeDetails`.
- **Export anywhere**: download from Apify as CSV, JSON, Excel, XML, RSS, or connect through the Dataset API.

### Ready-to-run examples

- [Dice Software Engineer Details Sample](https://apify.com/fetch_cat/dice-jobs-scraper/examples/dice-software-engineer-details-sample)
- [Dice New York Java Developer Jobs](https://apify.com/fetch_cat/dice-jobs-scraper/examples/dice-new-york-java-developer-jobs)
- [Dice Machine Learning Engineer Jobs](https://apify.com/fetch_cat/dice-jobs-scraper/examples/dice-machine-learning-engineer-jobs)
- [Dice Data Scientist Remote Jobs](https://apify.com/fetch_cat/dice-jobs-scraper/examples/dice-data-scientist-remote-jobs)
- [Dice Full Stack Developer Remote Jobs](https://apify.com/fetch_cat/dice-jobs-scraper/examples/dice-full-stack-developer-remote-jobs)
- [Dice Business Analyst Remote Jobs](https://apify.com/fetch_cat/dice-jobs-scraper/examples/dice-business-analyst-remote-jobs)

[View all ready-to-run examples](https://apify.com/fetch_cat/dice-jobs-scraper/examples)

### Input Example

```json
{
  "query": "python developer",
  "location": "Remote",
  "radius": 20,
  "radiusUnit": "mi",
  "maxItems": 20,
  "pageSize": 20,
  "includeDetails": false
}
```

You can also paste Dice search URLs:

```json
{
  "startUrls": [
    {
      "url": "https://www.dice.com/jobs?q=data%20engineer&location=Remote&radius=20&radiusUnit=mi&page=1&pageSize=20"
    }
  ],
  "maxItems": 50,
  "includeDetails": true
}
```

### Output Example

```json
{
  "id": "123456",
  "title": "Senior Python Developer",
  "companyName": "Example Tech",
  "location": "Remote",
  "isRemote": true,
  "workplaceTypes": ["Remote"],
  "employmentType": "Full-time",
  "postedAt": "2026-07-01T00:00:00.000Z",
  "salary": "$130,000 - $160,000",
  "easyApply": true,
  "detailsPageUrl": "https://www.dice.com/job-detail/example",
  "summary": "Build backend services and data pipelines.",
  "skills": ["Python", "AWS", "SQL"],
  "description": "Full description when includeDetails is enabled.",
  "searchUrl": "https://www.dice.com/jobs?q=python%20developer&location=Remote",
  "scrapedAt": "2026-07-07T10:00:00.000Z"
}
```

### Who Is It For?

| User | Use case |
| --- | --- |
| Recruiters | Track available tech roles by skill, company, location, or remote status. |
| Sales teams | Find companies actively hiring for technologies related to your product. |
| Market researchers | Monitor salary text, work models, and demand by technology. |
| Job boards | Build repeatable exports of Dice listings for analysis or enrichment. |
| AI agents | Run Dice searches through Apify API or MCP and summarize hiring patterns. |

### Input settings

| Setting | JSON key | Type / default | Description |
| --- | --- | --- | --- |
| Job keywords | `query` | string, default `"software engineer"` | Keywords to search on Dice, such as a job title, skill, or technology. |
| Location | `location` | string, default `"Remote"` | Dice location text, for example Remote, New York, Austin, or United States. |
| Search radius | `radius` | integer, default `20` | Distance around the location to search. |
| Radius unit | `radiusUnit` | string, default `"mi"` | Unit for the search radius. |
| Maximum jobs | `maxItems` | integer, default `20` | Maximum number of job listings to save. |
| Page size | `pageSize` | integer, default `20` | Dice results to request per search page. |
| Open detail pages | `includeDetails` | boolean, default `false` | Fetch each job detail page to add a fuller description and detected skills. Leave off for faster runs. |
| Dice search URLs | `startUrls` | array, default `[{"url":"https://www.dice.com/jobs?q=data%20engineer&location=Remote&radius=20&radiusUnit=mi&page=1&pageSize=20"}]` | Optional Dice /jobs search URLs. If provided, these override keyword and location fields. |
| Proxy configuration | `proxyConfiguration` | object, default `{"useApifyProxy":false}` | Optional Apify proxy settings. Datacenter/automatic proxy is usually enough for small public Dice searches. |

### Output fields

| JSON key | Label | Type | Description |
| --- | --- | --- | --- |
| `id` | Id | string / null | Output field for id. |
| `title` | Title | string / null | Output field for title. |
| `companyName` | CompanyName | string / null | Output field for companyname. |
| `companyLogoUrl` | CompanyLogoUrl | string / null | Output field for companylogourl. |
| `location` | Location | string / null | Output field for location. |
| `isRemote` | IsRemote | boolean / null | Output field for isremote. |
| `workplaceTypes` | WorkplaceTypes | array | Output field for workplacetypes. |
| `employmentType` | EmploymentType | string / null | Output field for employmenttype. |
| `employerType` | EmployerType | string / null | Output field for employertype. |
| `postedAt` | PostedAt | string / null | Output field for postedat. |
| `modifiedAt` | ModifiedAt | string / null | Output field for modifiedat. |
| `salary` | Salary | string / null | Output field for salary. |
| `easyApply` | EasyApply | boolean / null | Output field for easyapply. |
| `detailsPageUrl` | DetailsPageUrl | string / null | Output field for detailspageurl. |
| `summary` | Summary | string / null | Output field for summary. |
| `skills` | Skills | array | Output field for skills. |
| `description` | Description | string / null | Output field for description. |
| `searchUrl` | SearchUrl | string | Output field for searchurl. |
| `scrapedAt` | ScrapedAt | string | Output field for scrapedat. |

### Pricing

This Actor uses Apify pay-per-event pricing. The prices below come from the current Actor pricing configuration. Apify public plans map to Store discount tiers, so the table shows both the user-facing plan context and the pricing tier name. The final price shown in Apify depends on the user account plan and any custom agreement.

| Event | What is charged | Price |
| --- | --- | ---: |
| `start` | One-time fee charged when a run starts. Covers fixed startup cost. | $0.005 |

| Event | What is charged | Free / no discount | Starter / Bronze | Scale / Silver | Business / Gold | Custom / Platinum | Custom / Diamond |
| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: |
| `item` | Charged per Dice job listing saved to the dataset. | $0.207 / 1,000 | $0.18 / 1,000 | $0.1404 / 1,000 | $0.108 / 1,000 | $0.072 / 1,000 | $0.0504 / 1,000 |

Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.

### Tips For Better Results

- **Start small**: test with `maxItems` set to 10-20 before scheduling larger runs.
- **Use specific keywords**: `python developer`, `data engineer`, or `cloud architect` usually produces cleaner data than broad words.
- **Turn on details only when needed**: `includeDetails` gives richer descriptions and skills but opens more pages.
- **Use start URLs for complex searches**: configure filters on Dice, copy the search URL, and paste it into `startUrls`.
- **Expect missing salaries**: many Dice listings do not publish salary text.

### API usage

Run Dice Jobs Scraper from your own code with the Apify API.

**Node.js**

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
  "query": "software engineer",
  "location": "Remote",
  "radius": 20,
  "radiusUnit": "mi",
  "maxItems": 20
};

const run = await client.actor('fetch_cat/dice-jobs-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**Python**

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/dice-jobs-scraper").call(run_input={
  "query": "software engineer",
  "location": "Remote",
  "radius": 20,
  "radiusUnit": "mi",
  "maxItems": 20
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

**cURL**

```bash
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~dice-jobs-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"software engineer","location":"Remote","radius":20,"radiusUnit":"mi","maxItems":20}'
```

### Use with AI agents via MCP

Dice Jobs Scraper can be used by AI assistants through the hosted Apify MCP server.

**Claude Code setup**

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/dice-jobs-scraper"
```

**Claude Desktop, Cursor, or VS Code JSON config**

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/dice-jobs-scraper"
    }
  }
}
```

**Example prompts**

- "Run Dice Jobs Scraper with this input JSON and summarize the dataset."
- "Export the latest Dice Jobs Scraper results to a table I can review."
- "Schedule this Actor for monitoring and tell me what changed between runs."

### Limits And Notes

- The Actor extracts public Dice data; it does not bypass login-only or private content.
- Dice may omit salary, skills, employer type, or full description for some listings.
- Larger runs and `includeDetails` can take longer because more pages are requested.
- Search result counts can change quickly as Dice updates its listings.

### FAQ

#### Can I export Dice jobs to CSV or Excel?

Yes. After a run, open the dataset on Apify and export it as CSV, Excel, JSON, XML, or RSS.

#### Can I monitor Dice jobs on a schedule?

Yes. Create an Apify schedule with the same input to run the Actor daily, weekly, or at your preferred interval.

#### Why is `description` empty?

Set `includeDetails` to `true`. Some jobs still may not expose a full description publicly.

#### Is this a Dice jobs API alternative?

It can be used as a practical API-style export for public Dice job search results through Apify API, datasets, webhooks, and MCP.

### Related actors

- [Ashby Jobs Scraper](https://apify.com/fetch_cat/ashby-jobs-scraper)
- [ATS Jobs Scraper for 6 ATS Sources](https://apify.com/fetch_cat/ats-jobs-scraper)
- [Built In Jobs Scraper](https://apify.com/fetch_cat/builtin-jobs-scraper)
- [Freelancer Jobs Scraper](https://apify.com/fetch_cat/freelancer-jobs-scraper)
- [Greenhouse Jobs Scraper](https://apify.com/fetch_cat/greenhouse-jobs-scraper)

### Support

Report bugs, wrong output, blocked runs, or missing fields from the Actor page. Include the Apify run ID or run URL, your input JSON, what you expected, what the Actor returned, and one reproducible public URL so the issue can be tested quickly.

### Privacy and data handling

This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses job-search inputs and public job-posting results to produce the output dataset and sends requests to public Dice Jobs pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.

# Actor input Schema

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

Keywords to search on Dice, such as a job title, skill, or technology.

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

Dice location text, for example Remote, New York, Austin, or United States.

## `radius` (type: `integer`):

Distance around the location to search.

## `radiusUnit` (type: `string`):

Unit for the search radius.

## `maxItems` (type: `integer`):

Maximum number of job listings to save.

## `pageSize` (type: `integer`):

Dice results to request per search page.

## `includeDetails` (type: `boolean`):

Fetch each job detail page to add a fuller description and detected skills. Leave off for faster runs.

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

Optional Dice /jobs search URLs. If provided, these override keyword and location fields.

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

Optional Apify proxy settings. Datacenter/automatic proxy is usually enough for small public Dice searches.

## Actor input object example

```json
{
  "query": "software engineer",
  "location": "Remote",
  "radius": 20,
  "radiusUnit": "mi",
  "maxItems": 20,
  "pageSize": 20,
  "includeDetails": false,
  "startUrls": [
    {
      "url": "https://www.dice.com/jobs?q=data%20engineer&location=Remote&radius=20&radiusUnit=mi&page=1&pageSize=20"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `runSummary` (type: `string`):

Diagnostic summary of saved results and any terminal run error.

# 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": "software engineer",
    "location": "Remote",
    "radius": 20,
    "radiusUnit": "mi",
    "maxItems": 20,
    "pageSize": 20,
    "includeDetails": false,
    "startUrls": [
        {
            "url": "https://www.dice.com/jobs?q=data%20engineer&location=Remote&radius=20&radiusUnit=mi&page=1&pageSize=20"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/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": "software engineer",
    "location": "Remote",
    "radius": 20,
    "radiusUnit": "mi",
    "maxItems": 20,
    "pageSize": 20,
    "includeDetails": False,
    "startUrls": [{ "url": "https://www.dice.com/jobs?q=data%20engineer&location=Remote&radius=20&radiusUnit=mi&page=1&pageSize=20" }],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/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": "software engineer",
  "location": "Remote",
  "radius": 20,
  "radiusUnit": "mi",
  "maxItems": 20,
  "pageSize": 20,
  "includeDetails": false,
  "startUrls": [
    {
      "url": "https://www.dice.com/jobs?q=data%20engineer&location=Remote&radius=20&radiusUnit=mi&page=1&pageSize=20"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call fetch_cat/dice-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/WhTY1Vvs6rBHA8bsV/builds/gYR3GkQyCqcRedgYh/openapi.json
