Dice.com Jobs Scraper 💰$0.90/1k — Emails & Applicant Counts avatar

Dice.com Jobs Scraper 💰$0.90/1k — Emails & Applicant Counts

Pricing

from $0.90 / 1,000 job results

Go to Apify Store
Dice.com Jobs Scraper 💰$0.90/1k — Emails & Applicant Counts

Dice.com Jobs Scraper 💰$0.90/1k — Emails & Applicant Counts

Dice.com jobs scraper at $0.90/1k — 10% under the market leader, with data rivals lack: per-job applicant counts, employer contact emails and payment-stack lead scoring. Search by URL or filters; monitoring mode returns only new jobs. Deep rows — pay rate, skills, sponsorship. JSON/CSV.

Pricing

from $0.90 / 1,000 job results

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

19

Total users

3

Monthly active users

2 hours ago

Last modified

Share

Dice.com Jobs Scraper

The fastest way to turn Dice.com searches into structured tech-job data. Start from any Dice search URL, a job-detail URL, or a plain keyword with filters — and get one clean JSON/CSV row per job posting, with salary, skills, remote status, visa sponsorship, and the full company profile.

Beyond the job data itself, this actor can do three things no other Dice scraper offers: discover the employer's real website and contact email, qualify each employer as a paying business (payment-stack detection: Stripe, Shopify, PayPal and more), and run a change feed so scheduled reruns emit NEW / UPDATED / EXPIRED / REAPPEARED jobs — optionally POSTed to a webhook.

Why Use This Scraper?

  • ✅ Two input modes — paste Dice search/job URLs, or let the actor build the search from keyword + filters
  • ✅ Full job-detail rows — salary, skills, employment types, remote/hybrid, sponsorship, apply method
  • ✅ Complete company profile per job — logo, description, branding assets, recruiter vs direct employer
  • ✅ Opt-in employer contact emails — website discovery + contact-page harvesting per company
  • ✅ Opt-in payment-stack qualification — flags employers that take money online (Stripe key detection included)
  • ✅ Change-feed monitoring — scheduled reruns emit NEW / UPDATED / EXPIRED / REAPPEARED, with an optional Slack or generic webhook
  • ✅ Applicant-count field (apply.jobApplyCount) captured whenever Dice exposes it
  • ✅ Parsed compensation — salaryMin / salaryMax / salaryCurrency / salaryPeriod next to the raw payRate string
  • ✅ isExpired + optional skipReposts so closed and recycled listings don't pollute a feed
  • ✅ Pure HTTP with the mobile detail API — no browser, fast runs, JSON or CSV out

Overview

The Dice.com Jobs Scraper is built for recruiters, staffing agencies, lead-gen teams, and job-market analysts who need structured job data from Dice.com — the leading US tech job board run by DHI Group.

The output is job-shaped rows. Whether you start from a search URL, a single job-detail URL, or a keyword, every dataset item is one job posting with the same schema: identifiers, dates, pay, skills, description, apply info, company profile, and location.

One thing to know up front: each job in the search results is fetched again through Dice's job-detail API, so rows contain the full detail payload (complete HTML description, company branding, apply metadata) — not just the thin search-result cards other scrapers return.

Supported Inputs

URL types

URL typePatternExample
Job searchdice.com/jobs?q=…https://www.dice.com/jobs?q=software+engineer&location=United+States&countryCode=US
Job detaildice.com/job-detail/{uuid}https://www.dice.com/job-detail/e1be0c83-95a9-4c72-af15-457bd41c92ee

Copy-pasteable startUrls

{
"startUrls": [
"https://www.dice.com/jobs?q=software+engineer&location=United+States&radiusUnit=mi&language=en&countryCode=US",
"https://www.dice.com/job-detail/e1be0c83-95a9-4c72-af15-457bd41c92ee"
]
}

Keyword / filter mode

Leave startUrls empty and the actor builds the Dice search URL for you:

{
"keyword": "data engineer",
"location": "Austin, TX",
"workplaceType": "Remote",
"employmentType": "FULLTIME",
"postedDate": "SEVEN"
}

Priority rule: when both are configured, startUrls wins — the keyword and filter fields are ignored for that run.

Unsupported inputs

  • ❌ URLs outside dice.com (other DHI boards like ClearanceJobs are not supported)
  • ❌ Anything behind the Dice login wall — candidate profiles, applications, employer dashboards
  • ❌ Shortened or redirect URLs — paste the full URL from your browser

