# Dice US Tech Extractor (`kawsar/dice-us-tech-extractor`) Actor

Dice.com scraper that collects tech job listings by keyword search. Gives you job title, company, location, employment type, posting date, and direct apply URL for each result, with automatic pagination across multiple pages.

- **URL**: https://apify.com/kawsar/dice-us-tech-extractor.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (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 $3.99 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

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

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

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

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


# README

## Dice US Tech Extractor: scrape US tech job listings from Dice.com by keyword

Dice US Tech Extractor scrapes job listings from Dice.com by keyword and location. Each result includes the job title, company name, location, employment type, posting date, and a direct link to the listing. It pages through results automatically. Search multiple keywords at once if you need wider coverage.

### What data does this actor extract?

Each job listing returns 14 fields:

| Field | Type | Description |
|-------|------|-------------|
| `jobId` | string | Internal Dice job ID (short hash) |
| `jobGuid` | string | Job GUID used in the listing URL |
| `jobTitle` | string | Full job title as shown on Dice.com |
| `companyName` | string | Hiring company name |
| `companyLogoUrl` | string | Company logo image URL |
| `companyProfileUrl` | string | Company profile page on Dice.com |
| `location` | string | Job location, e.g. "Salt Lake City, Utah" or "Remote" |
| `postedDate` | string | When the job was posted, e.g. "Today", "3 days ago" |
| `jobUrl` | string | Direct URL to the job detail page |
| `descriptionSnippet` | string | Short preview shown on the search result card |
| `employmentType` | string | e.g. "Full-time", "Contract", "Part-time" |
| `isSponsored` | boolean | True if the listing has a Sponsored badge |
| `searchQuery` | string | The keyword that returned this listing |
| `scrapedAt` | string | UTC timestamp of when the record was collected |

### How to use it

1. Enter one or more search terms in the Search keywords field (e.g. `software engineer`, `python developer`).
2. Set Location to `United States` for a nationwide search, or a specific city or state.
3. Adjust Max pages and Max items to control how many results you collect.
4. Run the actor. Results appear in the dataset as they come in.

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchKeywords` | array | required | One or more search terms to run on Dice.com |
| `location` | string | `United States` | Location string for the search |
| `countryCode` | string | `US` | ISO country code |
| `locationPrecision` | string | `Country` | How broadly to interpret the location: Country, State, or City |
| `latitude` | string | `38.7945952` | Geo-center latitude (default: continental US center) |
| `longitude` | string | `-106.5348379` | Geo-center longitude |
| `maxPages` | integer | `5` | Pages to fetch per keyword, max 25 (about 20 jobs per page) |
| `maxItems` | integer | `100` | Total listings to collect across all keywords |
| `requestTimeoutSecs` | integer | `30` | Per-request timeout in seconds |

### Example input

```json
{
  "searchKeywords": ["software engineer", "python developer"],
  "location": "United States",
  "locationPrecision": "Country",
  "maxPages": 3,
  "maxItems": 100
}
````

### Example output

```json
{
  "jobId": "40ece8ad15f1f338c2307d8d2862bda4",
  "jobGuid": "324d3163-8e9d-43c5-8fb2-26e22a3dd40f",
  "jobTitle": "Software Engineer - Angular",
  "companyName": "Zions Bancorporation, N.A.",
  "companyLogoUrl": "https://d3qscgr6xsioh.cloudfront.net/exNPtJrFREaMCJIc4ISf_transformed.png",
  "companyProfileUrl": "https://www.dice.com/company-profile/3981d58e-3b73-5ffa-9705-540d71afeed2",
  "location": "Salt Lake City, Utah",
  "postedDate": "Today",
  "jobUrl": "https://www.dice.com/job-detail/324d3163-8e9d-43c5-8fb2-26e22a3dd40f",
  "descriptionSnippet": "Zions Bancorporation has an opportunity for a Software Engineer with Java, Angular/JavaScript experience...",
  "employmentType": "Full-time",
  "isSponsored": true,
  "searchQuery": "software engineer",
  "scrapedAt": "2026-05-19T10:32:14.501234+00:00"
}
```

### Use cases

Recruiters use it to pull open roles by keyword and spot which companies are actively hiring for specific stacks. Analysts use it to track compensation trends and employment type breakdowns across tech roles. It also works for building a custom job feed by combining Dice results with other sources, or for scheduling regular runs to watch how the US tech job market shifts over time.

