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
0.0
(0)
Developer
Actor stats
0
Bookmarked
8
Total users
2
Monthly active users
2 months 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.