Use Cases

AudienceUse case
Recruiters & staffing agenciesPull fresh postings by tech stack, spot direct-hire vs recruiter listings, reach employers via enriched contact emails
Lead-gen & sales teamsCompanies hiring engineers are buying tools — enrich with contact email + payment-stack signals to qualify leads
Job-market analystsTrack salary ranges, skill demand, remote-vs-onsite ratios across the US tech market
Job-alert buildersMonitoring + a schedule + webhookUrl = NEW / UPDATED / EXPIRED alerts for a niche search (e.g. visa-sponsoring roles)
HR & comp teamsBenchmark pay rates by title, region, and employment type from real listings
AgenciesDeliver client-ready Dice datasets without writing or maintaining scrapers

How It Works

How the Dice.com Jobs Scraper works

  1. Input — provide Dice search/job URLs, or a keyword plus optional filters
  2. Search crawl — the actor walks the search result pages, auto-paginating until maxItems or the last page
  3. Detail fetch — every job is fetched from Dice's job-detail API for the full payload
  4. Optional enrichment — with enrichEmails on, each employer's website is discovered and scanned for a contact email; with qualifyByPayment also on, the same pages are checked for payment processors
  5. Output — one JSON row per job, exportable as JSON, CSV, Excel, or via the Apify API

Input Configuration

Input fields

FieldTypeRequiredNotes
startUrlsarray<string>yes (or keyword)Full Dice search or job-detail URLs; overrides filter fields when non-empty
keywordstringyes (when no URLs)Search query (q on Dice)
locationstringoptionale.g. Remote, United States, Austin, TX
postedDatestring enumoptionalONE (24 h), THREE (3 days), SEVEN (7 days); unset = any time
employmentTypestring enumoptionalFULLTIME, PARTTIME, CONTRACTS, THIRD_PARTY (one per search)
workplaceTypestring enumoptionalRemote, Hybrid, On-Site
easyApplybooleanoptionalOnly jobs with Dice Easy Apply. Default false
willingToSponsorbooleanoptionalOnly visa-sponsoring jobs. Default false
employerTypestring enumoptionalRecruiter or Direct Hire
radius / radiusUnitinteger / mi·kmoptionalSearch radius around location
countryCode, languagestringoptionalGeo/language query params (e.g. US, en)
latitude, longitude, locationPrecisionnumber / stringoptionalAdvanced precise-geo search
maxItemsintegeroptionalCap on scraped jobs. Default 1000
monitoringModebooleanoptionalChange feed: emit NEW / UPDATED / EXPIRED / REAPPEARED. Default false
monitoringStateKeystringoptionalNames the feed store. Default is a hash of the start URLs
emitUnchangedbooleanoptionalAlso save rows whose snapshot did not change. Default false
webhookUrlstringoptionalPOST each change as JSON (Slack incoming webhooks get a text line)
skipRepostsbooleanoptionalDrop listings whose title + company + description was already seen under a different Dice id. Default false
enrichEmailsbooleanoptionalAdds contactEmail, contactWebsite, emailEnrichment. Default false
qualifyByPaymentbooleanoptionalRequires enrichEmails. Adds takesPayments, paymentProcessors, stripeLiveKey, paymentConfidence. Default false
maxConcurrency / minConcurrencyintegeroptionalDefaults 10 / 1
maxRequestRetriesintegeroptionalDefault 100
proxyobjectoptionalDefaults to Apify Residential

Common scenarios

1. Remote full-time roles, last 7 days, with employer emails

{
"keyword": "devops engineer",
"workplaceType": "Remote",
"employmentType": "FULLTIME",
"postedDate": "SEVEN",
"enrichEmails": true,
"maxItems": 200
}

2. Paste a search URL as-is

{
"startUrls": [
"https://www.dice.com/jobs?q=machine+learning&location=New+York,+NY&filters.workplaceTypes=Remote"
],
"maxItems": 100
}

3. Scheduled change feed with payment-qualified leads and a Slack webhook

{
"keyword": "react developer",
"location": "United States",
"monitoringMode": true,
"webhookUrl": "https://hooks.slack.com/services/…",
"enrichEmails": true,
"qualifyByPayment": true
}

Output Overview

