Dice Tech Jobs Scraper — IT Jobs, Salary & Remote API
DeprecatedPricing
Pay per usage
Dice Tech Jobs Scraper — IT Jobs, Salary & Remote API
DeprecatedCollect Dice job postings through the public search API. Get normalized records with title, location, salary, remote type and sponsorship. Run with searchQueries; no buyer API key or Dice login is needed. Pricing: check current rates.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
13
Total users
5
Monthly active users
4 days ago
Last modified
Categories
Features
Share
Dice Tech Jobs Scraper
Extract normalized Dice.com tech job postings through its public search API without a buyer API key or login. Use the dataset for recruiting, salary benchmarking, job aggregators and US tech job boards.
- Get normalized rows with employer, location, employment and application fields, one per Dice job match.
- Benchmark salary, seniority and remote-work classifications.
- Filter for remote work, Easy Apply or indicated visa sponsorship.
- Build searchable tech job boards from Dice listings.
What you get
One normalized dataset row is produced for each pushed Dice job. String fields are null when Dice does not provide the value; boolean fields are false when their source flag is absent, and warnings is empty when no warnings are created.
| Field | Type | Description |
|---|---|---|
job_id | string | Dice identifier; null if absent. |
title | string | Job title; null if absent. |
company | string | Company name; null if absent. |
location | string | Full location; null if unavailable. |
city, state, country | string | Location components; each can be null. |
remote_type | string | remote, hybrid, onsite, or null; inferred from Dice data and text. |
seniority | string | Inferred level such as executive, vp, director, manager, principal, staff, lead, senior, intern, entry or mid; null for a blank title. |
salary | string | Cleaned salary; non-salary values and missing salaries become null. |
salary_raw | string | Cleaned source value before normalization; null if absent. |
employment_type | string | Dice employment type, such as Contract; null if absent. |
employer_type | string | Such as Direct Hire or Recruiter; null if absent. |
easy_apply | boolean | Whether Dice Easy Apply is enabled. |
willing_to_sponsor | boolean | Whether the employer indicates visa-sponsorship willingness. |
posted_at | ISO 8601 string | Posting or first active date; null if unavailable. |
url | string | Dice job URL; null if no detail URL or GUID exists. |
summary | string | Search-result teaser of approximately 500 characters; null if absent. |
global_id | string | dice:<job_id> when an ID or GUID exists; otherwise null. |
parse_confidence | number | Always-present score from 0.0 to 1.0. |
warnings | array of strings | Data-quality warning codes; empty when none are created. |
scraped_at | ISO 8601 string | UTC run timestamp; null if none is supplied. |
Sample output
The shortened sample below omits city, state, country, salary_raw, warnings, and scraped_at.
{"job_id": "07c59d74a6ae4e1eb0ac6a0f7182356b", "title": "Python Developer","company": "Dexian DISYS", "location": "Washington, District of Columbia, USA","remote_type": "onsite", "seniority": "mid", "salary": null,"employment_type": "Contract", "employer_type": "Recruiter","easy_apply": true, "willing_to_sponsor": false,"posted_at": "2026-10-27T00:16:28+00:00","url": "https://www.dice.com/job-detail/c79b5366-3e4e-414f-ab05-6a6a7726ea5f","summary": "This role requires 5 days on site in downtown Washington, DC. Seeking a technically strong candidate with a solid understanding of the full application development lifecycle, from development through production, who can clearly articulate their hands-on experience and bring innovative ideas to the team. Position Summary: Design, develop, enhance, and support modular Python services and REST APIs. Translate validated building science formulas, rules, assumptions, and dependency flows into accur","global_id": "dice:07c59d74a6ae4e1eb0ac6a0f7182356b","parse_confidence": 1}
Pricing
This Actor uses pay-per-event billing. The primary job-result event represents one Dice tech or IT job with title, company, salary, seniority, remote type, sponsorship and apply URL.
| Plan | job-result price per event |
|---|---|
| Free plan | $0.000900 |
| Bronze plan | $0.000891 |
| Silver plan | $0.000882 |
| Gold plan | $0.000873 |
| Platinum plan | $0.000864 |
| Diamond plan | $0.000855 |
Two additional charge events are listed:
| Charge event | Free plan price per event | When it applies |
|---|---|---|
salary-disclosed | $0.000900 | The job record includes a disclosed salary. |
sponsor-filter | $0.000900 | The sponsorship filter is enabled for pushed rows. |
job-result is charged for each pushed job. salary-disclosed applies when normalized salary is not null. sponsor-filter applies when willingToSponsorOnly is enabled.
1,000 results with no disclosed salaries and willingToSponsorOnly disabled = $0.90 on the Free plan.
10,000 results with no disclosed salaries and willingToSponsorOnly disabled = $9.00 on the Free plan.
The Apify Free plan includes $5 of monthly platform usage credit. At the Free-plan job-result price, that credit covers 5,555 job-result events before additional priced events.
You pay only for the events listed above. This Actor does not use the Pay per event + usage option, so compute, proxy traffic and storage are not billed separately.
How to use
- Enter one or more keyword strings in
searchQueries. - Add an optional
locationandcountryCode. - Choose API filters such as
sort,workFromHome,employmentTypeandpostedDate. - Set post-fetch filters such as
remoteOnly,easyApplyOnly,willingToSponsorOnly,titleKeywordorlocationKeyword. - Run the Actor and review the dataset; each query runs independently.
- Schedule repeated runs through Apify Schedules, starting with daily runs for a job-listing workflow.
Example input:
{"searchQueries": ["python developer", "data engineer"],"location": "San Francisco, CA","maxItems": 200,"sort": "relevance","workFromHome": false,"employmentType": "CONTRACTS","postedDate": "ONE_WEEK","remoteOnly": false,"easyApplyOnly": false,"willingToSponsorOnly": false}
The default proxy group is Apify RESIDENTIAL through proxyConfiguration. No buyer proxy credentials, Dice login or API key are required. Export the dataset as JSON or CSV, or read it through the Apify dataset API.
Input parameters
| Parameter | What it does | Default |
|---|---|---|
searchQueries | Keyword queries run independently and combined. | No value; provide one or more. |
location | Dice location filter; blank keeps US-wide results. | Blank |
countryCode | Two-letter country code. | US |
maxItems | Maximum jobs, divided equally across queries (maxItems ÷ number of queries per query). 0 means no cap. A value smaller than the number of queries also disables the cap, so keep it at least as large as the number of queries. | 100 |
sort | relevance or newest first with date. | relevance |
workFromHome | API filter for Dice work-from-home jobs. | false |
employmentType | FULLTIME, PARTTIME, CONTRACTS or THIRD_PARTY; blank keeps all. | Blank |
postedDate | ONE_DAY, THREE_DAYS, ONE_WEEK, TWO_WEEKS or ONE_MONTH; blank keeps all. | Blank |
titleKeyword | Case-insensitive post-fetch title substring filter. | Blank |
locationKeyword | Case-insensitive post-fetch location substring filter. | Blank |
remoteOnly | Keeps normalized remote_type equal to remote. | false |
easyApplyOnly | Keeps jobs with Dice Easy Apply enabled. | false |
willingToSponsorOnly | Keeps jobs where the employer indicates visa sponsorship willingness. | false |
proxyConfiguration | Configures the Apify proxy used for requests. | Apify RESIDENTIAL group |
disableUsageStats | Disables the run summary described in Usage statistics. | false |
Limits and edge cases
| Condition | What you see | What to do |
|---|---|---|
searchQueries is empty or absent | The Actor logs no queries, writes error: "no_queries" to the run OUTPUT, and produces no dataset rows. | Add one or more non-empty queries. |
| A query returns no jobs | It is logged with zero results and added to failedQueries with no_results; no result charge is created. | Broaden the query or relax location or date filters. |
| A query encounters a fetch or HTTP error | It is added to failedQueries; other queries continue and earlier rows remain. | Review the run output and retry. |
| Post-fetch filters exclude rows | Fewer rows may be pushed than the API returned; charges apply to pushed rows. | Increase maxItems or relax filters. |
| Salary is not disclosed or is a normalized non-salary value | salary is null; the cleaned value may remain in salary_raw. | Inspect salary_raw. |
| Remote-work signals are absent or inconclusive | remote_type can be null; otherwise it is inferred from Dice fields and text. | Treat it as a classification and use remoteOnly for strict remote rows. |
maxItems is divided across queries | Each query gets maxItems ÷ number of queries. If maxItems is smaller than the number of queries, the per-query cap becomes 0 and the cap is disabled. | Keep maxItems at least as large as the number of queries. |
| Several queries match the same job | Deduplication is per query only, so a job matched by several queries is pushed and charged once for each match. | Use distinct, non-overlapping queries. |
| Full job descriptions are needed | Full job descriptions are not available; search results provide only a teaser in summary, and the detail API requires authentication and is not used. | Use the summary and the job url. |
FAQ
How much does it cost to scrape Dice tech jobs?
See the plan-labelled event prices in Pricing. On the Free plan, 1,000 results with no disclosed salaries and sponsorship filtering disabled cost $0.90.
What happens if a Dice query returns zero results?
The Actor logs 0 results, adds the query to failedQueries with no_results, and continues. No result charge is created for that query.
What should I do if a query is not working?
Check the run output for failedQueries, then retry with a broader keyword, different location or fewer filters. A query-level fetch error does not stop other queries.
Is using public Dice data legal for my use case?
The Actor extracts public search results from Dice.com through its public search API. Source terms and applicable law depend on your use case, so review the relevant terms and laws before using the data; this Actor does not provide a legal guarantee.
Related actors
- Google Jobs Scraper — related job-posting extraction with multi-board apply links.
- Jobstreet Jobs Scraper — related job listings for Southeast Asian markets.
- Seek Jobs Scraper — related Australia and New Zealand job listings with salary data.
Usage statistics
This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.
A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.
To opt out, set disableUsageStats to true in the input. Nothing is sent then.