### FAQ

**How many jobs can this actor collect per run?**
Up to 500. Each keyword fetches up to 25 pages of about 20 results each. Multiple keywords run sequentially in the same pass.

**Does it collect the full job description?**
No. It collects the short preview shown on the search result card (2-3 sentences). To get the full description, follow each `jobUrl` separately.

**Can I search by specific city or state?**
Yes. Set `location` to the city or state (e.g. `Austin, Texas`) and `locationPrecision` to `City` or `State`.

**What does the Sponsored field mean?**
Dice marks some listings as Sponsored when the employer has paid for promoted placement. Use `isSponsored: false` in your filter if you want only organic results.

**Can I run multiple keywords at once?**
Yes. Add multiple items to `searchKeywords` and the actor runs each one in sequence, stopping when `maxItems` is reached.

**What happens if a page returns no results?**
The actor stops paginating for that keyword and moves to the next one. It will not error out on an empty page.

# Actor input Schema

## `searchKeywords` (type: `array`):

One or more job search terms. Each keyword runs a separate search on Dice.com (e.g. 'software engineer', 'python developer', 'devops engineer').

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

Location to search within. Use 'United States' for a nationwide search or a specific city or state.

## `countryCode` (type: `string`):

ISO 3166-1 alpha-2 country code for the search location.

## `locationPrecision` (type: `string`):

How broadly to interpret the location when filtering results.

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

Maximum number of job listings to collect per search keyword. Each keyword resets this counter.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout in seconds. Increase if you see timeout errors on slow connections.

## Actor input object example

```json
{
  "searchKeywords": [
    "software engineer",
    "python developer"
  ],
  "location": "United States",
  "countryCode": "US",
  "locationPrecision": "Country",
  "maxItems": 20,
  "requestTimeoutSecs": 300
}
```

# 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 = {
    "searchKeywords": [
        "software engineer"
    ],
    "location": "United States",
    "countryCode": "US",
    "locationPrecision": "Country"
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/dice-us-tech-extractor").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 = {
    "searchKeywords": ["software engineer"],
    "location": "United States",
    "countryCode": "US",
    "locationPrecision": "Country",
}

# Run the Actor and wait for it to finish
run = client.actor("kawsar/dice-us-tech-extractor").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 '{
  "searchKeywords": [
    "software engineer"
  ],
  "location": "United States",
  "countryCode": "US",
  "locationPrecision": "Country"
}' |
apify call kawsar/dice-us-tech-extractor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Dice US Tech Extractor",
        "description": "Dice.com scraper that collects tech job listings by keyword search. Gives you job title, company, location, employment type, posting date, and direct apply URL for each result, with automatic pagination across multiple pages.",
        "version": "0.0",
        "x-build-id": "uYK1B2HdzNCbb90cx"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kawsar~dice-us-tech-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kawsar-dice-us-tech-extractor",
                "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/kawsar~dice-us-tech-extractor/runs": {
            "post": {
                "operationId": "runs-sync-kawsar-dice-us-tech-extractor",
                "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/kawsar~dice-us-tech-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-kawsar-dice-us-tech-extractor",
                "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",
                "required": [
                    "searchKeywords"
                ],
                "properties": {
                    "searchKeywords": {
                        "title": "Search keywords",
                        "type": "array",
                        "description": "One or more job search terms. Each keyword runs a separate search on Dice.com (e.g. 'software engineer', 'python developer', 'devops engineer').",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Location to search within. Use 'United States' for a nationwide search or a specific city or state.",
                        "default": "United States"
                    },
                    "countryCode": {
                        "title": "Country code",
                        "type": "string",
                        "description": "ISO 3166-1 alpha-2 country code for the search location.",
                        "default": "US"
                    },
                    "locationPrecision": {
                        "title": "Location precision",
                        "enum": [
                            "Country",
                            "State",
                            "City"
                        ],
                        "type": "string",
                        "description": "How broadly to interpret the location when filtering results.",
                        "default": "Country"
                    },
                    "maxItems": {
                        "title": "Max items per keyword",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of job listings to collect per search keyword. Each keyword resets this counter.",
                        "default": 20
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout (seconds)",
                        "minimum": 5,
                        "maximum": 1020,
                        "type": "integer",
                        "description": "Per-request timeout in seconds. Increase if you see timeout errors on slow connections.",
                        "default": 300
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
