Dice.com Tech Jobs Scraper
Pricing
from $1.00 / 1,000 results
Dice.com Tech Jobs Scraper
Scrape US tech jobs from Dice.com with titles, companies, salaries, skills, descriptions, and remote-work flags. HTTP-only, no login required.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(5)
Developer
Crawler Bros
Actor stats
6
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape US tech jobs from Dice.com — titles, companies, salaries, skills, descriptions, and remote-work flags. Parses JobPosting JSON-LD on each /job-detail/<uuid> page. HTTP-only; no login, no cookies required.
Output (per job)
type=job_diceid,url,positionId(Dice internal ID from__NEXT_DATA__)title,jobTitleOverride(Dice-side override, when present)company,companyUrl,companyLogo,companyIdentifierhiringOrganizationUrl— from JSON-LDhiringOrganization.urllocation—{city, state, postalCode, country}applicantCountry— required applicant country (applicantLocationRequirements.name)jobLocationType—TELECOMMUTE/ONSITE(JSON-LD)salary/salaryDetails(min, max, currency, unit — when published)salaryUnit—HOUR/DAY/WEEK/MONTH/YEARemploymentType—FULL_TIME,PART_TIME,CONTRACTS,THIRD_PARTYemploymentDetail— extra employment metadata (Dice inline state)postedAt,datePosted(raw JSON-LD string),datePostedLocalapplyBefore,validThroughoccupationalCategory,industryeducationRequirements,experienceRequirements,experienceMonthsqualifications,responsibilities,jobBenefits,specialCommitmentsincentives— e.g. "Sign-on bonus", "401k match" (from inline state)totalJobOpenings— number of openings (when published)descriptionHtml,descriptionTextskills(array)isRemote,easyApply(when signaled on page)directApply— from JSON-LDdirectApplywhen presentscrapedAt
If no jobs match, a single job_dice_blocked sentinel record is emitted so runs exit 0.
Input
| Field | Type | Description |
|---|---|---|
startUrls | string[] | Dice search or /job-detail/<uuid> URLs. Prefill: https://www.dice.com/jobs?q=python. |
searchTerm | string | Used when no startUrls — builds https://www.dice.com/jobs?q=<term>. |
location | string | City / ZIP added as location query param. |
employmentType | enum | any / FULL_TIME / PART_TIME / CONTRACTS / THIRD_PARTY — applied client-side. |
workType | enum | any / remote / hybrid / on-site — matched against title + description. |
maxItems | integer | Max jobs per run. Default 3. |
salaryMin | integer | Minimum salary — matched against JSON-LD baseSalary.value.minValue. |
datePostedDays | integer | Only include jobs posted within the last N days (from JSON-LD datePosted). |
includeKeywords | string[] | Title/description must contain at least one of these (case-insensitive). |
excludeKeywords | string[] | Drop jobs whose title/description contains any of these (case-insensitive). |
proxyConfiguration | object | Apify proxy (datacenter by default). |
How it works
- For each
startUrlsentry, classify as search page or direct/job-detail/URL. - Search pages: extract every
/job-detail/<uuid>href. - For each job URL, fetch detail page and parse
JobPostingJSON-LD (title, company, salary, location, description). Apply client-sideemploymentType/workTypefilters. - Rotate Apify-proxy session per retry on 403 / 429 / 5xx.
FAQ
Do I need a proxy? The default Apify proxy is enabled to avoid 403s on detail pages. Free datacenter proxy is sufficient. Why a sentinel record? When the search has no matches or the provided URL 404s, the actor still emits one record so downstream pipelines never see an empty output.