Dice.com Tech Jobs Scraper avatar

Dice.com Tech Jobs Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Dice.com Tech Jobs Scraper

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

Crawler Bros

Maintained by Community

Actor stats

6

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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_dice
  • id, url, positionId (Dice internal ID from __NEXT_DATA__)
  • title, jobTitleOverride (Dice-side override, when present)
  • company, companyUrl, companyLogo, companyIdentifier
  • hiringOrganizationUrl — from JSON-LD hiringOrganization.url
  • location{city, state, postalCode, country}
  • applicantCountry — required applicant country (applicantLocationRequirements.name)
  • jobLocationTypeTELECOMMUTE / ONSITE (JSON-LD)
  • salary / salaryDetails (min, max, currency, unit — when published)
  • salaryUnitHOUR / DAY / WEEK / MONTH / YEAR
  • employmentTypeFULL_TIME, PART_TIME, CONTRACTS, THIRD_PARTY
  • employmentDetail — extra employment metadata (Dice inline state)
  • postedAt, datePosted (raw JSON-LD string), datePostedLocal
  • applyBefore, validThrough
  • occupationalCategory, industry
  • educationRequirements, experienceRequirements, experienceMonths
  • qualifications, responsibilities, jobBenefits, specialCommitments
  • incentives — e.g. "Sign-on bonus", "401k match" (from inline state)
  • totalJobOpenings — number of openings (when published)
  • descriptionHtml, descriptionText
  • skills (array)
  • isRemote, easyApply (when signaled on page)
  • directApply — from JSON-LD directApply when present
  • scrapedAt

If no jobs match, a single job_dice_blocked sentinel record is emitted so runs exit 0.

Input

FieldTypeDescription
startUrlsstring[]Dice search or /job-detail/<uuid> URLs. Prefill: https://www.dice.com/jobs?q=python.
searchTermstringUsed when no startUrls — builds https://www.dice.com/jobs?q=<term>.
locationstringCity / ZIP added as location query param.
employmentTypeenumany / FULL_TIME / PART_TIME / CONTRACTS / THIRD_PARTY — applied client-side.
workTypeenumany / remote / hybrid / on-site — matched against title + description.
maxItemsintegerMax jobs per run. Default 3.
salaryMinintegerMinimum salary — matched against JSON-LD baseSalary.value.minValue.
datePostedDaysintegerOnly include jobs posted within the last N days (from JSON-LD datePosted).
includeKeywordsstring[]Title/description must contain at least one of these (case-insensitive).
excludeKeywordsstring[]Drop jobs whose title/description contains any of these (case-insensitive).
proxyConfigurationobjectApify proxy (datacenter by default).

How it works

  1. For each startUrls entry, classify as search page or direct /job-detail/ URL.
  2. Search pages: extract every /job-detail/<uuid> href.
  3. For each job URL, fetch detail page and parse JobPosting JSON-LD (title, company, salary, location, description). Apply client-side employmentType / workType filters.
  4. 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.