Dice Technology Jobs Scraper avatar

Dice Technology Jobs Scraper

Pricing

from $2.99 / 1,000 dice tech job records

Go to Apify Store
Dice Technology Jobs Scraper

Dice Technology Jobs Scraper

Discover and detail-enrich public Dice technology jobs with a lightweight HTTP pipeline.

Pricing

from $2.99 / 1,000 dice tech job records

Rating

0.0

(0)

Developer

Jobs API

Jobs API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Dice Technology Jobs Search Scraper

This Apify Actor uses ordinary direct HTTP requests to discover public Dice job cards and enrich each selected row from its canonical public detail page and JobPosting JSON-LD. It emits source-grounded technology-job records with Dice identity, employer, location, applicant-location requirements, employment and workplace labels, skills and badges, salary, dates, legal IDs, description HTML/text and sections, application URL, listing/detail receipts, and runtime provenance.

The source is accessed sequentially with no proxy, custom user-agent, stealth or fingerprint changes, login, alternate identity, or retries. Complete records are staged until source access checks finish. A confirmed access barrier discards staged rows; a later non-block failure preserves successfully written rows and reports a limited result.

Input

FieldTypeDefaultDescription
startUrlsrequest-list arrayhttps://www.dice.com/jobsOne to three public HTTPS Dice search URLs.
maxPagesinteger1Pages per seed URL, from 1 through 5.
maxItemsinteger3Complete details to emit, from 1 through 50.

No retry, timeout, proxy, user-agent, fixture, or debug controls are exposed in the public input schema.

Example:

{
"startUrls": [{ "url": "https://www.dice.com/jobs" }],
"maxPages": 1,
"maxItems": 3
}

Dataset fields

The strict target-specific dataset schema retains the existing jobId, title, company, location, description, descriptionHtml, datePosted, validThrough, salary, applicationUrl, url, and structuredJobPosting fields, plus richer fields including:

  • diceJobId, diceId, positionId, employerName, companyProfileUrl, companyLogoUrl, companyBannerUrl, companyDescription, and companySocialLinks;
  • locationDetails, locality, region, postalCode, country, applicantLocationRequirements, employmentType, employmentTypes, employmentTypeLabel, workplaceType, and workRemoteAllowed;
  • skills, badges, salaryText, salaryCurrency, salaryMin, salaryMax, salaryUnit, datePostedLabel, postedLabel, and updatedLabel;
  • descriptionText, descriptionTextLength, descriptionSections, descriptionSectionLabels, applicationLabel, canonicalUrl, detailUrl, jobUrl, listingUrl, and canonicalVerified;
  • listing, listingReceipt, detailReceipt, requestReceipts, fieldCoverage, dataQuality, sourceDomain, sourceWebsite, accessMode, proxyUsed, fingerprintingUsed, localOnly, runtime, and scrapedAt.

Historical Chrome comparison (2026-09-22; not rechecked during the current lifecycle-only update) produced this representative record: Senior AI Platform Architect, Northwestern University, Evanston, IL, Full Time, On-site, $125,220 - $165,000/yr, Dice ID grayblok, Position ID 54387, and seven visible skills. The full description and structured source payload were retained in the historical dataset; the following is an output excerpt.

{
"recordType": "job",
"recordStatus": "complete",
"jobId": "9d817212-ae6f-470c-b346-770a68bab2eb",
"diceJobId": "9d817212-ae6f-470c-b346-770a68bab2eb",
"diceId": "grayblok",
"positionId": "54387",
"title": "Senior AI Platform Architect",
"company": "Northwestern University",
"employerName": "Northwestern University",
"location": "Evanston, IL, 60201, US",
"employmentType": "FULL_TIME",
"employmentTypeLabel": "Full Time",
"workplaceType": "On-site",
"skills": ["Enterprise IT", "AI", "Microsoft 365", "Entra ID", "Graph API", "Microsoft 365 Copilot", "AI governance frameworks"],
"salary": {
"text": "$125,220 - $165,000/yr",
"currency": "USD",
"min": 125220,
"max": 165000,
"unit": "YEAR",
"source": "structured JobPosting"
},
"datePosted": "2026-09-21T14:03:11.000Z",
"descriptionSectionLabels": ["overview", "jobSummary", "specificResponsibilities", "miscellaneous", "minimumQualifications", "preferredQualifications", "benefits", "workLifeAndWellness"],
"applicationUrl": "https://www.dice.com/dashboard/login?redirectUrl=%2Fjob-applications%2F9d817212-ae6f-470c-b346-770a68bab2eb%2Fstart-apply",
"canonicalUrl": "https://www.dice.com/job-detail/9d817212-ae6f-470c-b346-770a68bab2eb",
"canonicalVerified": true,
"source": "dice.com",
"sourceDomain": "dice.com",
"accessMode": "direct",
"proxyUsed": false,
"fingerprintingUsed": false,
"localOnly": true,
"detailVerified": true
}

Access barriers and validation

Platform run status is only SUCCEEDED or FAILED; dataset outcome is reported separately as resultStatus: COMPLETE, LIMITED, SKIPPED, DEFERRED, NO_DATA, or FAILED. A clean extraction that stores the requested complete rows is SUCCEEDED / COMPLETE; stored rows followed by later errors are SUCCEEDED / LIMITED; fatal zero-row input, runtime, Dataset, or finalization failures are FAILED / FAILED. Ambiguous zero-row results—including unrecognized empty listings and cases where no complete detail row can be verified—remain SUCCEEDED / DEFERRED, not fatal failures. The count advances only after Actor.pushData() resolves. Diagnostics and request receipts are kept in Key-Value Store artifacts, never as Dataset rows.

If Dice returns HTTP 401, 403, 429, or 451, or visibly serves a CAPTCHA, verification, or access-denial challenge, the Actor stops requests, discards unpersisted staged rows, and records SUCCEEDED / SKIPPED with the evidence and receipts. If a future execution path has already persisted eligible rows before a confirmed barrier, retain those rows and report SUCCEEDED / LIMITED. HTTP 407, other unsuccessful HTTP responses, and unverified transport errors are DEFERRED, not site blocks. No retry, alternate route, identity switch, or access-control bypass is attempted. NO_DATA is emitted only when every requested search returned HTTP 200 and visible Dice empty-results text; the bounded matched excerpt and per-page receipts are recorded in OUTPUT.noDataEvidence. Missing or unrecognized empty output is DEFERRED. When Chrome control is unavailable, do not claim a current source comparison from offline checks; record source behavior as unverified rather than substituting another browser or route.

Safe offline checks from this directory:

npm test
npm run lint
apify validate-schema

npm run validate:dataset is a separate storage-backed validator: it reads Dataset and Key-Value Store files from the selected local Apify storage directory. It was not run in this lifecycle audit. Run it only when local-storage validation is explicitly in scope and the exact storage directory has been reviewed; never use --purge on an existing store.