Each dataset item is one job posting containing:

  • Identifiers & dates — id, jobUUID, status, isExpired, isRepost, changeType, changedFields, firstSeenAt, lastSeenAt, postedDate, modifiedDate, deactivationDate, webURL
  • Compensation & terms — payRate, salaryMin, salaryMax, salaryCurrency, salaryPeriod, employmentTypes, willingToSponsor, remote, travelRequired
  • Role content — skills[], full HTML description, position.title, position.location (city, state, coordinates, workplace types)
  • Apply metadata — apply.easyApply, apply.applicationMethodName, apply.url, apply.jobApplyCount (when Dice exposes it)
  • Company profile — company.name, logo, profile URL, brandMaxInfo company description, branding assets
  • Search-card snapshot — basicInfo (the original search-result card: summary, salary text, employerType, easy-apply flag)
  • Optional enrichment — contactEmail, contactWebsite, emailEnrichment, and payment fields when toggled on

Rows are nested JSON. Apify's export automatically flattens them for CSV/Excel (e.g. position.location.city becomes a column).

Output Samples

Search start — contract role (trimmed real row)

{
"id": "5f2e9d3d57dda81c0c7009c880fa6275",
"jobUUID": "e1be0c83-95a9-4c72-af15-457bd41c92ee",
"status": "ACTIVE",
"isExpired": false,
"isRepost": false,
"changeType": "NEW",
"changedFields": [],
"firstSeenAt": "2026-09-15T15:00:00.000Z",
"lastSeenAt": "2026-09-15T15:00:00.000Z",
"postedDate": "2026-07-16T03:04:53.000Z",
"willingToSponsor": false,
"skills": ["Software Engineer (I)"],
"employmentTypes": ["CONTRACT_W2"],
"payRate": "USD70 - USD88",
"salaryMin": 70,
"salaryMax": 88,
"salaryCurrency": "USD",
"salaryPeriod": "hour",
"description": "job summary:<br /><br /><p>As a Software Engineer, you make direct technical contributions…", // full HTML, trimmed
"webURL": "https://www.dice.com/job-detail/e1be0c83-95a9-4c72-af15-457bd41c92ee",
"remote": false,
"apply": {
"url": "https://www.randstadusa.com/jobs/4/1339256/software-engineer-i_mountain-view/…",
"easyApply": false,
"applicationMethodName": "APPLY_TO_URL",
"jobApplyCount": null
},
"company": {
"name": "Randstad Digital",
"absoluteLogoPath": "https://d3qscgr6xsioh.cloudfront.net/nwd2B9CDT8Oo4K91VMeJ_transformed.png?format=webp",
"profileUrl": "https://www.dice.com/ee3855f3-d056-5325-bc31-ad5f53052a28"
},
"position": {
"title": "Software Engineer (I)",
"location": { "city": "Mountain View", "state": "CA", "displayName": "Mountain View, CA, US", "workplaceTypes": ["ONSITE"] }
},
"basicInfo": { "employerType": "Recruiter", "employmentType": "Contract", "salary": "USD70 - USD88", "easyApply": false }
/* …more fields: modifiedDate, deactivationDate, posterId, telecommuteOption, brandMaxInfo… */
}

Remote + Easy Apply row (trimmed real row)

{
"id": "5c44a28d10f36e0591a7a2fddc3ebd1b",
"jobUUID": "9a306c41-61ab-4e5c-985b-42082ab248f6",
"position": { "title": "Sr Software Engineer with Hadoop & AWS" },
"company": { "name": "Innovative IT Solutions Inc" },
"skills": ["Hadoop", "AWS", "lead", "engineer"],
"employmentTypes": ["CONTRACT_W2"],
"payRate": "60",
"salaryMin": 60,
"salaryMax": 60,
"salaryCurrency": null,
"salaryPeriod": "hour",
"isExpired": false,
"remote": true,
"apply": { "easyApply": true, "applicationMethodName": "APPLY_TO_EMAIL" },
"basicInfo": { "employerType": "Direct Hire" }
}

Enrichment columns (shape — added when enrichEmails / qualifyByPayment are on)

{
/* …all job fields above, plus: */
"contactEmail": "…", // best contact email found on the employer's site ("" if none)
"contactWebsite": "…", // discovered employer website
"emailEnrichment": { /* detailed discovery trace */ },
"takesPayments": true, // qualifyByPayment only
"paymentProcessors": ["stripe"],
"stripeLiveKey": "pk_live_…", // when publicly exposed on the site
"paymentConfidence": "high"
}

