Dice Tech Jobs, Salary & Skills Scraper
Pricing
from $6.15 / 1,000 results
Dice Tech Jobs, Salary & Skills Scraper
Scrape Dice.com tech job postings in the United States by keyword and location. Extract job title, company, salary, skills, employment type, remote flag and full description. Export to JSON, CSV or Excel.
Pricing
from $6.15 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
0
Monthly active users
18 days ago
Last modified
Categories
Share
Dice Tech Jobs, Salary & Skills Scraper
Here is one real result, with every field the actor returns (the long description and descriptionHtml are trimmed here for readability; the actor returns the full text):
{"companyLogoUrl": "https://d3qscgr6xsioh.cloudfront.net/jLZGbw1aTAehDYuxFRDm_transformed.png?format=webp","title": "Python Developer - Remote","company": "Robert Half","location": "Brandon, Florida, USA","city": "Brandon","state": "Florida","country": "USA","remote": false,"workplaceType": null,"employmentType": "Full-time","employerType": "Recruiter","salary": "USD 80,000.00 - 120,000.00 per year","salaryMin": 80000,"salaryMax": 120000,"salaryCurrency": "USD","salaryPeriod": "YEAR","easyApply": true,"willingToSponsor": false,"postedAt": "2026-07-22T00:02:43Z","firstActiveAt": "2026-07-22T00:02:43Z","modifiedAt": "2026-08-10T12:05:59Z","summary": "Description Full Time Remote Python Developer opening now available. We are looking for an experienced Sr. Python/Flask Full Stack Software Engineer to create and enhance business-critical applications that support day-to-day operations in Brandon, Florida...","jobId": "cac8b0d5610486594bd531f55d96663f","guid": "de79a865-b4a3-4a9e-b550-74ee0db2e391","url": "https://www.dice.com/job-detail/de79a865-b4a3-4a9e-b550-74ee0db2e391","companyUrl": "https://www.dice.com/company/rhalfint","companyProfileUrl": "https://www.dice.com/company-profile/8c2cf2a7-dcd7-42dc-b8d4-2b90acef1688","description": "Description\n\n Full Time Remote Python Developer opening now available. \n\nWe are looking for an experienced Sr. Python/Flask Full Stack Software Engineer... [full text truncated for this README]","descriptionHtml": "<b>Description</b><br /><br /> Full Time Remote Python Developer opening now available... [full HTML truncated for this README]","skills": null,"validThrough": "2026-09-10T12:05:59.000Z","applicantLocation": "USA","observedAt": "2026-08-10T14:39:36.927Z","error": null}
The most complete Dice jobs scraper available. It returns every field the Dice job search exposes for a posting (title, company, location, workplace and employment type, salary min/max with period, posted and expiry dates, sponsor and easy-apply flags), adds the full description and required skills, and offers opt-in AI job summaries, AI skills/seniority extraction, AI salary estimates and contact enrichment so you can target exactly the tech roles you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches Dice for tech job postings by keyword and location, applies your filters (remote, posted date, employment type, radius, easy apply, willing to sponsor), and writes one normalized record per job to the run's dataset. Each record carries the title, company, location broken into city/state/country, workplace and employment type, salary text with parsed min/max/currency/period, posted, first-active, modified and expiry dates, employer type, and direct links to the job and company.
With withDetails on (the default), each posting is opened to add the full description (plain text and HTML), required skills, and the posting expiry date. Missing source values are returned as null, never invented. Optional paid AI add-ons attach a job summary, structured skills/technologies/seniority, and a salary estimate for jobs without a published salary; a contact-enrichment add-on can attempt a public employer email.
Quickstart
Open the actor, paste this into the input, and press Run. It returns 10 Python developer jobs with full details.
{"keyword": "python developer","location": "Remote","maxJobs": 10,"withDetails": true}
Only keyword is required. Leave location empty to search all of the United States.
Input reference
| Field | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
keyword | string | yes | (none) | Job search keyword. | devops engineer |
location | string | no | Remote | City or location to search in. Empty searches all of the US. | Austin, TX |
remote | boolean | no | false | Return only fully remote jobs. | true |
postedDate | enum | no | (any time) | Recency filter: ONE (today), THREE (3 days), SEVEN (7 days), or empty. | SEVEN |
employmentType | enum | no | (any) | FULLTIME, PARTTIME, CONTRACTS, THIRD_PARTY, or empty. | FULLTIME |
radius | integer | no | 30 | Radius in miles around the location. Applies only when a specific city/state is set. | 50 |
easyApply | boolean | no | false | Return only jobs that support Dice Easy Apply. | true |
willingToSponsor | boolean | no | false | Return only jobs whose employer indicates visa sponsorship. | true |
withDetails | boolean | no | true | Open each posting to add full description, skills, and expiry. | false |
maxJobs | integer | no | 10 | Maximum number of job postings to collect. | 50 |
withJdSummary | boolean | no | false | AI add-on. Add a 2-3 sentence plain-English job summary. Billed per summary produced. Paid plans only. | true |
withSkills | boolean | no | false | AI add-on. Extract required skills, technologies and seniority as tags. Billed per job tagged. Paid plans only. | true |
withSalaryEstimate | boolean | no | false | AI add-on. Estimate a salary range for jobs without a published salary. Billed per estimate. Paid plans only. | true |
enrichContacts | boolean | no | false | Paid add-on. Attempt a public business contact email and name for results without an email. | true |
enrichContactsMax | integer | no | 50 | Cap how many results the add-on tries to enrich. Free accounts capped at 3. | 20 |
Output reference
One dataset item per job. Types: string, number, integer, boolean, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
companyLogoUrl | string | Company logo image URL, or null. |
title | string | Job title. |
company | string | Employer / company name. |
location | string | Full location string. |
city | string | City parsed from the location. |
state | string | State parsed from the location. |
country | string | Country parsed from the location. |
remote | boolean | true when the job is fully remote. |
workplaceType | string | Workplace type when published, else null. |
employmentType | string | Employment type, for example Full-time. |
employerType | string | Employer type, for example Recruiter. |
salary | string | Salary text as published, or null. |
salaryMin | number | Parsed minimum salary, or null. |
salaryMax | number | Parsed maximum salary, or null. |
salaryCurrency | string | Salary currency, or null. |
salaryPeriod | string | Salary period, for example YEAR, or null. |
easyApply | boolean | true when Dice Easy Apply is supported. |
willingToSponsor | boolean | true when the employer indicates visa sponsorship. |
postedAt | string | ISO 8601 posted timestamp. |
firstActiveAt | string | ISO 8601 first-active timestamp. |
modifiedAt | string | ISO 8601 last-modified timestamp. |
summary | string | Short summary snippet of the description. |
jobId | string | Dice internal job ID. |
guid | string | Dice job GUID (used in the job URL). |
url | string | Job detail URL. |
companyUrl | string | Company page URL. |
companyProfileUrl | string | Company profile URL. |
description | string | Full plain-text description (with details on). |
descriptionHtml | string | Full HTML description (with details on). |
skills | string[] | Required skills listed on the posting (with details on), else null. |
validThrough | string | ISO 8601 posting expiry (with details on). |
applicantLocation | string | Eligible applicant location. |
aiJdSummary | string | AI job summary (opt-in), else absent. |
aiSkills | string[] | AI-extracted skills (opt-in), else absent. |
aiTechnologies | string[] | AI-extracted technologies/tools (opt-in), else absent. |
aiSeniority | string | AI seniority level (opt-in), else absent. |
aiSalaryEstimateMin | number | AI estimated minimum salary (opt-in), else absent. |
aiSalaryEstimateMax | number | AI estimated maximum salary (opt-in), else absent. |
aiSalaryEstimateCurrency | string | AI estimate currency (opt-in), else absent. |
aiSalaryEstimateBasis | string | AI estimate basis/period (opt-in), else absent. |
aiSalaryEstimateConfidence | string | AI estimate confidence (opt-in), else absent. |
enrichedEmail | string | Contact-enrichment email when found. |
enrichedContactName | string | Contact-enrichment person name when found. |
enrichedJobTitle | string | Contact-enrichment job title when found. |
enrichedEmailStatus | string | Deliverability status of the enriched email. |
enrichedSource | string | Source URL the enriched contact was found on. |
enrichedConfidence | number | Confidence score of the enriched contact. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | Present only on a failed item; carries the failure reason. |
Example output record
Real record from a live run (input {"keyword": "python developer", "location": "Remote", "maxJobs": 10, "withDetails": true}), with long text fields trimmed for brevity:
{"title": "Python Developer - Remote","company": "Robert Half","location": "Brandon, Florida, USA","city": "Brandon","state": "Florida","country": "USA","remote": false,"employmentType": "Full-time","employerType": "Recruiter","salary": "USD 80,000.00 - 120,000.00 per year","salaryMin": 80000,"salaryMax": 120000,"salaryCurrency": "USD","salaryPeriod": "YEAR","easyApply": true,"willingToSponsor": false,"postedAt": "2026-07-22T00:02:43Z","modifiedAt": "2026-08-10T12:05:59Z","jobId": "cac8b0d5610486594bd531f55d96663f","guid": "de79a865-b4a3-4a9e-b550-74ee0db2e391","url": "https://www.dice.com/job-detail/de79a865-b4a3-4a9e-b550-74ee0db2e391","companyUrl": "https://www.dice.com/company/rhalfint","skills": null,"validThrough": "2026-09-10T12:05:59.000Z","applicantLocation": "USA","observedAt": "2026-08-10T14:39:36.927Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~dice-jobs-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"keyword":"python developer","location":"Remote","maxJobs":10,"withDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~dice-jobs-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"keyword":"data scientist","location":"Austin, TX","employmentType":"FULLTIME","maxJobs":100}'
Apify CLI:
apify call scrapers_lat/dice-jobs-scraper \--input '{"keyword":"devops engineer","remote":true,"maxJobs":25}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per job record returned (
resultevent). See the pricing tab for the current per-result price. - Details and AI add-ons are billed separately. Detail enrichment, AI summary, AI skills, AI salary estimate, and contact enrichment each charge only when they return usable output and only when enabled.
- No charge on failure. If a run errors, the actor writes an item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 jobs per run, and contact enrichment is capped at 3 attempts. AI add-ons are paid plans only. Upgrade for higher limits.
FAQ and troubleshooting
A run returned 0 jobs. Why?
The keyword plus filters matched nothing. Loosen filters (remove postedDate or employmentType, widen radius, or clear location). Zero-result runs are not charged.
Why is salary null?
Many Dice postings do not publish a salary. Enable withSalaryEstimate to attach an AI market estimate from the title, location, and description.
Why is skills null?
Skills come from the detail page. Turn on withDetails (the default). Some postings still do not list structured skills; enable withSkills for AI-extracted tags.
How do I find visa-sponsoring roles?
Set willingToSponsor to true to return only jobs whose employer indicates sponsorship.
Is this an official Dice tool? No. This actor is independent and has no affiliation with Dice. It reads only data that is publicly available on the job board. Use it in accordance with the source's terms.
Related scrapers
- Indeed Jobs Scraper: Job postings from Indeed.
- LinkedIn Jobs Scraper: Job postings from LinkedIn.
- Greenhouse Jobs Scraper: Jobs from Greenhouse-hosted boards.
- Lever Jobs Scraper: Jobs from Lever-hosted boards.
- RemoteOK Scraper: Remote tech job listings.
- Company Hiring Signal Scraper: Hiring signals from job boards.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Dice. Accesses only publicly available job board data. Use in accordance with the source's terms of service.
