# Dice Jobs Scraper: US Tech Jobs, Salaries, Remote and Visa (`themineworks/dice-jobs-scraper`) Actor

Scrape Dice.com US tech jobs by keyword and location: title, company, city and state, remote or hybrid, employment type, salary with parsed range, posted date, easy apply, visa sponsorship and link. Optional full description and skills. Only new jobs mode for schedules. No login.

- **URL**: https://apify.com/themineworks/dice-jobs-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Jobs, Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.55 / 1,000 jobs

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Dice Jobs Scraper: US Tech Jobs, Salaries, Remote and Visa

[![400 Dice tech jobs from two searches in 7.4 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/dice-jobs-scraper-hero.png)](https://console.apify.com/actors/WIL4HhRzkAEx7EJAh/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 140,000 runs across 170+ public actors.

### Why choose this actor?

- **Fast and complete.** Dice serves 100 jobs per request, and this actor asks for full pages: our final test run returned 400 of 400 jobs from two searches in 7.4 seconds with 4 requests, and a single search returned 2,000 jobs in 32 seconds. You never wait for a browser to load.
- **Every filter Dice offers, applied by Dice.** Location with a radius in miles, remote, hybrid or on-site, full time, part time, contract or third party (C2C), posted today, in 3 or in 7 days, direct hire or recruiter, easy apply and visa sponsorship. In a test with five filters at once, 0 of 15 rows broke a filter.
- **Pay as numbers, and only new jobs on a schedule.** Besides the pay text exactly as the employer typed it, every row with an amount gets `salary_min`, `salary_max`, the currency and the period (hour or year). With `onlyNewJobs` on, a repeat run delivers and charges only jobs it has not delivered before: our second test run found 0 new jobs and charged 0.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/WIL4HhRzkAEx7EJAh/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Jobs and hiring family:** [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Shine.com Jobs Scraper](https://apify.com/themineworks/shine-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Internshala Scraper](https://apify.com/themineworks/internshala-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### Try it in one minute

Paste this into the input (JSON view) and press Start. It returns 20 software engineer jobs from Dice in about 5 seconds:

```json
{
  "keywords": ["software engineer"],
  "maxJobs": 20
}
```

`keywords` takes job titles, skills or company names, one per line; each keyword is its own search. `locations` takes US cities, states or ZIP codes as you would type them on Dice (`Austin, TX`, `New York, NY`, `Seattle`), searched within `radius` miles; leave it empty for the whole United States. An empty `keywords` list returns every job that matches the filters.

On Apify's free plan every run returns the first 10 results as a preview, so you can check the data and the fields before you pay. A paid Apify plan returns every result: https://apify.com/pricing?fpr=ymnoit

#### Copy to your AI assistant

```text
themineworks/dice-jobs-scraper on Apify. Scrapes US tech job listings from Dice.com, one row per job with title, company, city and state, remote/hybrid/on-site, employment type, employer type, salary text plus parsed min, max, currency and period, posted date, easy apply, visa sponsorship and link, with optional full description and skills. Call ApifyClient("TOKEN").actor("themineworks/dice-jobs-scraper").call(run_input={"keywords": ["python developer"], "locations": ["Austin, TX"], "maxJobs": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: none (default keywords ["software engineer"], whole US). Optional: keywords (list; empty list = all jobs), locations (list of US cities, states or ZIP codes), radius (miles, default 30), workplaceTypes (remote, hybrid, onsite), employmentTypes (full_time, part_time, contract, third_party), postedWithin ("today", "3days", "7days"), employerTypes (direct_hire, recruiter, other), easyApplyOnly (bool), visaSponsorshipOnly (bool), sortBy ("relevance" or "newest"), maxJobs (default 100, 20 to 10000 per search), includeDescription (default false), onlyNewJobs (default false). Full spec: GET https://api.apify.com/v2/acts/themineworks~dice-jobs-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **35 fields per job, 5 more with descriptions**: title, company with its Dice company id and page, city, state and state code, workplace type, employment type, employer type, easy apply, visa sponsorship, posted, first live and last updated dates, pay text with parsed range, a 500 character summary, the link, and the keyword, location and rank that found it.
- **Full description on demand**: switch on `includeDescription` for the whole description as plain text, the skills list Dice shows, the closing date, the postal code and whether you apply on Dice or on the employer's site.
- **Every Dice filter**: location and radius, remote or hybrid or on-site, four employment types, posted date, employer type, easy apply, visa sponsorship, and best match or newest first.
- **From 20 to 10,000 jobs per search**, 100 per page. Dice serves the first 10,000 results of any search, so the actor never asks past them. Each keyword in each location is its own search; three run at a time, and pages are fetched three at a time.
- **No double charging**: a job found by two keywords, or listed twice while the results shift, is delivered and charged once.
- **A run summary you can audit**: the `OUTPUT` record lists every search's status, the number of jobs Dice has for it, how Dice read the location, pages read, attempts, repeats skipped and the success rate per request type.

### How to use it

#### Basic: one keyword in the whole US

```json
{
  "keywords": ["data engineer"],
  "maxJobs": 100
}
```

#### Several keywords, newest first

Each keyword is its own search: this input is 2 searches of up to 200 jobs, 400 jobs in all (our final test run, 7.4 seconds):

```json
{
  "keywords": ["python developer", "devops engineer"],
  "maxJobs": 200,
  "sortBy": "newest"
}
```

#### Several cities with full descriptions

Each keyword is searched in each city, within 30 miles by default. This is our description test: 60 jobs from Chicago and Dallas in 22.8 seconds, 59 with the full description and skills (one job was taken down while the run read it):

```json
{
  "keywords": ["java developer"],
  "locations": ["Chicago, IL", "Dallas, TX"],
  "maxJobs": 30,
  "includeDescription": true
}
```

#### Job: daily alerts for remote contract roles

Remote only, contract or C2C, posted in the last 3 days, newest first, and only jobs not delivered before. Save it as a task and add a daily schedule (Console > Schedules); each run returns only the jobs that appeared since the last one, and a run with nothing new charges nothing but the start fee.

```json
{
  "keywords": ["data engineer", "cloud architect"],
  "workplaceTypes": ["remote"],
  "employmentTypes": ["contract", "third_party"],
  "postedWithin": "3days",
  "sortBy": "newest",
  "maxJobs": 200,
  "onlyNewJobs": true
}
```

#### Job: visa sponsorship jobs for international candidates

Only jobs whose employer marked them as willing to sponsor a work visa, posted in the last week:

```json
{
  "keywords": ["software engineer", "machine learning"],
  "visaSponsorshipOnly": true,
  "postedWithin": "7days",
  "maxJobs": 500
}
```

#### Job: salary benchmarking for one role in several metros

Full time roles from direct employers in three metros, with `salary_min`, `salary_max` and `salary_period` ready to compare. About half of Dice jobs carry an amount (50% in our test run); the rest say "Depends on Experience" or similar.

```json
{
  "keywords": ["devops engineer"],
  "locations": ["San Francisco, CA", "Austin, TX", "New York, NY"],
  "radius": 50,
  "employmentTypes": ["full_time"],
  "employerTypes": ["direct_hire"],
  "maxJobs": 300
}
```

#### Job: who is hiring through recruiters in one state

Leave `keywords` empty for every tech job in an area, then count by `company` to see which staffing firms post the most:

```json
{
  "keywords": [],
  "locations": ["Texas"],
  "employerTypes": ["recruiter"],
  "postedWithin": "7days",
  "maxJobs": 2000
}
```

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `keywords` | array of strings | `["software engineer"]` | Job titles, skills or companies, one per line. Each is its own search in every location. An empty list returns all jobs that match the filters. |
| `locations` | array of strings | empty | US cities, states or ZIP codes as typed on Dice, for example `Austin, TX`, `Texas` or `78701`. Each keyword is searched in each location. Empty means the whole United States. |
| `radius` | integer | `30` | Miles around each location, 1 to 200. Ignored without a location. |
| `workplaceTypes` | array | all | `remote`, `hybrid`, `onsite`. Jobs with any of the chosen types. |
| `employmentTypes` | array | all | `full_time`, `part_time`, `contract`, `third_party` (C2C or staffing). |
| `postedWithin` | string | any time | `today`, `3days` or `7days`. |
| `employerTypes` | array | all | `direct_hire`, `recruiter`, `other`. |
| `easyApplyOnly` | boolean | `false` | Only jobs you can apply to on Dice with one click. |
| `visaSponsorshipOnly` | boolean | `false` | Only jobs marked as willing to sponsor a work visa. |
| `sortBy` | string | `relevance` | `relevance` (best match) or `newest`. |
| `maxJobs` | integer | `100` | Most jobs per search (one keyword in one location), 20 to 10,000. Also the most you pay for per search. |
| `includeDescription` | boolean | `false` | Adds the full description, skills, closing date, postal code and apply type from each job's page. One extra request per job. |
| `onlyNewJobs` | boolean | `false` | Skips jobs an earlier run of this actor in your account already delivered. For schedules; works best with `sortBy: "newest"`. |

### What data do you get?

One row per job. A job found by two keywords or two locations is delivered once.

**The job**: `job_id`, `dice_id`, `title`, `employment_type`, `employer_type`, `easy_apply`, `visa_sponsorship`, `work_from_home`, `is_featured`, `description_short`, `job_url`.

**The company**: `company`, `company_id`, `company_profile_id`, `company_url` (its page on Dice), `company_logo_url`.

**Where and how**: `location`, `city`, `state`, `state_code`, `country_code`, `workplace_type` (`remote`, `hybrid`, `onsite`, comma separated when the employer chose several), `is_remote`.

**When**: `posted_at` (posted or last reposted), `first_active_at` (first went live), `updated_at`.

**Pay**: `salary_text` (exactly as the employer typed it), `salary_min`, `salary_max`, `salary_currency`, `salary_period` (`hour` or `year`, or `month`, `week`, `day` when the text says so).

**With `includeDescription`**: `description` (plain text), `skills` (the list Dice shows on the job page), `valid_through` (closing date), `postal_code`, `apply_type` (`internal` for apply on Dice, `external` for the employer's site), and `description_error` on a row whose page could not be read.

**The search**: `search_keyword`, `search_location`, `search_rank`, `scraped_at`.

How full the fields were in our final test runs (400 jobs from two US wide searches; 60 jobs with descriptions from Chicago and Dallas):

| Field | Filled | Why not always |
|---|---|---|
| `job_id`, `title`, `company`, `company_url`, `location`, `employment_type`, `employer_type`, `easy_apply`, `visa_sponsorship`, `posted_at`, `description_short`, `job_url` | 100% | |
| `state`, `state_code` | 99% | A few jobs give only the country. |
| `workplace_type` | 97% | A few employers leave it unset. |
| `city` | 94% | Some jobs give only a state. |
| `company_profile_id` | 88% | Only companies with a Dice profile. |
| `salary_text` | 80% | Some employers leave pay empty. |
| `salary_min`, `salary_max`, `salary_period` | 50% | Pay text without an amount, such as "Depends on Experience" or "DOE", gives no numbers. |
| `description`, `valid_through`, `postal_code`, `apply_type` | 98% of 60 | With `includeDescription` on; one job was taken down mid run. |
| `skills` | 90% of 60 | Only when Dice lists skills for the job. |

#### Stable fields for automations

These fields were present in every row of our test runs and their names will not change:

| Field | Meaning |
|---|---|
| `job_id` | Dice job id, the one in the job link, stable across runs |
| `title` | Job title |
| `company` | Company name as Dice shows it |
| `company_id` | Dice company id |
| `location` | Location as Dice shows it, for example `Austin, Texas, USA` |
| `country_code` | `US` |
| `is_remote` | True when the job can be done remotely |
| `employment_type` | For example `Full-time` or `Contract, Third Party` |
| `employer_type` | `Direct Hire`, `Recruiter` or `Other` |
| `visa_sponsorship` | True when the employer will sponsor a visa |
| `posted_at` | When the job was posted or reposted, ISO 8601 UTC |
| `job_url` | Link to the job on Dice |
| `search_rank` | Position of the job in its search |
| `scraped_at` | When the job was read, ISO 8601 UTC |

#### Output examples

Real rows from our test runs in October 2026, trimmed for length.

**A yearly salary read into numbers** (search "devops engineer", whole US):

```json
{
  "job_id": "01f3d0fe-79ae-4782-9fcc-716a49e2d6e0",
  "dice_id": "3e4d82af1740ba7feadeee26859a25d1",
  "title": "Senior DevOps Engineer, Infrastructure",
  "company": "City of New York",
  "company_id": "10119317",
  "company_url": "https://www.dice.com/company/10119317",
  "location": "New York, New York, USA",
  "city": "New York",
  "state": "New York",
  "state_code": "NY",
  "country_code": "US",
  "workplace_type": "onsite",
  "is_remote": false,
  "employment_type": "Full-time",
  "employer_type": "Direct Hire",
  "easy_apply": false,
  "visa_sponsorship": false,
  "work_from_home": false,
  "posted_at": "2026-10-03T09:56:33Z",
  "first_active_at": "2026-10-03T09:56:33Z",
  "updated_at": "2026-10-05T21:04:31Z",
  "salary_text": "USD 150,000.00 per year",
  "salary_min": 150000,
  "salary_max": 150000,
  "salary_currency": "USD",
  "salary_period": "year",
  "description_short": "Company Description Job Description OPEN TO CITY EMPLOYEES ONLY PERMANENT IN THIS TITLE The Office of Technology and Innovation (OTI)...",
  "job_url": "https://www.dice.com/job-detail/01f3d0fe-79ae-4782-9fcc-716a49e2d6e0",
  "search_keyword": "devops engineer",
  "search_rank": 72,
  "scraped_at": "2026-10-05T21:56:08.607Z"
}
```

**A remote hourly role** (search "python developer"):

```json
{
  "job_id": "45eb9d69-9cda-4009-a84e-b4c62a362707",
  "dice_id": "ad4eb941068c7d64194b5d825cd5eb7f",
  "title": "Senior Python Data Scraping Engineer (Freelance)",
  "company": "MindLift",
  "company_id": "90934409",
  "company_profile_id": "21144ab4-6efc-4e75-9ba3-2cc18cee5434",
  "company_url": "https://www.dice.com/company/90934409",
  "location": "Texas, USA",
  "state": "Texas",
  "state_code": "TX",
  "country_code": "US",
  "workplace_type": "remote",
  "is_remote": true,
  "employment_type": "Part-time",
  "employer_type": "Direct Hire",
  "easy_apply": false,
  "visa_sponsorship": false,
  "work_from_home": false,
  "posted_at": "2026-10-04T21:08:20Z",
  "first_active_at": "2026-10-04T21:08:20Z",
  "updated_at": "2026-10-05T20:50:41Z",
  "salary_text": "USD 45.00 per hour",
  "salary_min": 45,
  "salary_max": 45,
  "salary_currency": "USD",
  "salary_period": "hour",
  "description_short": "Mindrift is looking for highly skilled Vibecode specialists to join the Tendem project ( and drive specialized data scraping workflows for real-world...",
  "job_url": "https://www.dice.com/job-detail/45eb9d69-9cda-4009-a84e-b4c62a362707",
  "search_keyword": "python developer",
  "search_rank": 38,
  "scraped_at": "2026-10-05T21:56:08.594Z"
}
```

**With `includeDescription` on** (search "java developer" in Chicago, IL; description and skills trimmed):

```json
{
  "job_id": "4dee7cfa-a740-4f67-b39d-51a551eb1fbe",
  "dice_id": "239c4ed595e2a662384beeac99c52e35",
  "title": "Lead JAVA AI Software Engineer",
  "company": "Medinext Global LLC",
  "company_id": "91173643",
  "company_profile_id": "c714162a-437f-479d-933d-b3a05786f4c5",
  "company_url": "https://www.dice.com/company/91173643",
  "location": "Chicago, Illinois, USA",
  "city": "Chicago",
  "state": "Illinois",
  "state_code": "IL",
  "country_code": "US",
  "workplace_type": "onsite",
  "is_remote": false,
  "employment_type": "Contract",
  "employer_type": "Direct Hire",
  "easy_apply": true,
  "visa_sponsorship": false,
  "work_from_home": false,
  "posted_at": "2026-09-24T15:59:20Z",
  "first_active_at": "2026-09-24T15:59:20Z",
  "updated_at": "2026-09-24T15:59:20Z",
  "salary_text": "Depends on Experience",
  "description_short": "Position Title : Lead JAVA AI Software Engineer Job Location: Chicago, IL Work Model: Hybrid Job Duration: 12 Months Required Education/Experience:...",
  "job_url": "https://www.dice.com/job-detail/4dee7cfa-a740-4f67-b39d-51a551eb1fbe",
  "search_keyword": "java developer",
  "search_location": "Chicago, IL",
  "search_rank": 18,
  "scraped_at": "2026-10-05T21:56:17.125Z",
  "description": "Position Title : Lead JAVA AI Software Engineer Job Location: Chicago, IL Work Model: Hybrid Job Duration: 12 Months Required Education/Experience: Bachelor's and/or Master's Degree in computer science, computer...",
  "skills": [
    "Amazon Web Services",
    "API",
    "Artificial Intelligence",
    "Autogen",
    "Cloud Computing",
    "Continuous Improvement",
    "Docker",
    "DevOps"
  ],
  "valid_through": "2026-10-25T15:59:20.000Z",
  "postal_code": "60602",
  "apply_type": "internal"
}
```

### Pricing

Pay per event: you pay for the job rows you receive, plus a flat $0.005 per run, whatever memory you choose.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `job-scraped` | Once per job row stored in your dataset | $0.55 per 1,000 | $0.55 per 1,000 | $0.55 per 1,000 | $0.55 per 1,000 |
| `run-start` | Once per run, when it starts | $0.005 | $0.005 | $0.005 | $0.005 |

Free plan runs return up to 10 results each; paid plans have no cap.

The price per single job is the price per 1,000 divided by 1,000. A job with the full description costs the same as one without.

Never charged:

- search pages Dice refused, and searches the run could not read;
- searches with no results;
- a job already delivered earlier in the same run (found by another keyword or location, or listed twice while the results shifted);
- with `onlyNewJobs`, jobs an earlier run already delivered;
- the info row at the end of a run;
- anything past your "Max cost per run": the actor stops delivering when your limit is reached instead of sending rows for free.

### FAQ

#### What do I get on the free plan?

On Apify's free plan every run returns the first 10 results as a preview, so you can check the data and the fields before you pay. A paid Apify plan returns every result with no cap, at the prices in the table above.

#### What exactly does this actor read?

The public job search of Dice.com, the US job board for technology roles, through the same search service the Dice website calls for every visitor, and, with `includeDescription`, each job's public page. Nothing behind a login is read.

#### How many jobs can I get?

Up to 10,000 per search (one keyword in one location), 100 per page. Dice itself serves only the first 10,000 results of a search, so for more, split the search: add keywords, add locations, or narrow it with the filters. Each split is its own search of up to 10,000.

#### How long does a run take?

Without descriptions, one request brings up to 100 jobs: 400 jobs from 2 searches took 7.4 seconds in our final test, and 2,000 jobs from one search took 32 seconds. With descriptions each job needs one more request, six at a time: 60 jobs took 22.8 seconds.

#### How fresh is the data?

Every run reads Dice live. `posted_at` is when the job was posted or last reposted, `first_active_at` when it first went live and `updated_at` when the listing last changed. Use `sortBy: "newest"` with `postedWithin` and a schedule for new jobs.

#### How is the salary read?

`salary_text` is the pay exactly as the employer typed it. When it holds an amount, the actor fills `salary_min` and `salary_max` (the same value for a single rate, only `salary_max` for "Up to"), `salary_currency` (USD unless the text names another currency) and `salary_period` from words such as "per year", "hourly" or "per month". When the text has no period, amounts of 10,000 or more are read as yearly and amounts under 500 as hourly, which is how Dice employers write them. Text without an amount, such as "Depends on Experience", gives only `salary_text`.

#### What do "third party" and "employer type" mean?

Third party is Dice's employment type for contracts open to corp to corp (C2C) arrangements or staffing firms. Employer type tells you who posted the job: the hiring company itself (Direct Hire), a recruiter or staffing agency (Recruiter), or other.

#### How wide is a location?

Dice reads the place you type (a city, a state or a ZIP code) and returns jobs within `radius` miles of it, 30 by default. The run summary shows how Dice read each location, for example `Austin, TX, USA`. Each row's `city`, `state` and `location` tell you where the job really is.

#### Do I need an account, cookies or a proxy?

No account, no cookies and nothing to set up. The actor uses the same public search the Dice website uses, including the access key Dice's own page gives every visitor, over Apify's datacenter proxy. If Dice changes that key, the actor reads the new one from Dice's public page and carries on. In our tests every request was answered on the first try, with no bot check.

#### What if a job is taken down while the run reads it?

The row is still delivered with everything from the search, and `description_error` says the job page could not be read. In our description test 59 of 60 pages were read; the one job had been taken down. Jobs that send you to apply on the employer's site have no Dice page; their row says so in `description_error`.

#### Can I monitor new jobs over time?

Yes. Turn on `onlyNewJobs`, set `sortBy` to `newest`, save the input as a task and add a schedule. Each run skips the jobs earlier runs delivered and stops once it reaches 20 jobs in a row it has seen before. In our test the first run delivered 120 jobs and the second, minutes later, found 0 new ones and charged 0.

#### Which formats can I download?

JSON, CSV, Excel, XML, RSS and an HTML table, from the run's dataset in Console or through the API.

#### Can I use it from Claude, ChatGPT or Cursor (MCP)?

- Connector URL: https://mcp.apify.com/?tools=themineworks/dice-jobs-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http dice-jobs-scraper "https://mcp.apify.com/?tools=themineworks/dice-jobs-scraper"`

#### Is it legal to scrape Dice?

The actor reads only job listings that Dice shows publicly to anyone without signing in, and its rows have no contact fields. Some descriptions name a contact person or an email address the employer wrote into the ad; you are responsible for how you use the data, for Dice's terms, and for data protection law such as GDPR and CCPA. If in doubt, ask a lawyer about your use case.

### Integrations

- **Google Sheets**: send each run's rows to a sheet with Apify's Google Sheets integration, or import the CSV link of the dataset.
- **Make, Zapier and n8n**: start the actor and read its dataset with the Apify apps and nodes, for example "new remote contract jobs to Slack".
- **Webhooks**: have Apify call your URL when a run succeeds, then fetch the dataset.
- **API and SDKs**: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

### More from The Mine Works

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Shine.com Jobs Scraper](https://apify.com/themineworks/shine-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Internshala Scraper](https://apify.com/themineworks/internshala-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Indeed Jobs Scraper](https://apify.com/themineworks/indeed-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instahyre Jobs Scraper](https://apify.com/themineworks/instahyre-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Apna Jobs Scraper](https://apify.com/themineworks/apna-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CutShort Jobs Scraper](https://apify.com/themineworks/cutshort-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Jobs Scraper](https://apify.com/themineworks/linkedin-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Recruiting & Jobs MCP](https://apify.com/themineworks/recruiting-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a search that should return jobs and does not? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For another job site, a new source or a field you need, email dmineworks@gmail.com.

*Search Dice by keyword, city and every filter the site offers, and get each US tech job back as a clean row with its pay read into numbers.*

# Actor input Schema

## `keywords` (type: `array`):

Job titles, skills or companies to search for, one per line, for example "python developer", "devops" or "data engineer". Each keyword is its own search in every location. Leave the list empty to get every job that matches the filters.

## `locations` (type: `array`):

Optional. US cities, states or ZIP codes as you would type them on Dice, one per line, for example "Austin, TX", "New York, NY" or "Seattle". Each keyword is searched in each location. Leave empty for the whole United States. For remote jobs, leave this empty and choose Remote below.

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

How far from each location to search, in miles. Ignored when no location is given.

## `workplaceTypes` (type: `array`):

Only jobs with one of these workplace types, as the employer listed it. Leave empty for all.

## `employmentTypes` (type: `array`):

Only jobs of these types. Third party means a contract that allows corp to corp (C2C) or a staffing firm. Leave empty for all.

## `postedWithin` (type: `string`):

Only jobs posted (or reposted) within this window.

## `employerTypes` (type: `array`):

Only jobs posted by these kinds of employer: the hiring company itself, a recruiter or staffing agency, or other. Leave empty for all.

## `easyApplyOnly` (type: `boolean`):

Only jobs you can apply to on Dice with one click.

## `visaSponsorshipOnly` (type: `boolean`):

Only jobs whose employer marked them as willing to sponsor a work visa.

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

Best match first, or newest first. Use newest first for schedules and only new jobs.

## `maxJobs` (type: `integer`):

Most jobs delivered for each search (one keyword in one location). 20 to 10,000; Dice serves the first 10,000 results of a search, 100 per page. Also the most you pay for per search.

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

Adds the full description as plain text, the skills list, the closing date, the postal code and the apply type, read from each job's page. One extra request per job, so runs take longer. Every row always has a 500 character description_short.

## `onlyNewJobs` (type: `boolean`):

For schedules: skip jobs an earlier run of this actor in your account already delivered, so each run returns and charges only jobs that are new since. Works best with Newest first. The list of delivered jobs is kept in a named key value store in your account.

## Actor input object example

```json
{
  "keywords": [
    "software engineer"
  ],
  "locations": [],
  "radius": 30,
  "workplaceTypes": [],
  "employmentTypes": [],
  "postedWithin": "",
  "employerTypes": [],
  "easyApplyOnly": false,
  "visaSponsorshipOnly": false,
  "sortBy": "relevance",
  "maxJobs": 50,
  "includeDescription": false,
  "onlyNewJobs": false
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# 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 = {
    "keywords": [
        "software engineer"
    ],
    "locations": [],
    "radius": 30,
    "sortBy": "relevance",
    "maxJobs": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/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 = {
    "keywords": ["software engineer"],
    "locations": [],
    "radius": 30,
    "sortBy": "relevance",
    "maxJobs": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/dice-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "software engineer"
  ],
  "locations": [],
  "radius": 30,
  "sortBy": "relevance",
  "maxJobs": 50
}' |
apify call themineworks/dice-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/dice-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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