Key Output Fields

Job Core

  • id, jobUUID, status, isExpired, isRepost, changeType (NEW / UPDATED / UNCHANGED / EXPIRED / REAPPEARED), changedFields[], firstSeenAt, lastSeenAt, postedDate, modifiedDate, deactivationDate, webURL

Compensation & Terms

  • payRate (raw Dice string), salaryMin, salaryMax, salaryCurrency, salaryPeriod (hour / day / week / month / year)
  • employmentTypes[], willingToSponsor, remote, telecommuteOption, travelRequired

Role & Location

  • position.title, skills[], description (full HTML)
  • position.location — city, state, country, postalCode, latitude, longitude, displayName, workplaceTypes[]

Apply

  • apply.easyApply, apply.applicationMethodName (APPLY_TO_URL / APPLY_TO_EMAIL), apply.url, apply.jobApplyCount

Company

  • company.name, company.absoluteLogoPath, company.profileUrl, company.brandMaxInfo.companyInfo
  • basicInfo.employerType (Recruiter / Direct Hire), basicInfo.summary, basicInfo.salary

Enrichment (opt-in)

  • contactEmail, contactWebsite, emailEnrichment
  • takesPayments, paymentProcessors[], stripeLiveKey, paymentConfidence

What Makes This Richer Than the Competition

The other Dice.com actors on Apify Store return the standard job fields — title, company, salary, description — and stop there. This actor is the only one that turns each posting into a qualified lead and supports scheduled monitoring.

Capabilityshahidirfan · worldunboxer · fatihtahtaThis actor
Job title, company, salary, skills, description✅✅
Parsed salary (salaryMin / salaryMax / currency / period)partial✅
Expired / repost flags (isExpired, skipReposts)❌✅
Applicant count per job (apply.jobApplyCount)❌✅ (when Dice exposes it)
Employer contact-email enrichment (contactEmail / contactWebsite)❌✅ opt-in
Payment-stack qualification (takesPayments, paymentProcessors, stripeLiveKey)❌✅ opt-in
Change feed — NEW / UPDATED / EXPIRED + webhook❌ / partial✅ per-search KV + Slack/generic POST
Full company profile — branding assets, recruiter vs direct, willingToSponsor, modifiedDatepartial✅ complete

If you only need a flat list of postings, any of these actors works. If you need to reach the employer, score the lead, or track what's new, this is the only Dice actor that does it.

FAQ

Which Dice URLs are supported?

Job search URLs (dice.com/jobs?q=…, with any filters applied in your browser) and job-detail URLs (dice.com/job-detail/{uuid}). Login-gated pages, other DHI boards, and shortened URLs are not supported.

Do I need a URL at all?

No. Set keyword (plus optional location, workplaceType, employmentType, postedDate, easyApply, willingToSponsor, employerType, radius/geo fields) and the actor builds the search URL. If startUrls is non-empty, it takes priority and the filter fields are ignored.

What exactly does monitoring mode do?

With monitoringMode: true, each job is compared to a per-search snapshot store. Reruns emit NEW, UPDATED (title / pay / status / dates / description changed), REAPPEARED (was expired, now back), or EXPIRED (vanished from this search after a full pagination). Unchanged jobs are skipped unless emitUnchanged is on. EXPIRED is not emitted if maxItems or maxPages stopped the crawl early — that would mark jobs you simply did not reach. Two different keywords do not expire each other unless you set the same monitoringStateKey. Optional webhookUrl POSTs each change (Slack incoming-webhook URLs get a one-line text payload). Turn monitoring off for a full scrape matching the Dice UI count.

How do isExpired and skipReposts work?

isExpired is true when Dice marks the job anything other than ACTIVE, or when deactivationDate is already in the past. The row is still saved — filter it in your export if you want live jobs only. skipReposts: true drops a job (and does not charge it) when the same title + company + description was already seen under a different Dice id. Saved rows have isRepost: false because matches never reach the dataset.

How does email enrichment work, and is it guaranteed?

It's best-effort. Dice only links to the company's Dice profile, so the actor discovers the employer's real website by name, then reads its contact/about pages for an email. Rows get contactEmail (may be empty), contactWebsite, and a detailed emailEnrichment object. Enrichment never blocks a row — jobs without a discoverable site still come through.

