# Dice Job Scraper — Tech Jobs, Salaries & Descriptions (`hipersoft/dice-scraper`) Actor

Scrape tech job listings from Dice.com: title, company, location, salary, remote/visa flags, and full job descriptions. Fast, reliable, no login.

- **URL**: https://apify.com/hipersoft/dice-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.001 / job scraped

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 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 — Tech Jobs with Salaries, No Login, Clean JSON

Scrape tech job listings straight from Dice.com by keyword and location and get back clean, structured JSON — title, company, location, salary, employment type, posted date, sponsored flag and the apply link. It reads Dice's own server-rendered search pages over fast, plain HTTP, paginating through each search automatically. No account, no API key. Built for recruiters, job-board operators and anyone researching the tech labor market who needs reliable data without babysitting a browser.

### Features

- 🔎 **Keyword + location search** — pass `searches` like `"software engineer|Remote"`, or drop in a full `dice.com/jobs` URL and it just works.
- 💰 **Salary when Dice lists it** — the `salary` field is pulled straight from the card, alongside `employmentType` (full-time, contract, etc.).
- 📄 **Multi-page crawling** — `maxPagesPerSearch` walks page after page (~20 jobs each) so you get depth, not just the first screen.
- 🎯 **Total cap control** — `maxItems` caps jobs across all searches so runs stay predictable.
- 🏷️ **Sponsored detection** — every record carries a `featured` boolean so you can separate paid placements from organic listings.
- ⚡ **Fast, browser-free HTTP** — no headless Chrome, no login; runs light and cheap.
- 🔁 **De-duplicated** — jobs are keyed by Dice's `jobId` so you never get the same listing twice.

### What you get

Every job becomes one clean JSON record:

```json
{
  "jobId": "a1b2c3d4-0000-1111-2222-333344445555",
  "title": "Senior Software Engineer",
  "company": "Acme Technologies",
  "location": "Remote",
  "salary": "$140,000 - $170,000",
  "employmentType": "Full-time",
  "posted": "2 days ago",
  "featured": false,
  "summary": "We're hiring a senior engineer to build and scale our backend platform...",
  "url": "https://www.dice.com/job-detail/a1b2c3d4-0000-1111-2222-333344445555"
}
```

### Input

```json
{
  "searches": ["software engineer|Remote", "data scientist|New York, NY"],
  "maxItems": 200,
  "maxPagesPerSearch": 10,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

| Field | Description |
| --- | --- |
| `searches` | Keyword + optional location as `"keyword|location"`, or a full Dice jobs URL. One per line. |
| `startUrls` | Advanced alternative: a request list of `{"url":"..."}` Dice jobs URLs. |
| `maxItems` | Cap on total jobs across all searches (0 = no cap). |
| `maxPagesPerSearch` | Pages (~20 jobs each) to crawl per search. |
| `proxyConfiguration` | Optional. Dice works without a proxy; enable one only if you hit rate limits at scale. |

### Use cases

- Build or refresh a tech job board with fresh, salaried Dice listings.
- Source candidates by scraping roles for a specific stack in a target city.
- Track tech salary ranges and employment types across markets over time.
- Feed a labor-market or compensation dashboard with structured hiring data.

### Pricing

Pay-per-event: you're billed a small amount per run and per item scraped — you only pay for what you get. See the **Pricing** tab for current rates.

### FAQ

**Do I need a Dice account or API key?**
No. This Actor reads [Dice.com](https://www.dice.com)'s public, server-rendered job search pages over plain HTTP — there's no login, no API key involved.

**How many jobs can I get per run?**
Each Dice search page holds roughly 20 jobs. Use `maxPagesPerSearch` to control how deep it paginates and `maxItems` to cap the total across all your searches, so runs stay predictable.

**Is scraping Dice legal?**
The Actor only reads publicly available listings that Dice serves to any visitor, and results are de-duplicated by Dice's `jobId`. It's an independent tool, not affiliated with Dice; review Dice's Terms of Service and your local regulations for your specific use case.

**What's the output format?**
Clean, structured JSON — one record per job with `title`, `company`, `location`, `salary`, `employmentType`, `posted`, `featured`, `summary` and the apply `url`. Export to JSON, CSV or Excel from the dataset.

**Can I filter by location or keyword?**
Yes. Pass `searches` as `"keyword|location"` (e.g. `"software engineer|Remote"`), or drop in a full `dice.com/jobs` URL with the filters you want.

### Related Actors

Building a broader hiring dataset? Pair this with our other job scrapers:

- [Reed Job Scraper](https://apify.com/hipersoft/reed-scraper) — UK jobs from Reed.co.uk with salaries and full descriptions.
- [RemoteOK Job Scraper](https://apify.com/hipersoft/remoteok-scraper) — remote roles with tags and salary ranges.
- [Company Careers Job Scraper](https://apify.com/hipersoft/company-jobs-scraper) — open roles straight from Greenhouse, Lever and Ashby career pages.
- [Remote Jobs Aggregator](https://apify.com/hipersoft/remote-jobs-aggregator) — five remote job boards merged and de-duplicated into one dataset.

### Notes

This Actor reads Dice.com's public, server-rendered job search pages. It is an independent tool and is not affiliated with, endorsed by, or sponsored by Dice or DHI Group; "Dice" is a trademark of its respective owner.

# Actor input Schema

## `searches` (type: `array`):

Keyword + optional location as "keyword|location" (e.g. "software engineer|Remote"), or a full dice.com/jobs URL. One per line.

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

Alternative to searches: a request list of {"url":"..."} Dice jobs URLs.

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

Cap total jobs across all searches (0 = no cap).

## `maxPagesPerSearch` (type: `integer`):

Pages (~20 jobs each) to crawl per search.

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

Optional. Dice works without a proxy; enable one only if you hit rate limits at scale.

## Actor input object example

```json
{
  "searches": [
    "software engineer|Remote"
  ],
  "maxItems": 0,
  "maxPagesPerSearch": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "searches": [
        "software engineer|Remote"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/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 = { "searches": ["software engineer|Remote"] }

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/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 '{
  "searches": [
    "software engineer|Remote"
  ]
}' |
apify call hipersoft/dice-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Zlo6pt1TKfZa1w8N5/builds/BeBJmfcy305XYs4J1/openapi.json