What is payment qualification for?

Lead scoring. With qualifyByPayment: true (requires enrichEmails), the pages already fetched for email discovery are scanned for payment processors and e-commerce platforms — Stripe, Shopify, PayPal, Paddle, Lemon Squeezy, WooCommerce, Square, Chargebee and more. You get takesPayments, paymentProcessors, stripeLiveKey (if publicly exposed), and paymentConfidence — useful for separating real paying businesses from shell listings.

Are applicant counts always filled?

No. apply.jobApplyCount is captured whenever Dice's API exposes it, but Dice frequently returns null — treat it as a bonus signal, not a guaranteed field.

Can I scrape candidate profiles or anything behind login?

No. The actor only accesses publicly available job and search pages. Candidate data, applications, and employer dashboards are out of scope.

Is there a free tier limit?

Yes — runs on non-paying Apify accounts are capped at 100 jobs and monitoring mode is disabled. Paid accounts get the full maxItems (default 1000) and all features.

What about proxies and rate limits?

The default configuration (Apify Residential) works out of the box. The actor uses plain HTTP requests plus Dice's mobile detail API — no browser — so runs are fast and light on memory.

Support

Found a bug or have a feature request? Open an issue on the actor's Issues tab or email me at muhameddidovic@gmail.com.

Additional Services

Need a custom export shape, extra fields, other job boards, or scheduled delivery to your CRM/Sheets? I do tailored work — drop me a line at muhameddidovic@gmail.com.

Explore More Scrapers

If you found this useful, you might also like:

Full list at apify.com/memo23.

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/apify-dice-scraper).

Purpose: scrapes Dice.com tech-job postings into one row per job, with employer contact-email enrichment, payment-stack lead qualification, parsed salary, and a NEW/UPDATED/EXPIRED change feed no competing Dice actor combines.

Minimal input:

{ "keyword": "software engineer", "location": "United States", "maxItems": 25 }

Output: one dataset row per job — id, jobUUID, status, isExpired, isRepost, changeType, changedFields, firstSeenAt, lastSeenAt, postedDate, deactivationDate, payRate, salaryMin, salaryMax, salaryCurrency, salaryPeriod, skills[], employmentTypes[], willingToSponsor, remote, description (HTML), webURL, apply {easyApply, applicationMethodName, url, jobApplyCount}, company {name, absoluteLogoPath, profileUrl, brandMaxInfo}, position {title, location {city, state, displayName, workplaceTypes}}, basicInfo {employerType, salary, summary}; plus opt-in contactEmail, contactWebsite, emailEnrichment, takesPayments, paymentProcessors, stripeLiveKey, paymentConfidence.

Behaviors an agent should know:

  • Always set maxItems; the default is 1000 and a broad keyword can hit it.
  • startUrls (full dice.com search or job-detail URLs) overrides keyword + filter fields when non-empty.
  • monitoringMode: true emits a change feed (NEW / UPDATED / EXPIRED / REAPPEARED). Pair with webhookUrl for Slack or a generic POST. EXPIRED only after a full search pagination.
  • skipReposts: true drops recycled listings (same title + company + description, new Dice id). isExpired is always set from status / deactivationDate.
  • enrichEmails adds employer email/website columns (best-effort, may be empty); qualifyByPayment requires enrichEmails and adds payment-stack fields at no extra charge.
  • Billing is pay-per-event: a one-time actor-start fee, $0.0009 per job result, and a $0.010 contact-email charge applied only when enrichEmails actually finds an email. Non-paying Apify accounts are capped at 100 rows per run and cannot use monitoring mode.
  • Public data only — no candidate profiles or login-gated pages; only dice.com URLs are accepted.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by DHI Group, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available job-listing pages — no authenticated endpoints, paid features, or content behind the dice.com login wall. Users are responsible for ensuring their use complies with dice.com's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.


SEO Keywords

dice scraper, scrape dice.com, dice.com API, dice jobs scraper, dice job listings export, tech jobs scraper, IT jobs data, job board scraper, job postings API, tech recruiting data, recruiter lead generation, employer contact emails, hiring companies leads, salary benchmark data, job market analysis, visa sponsorship jobs data, remote tech jobs data, job posting monitoring, staffing agency data, tech talent intelligence, Apify dice scraper, dice.com JSON export, dice.com CSV export