Dice.com Scraper icon

Dice.com Scraper

Scrape tech job listings from Dice.com by keyword, filters, or URL. Extract job titles, companies, recruiter types, salaries, locations, skills, posted…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Dice.com Scraper at a glance

Dice.com Scraper is a ready-to-run Apify actor from abotapi for collecting jobs data. Its documented output includes id, change type (incremental mode), url, title and company, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Jobs, Automation, Developer Tools
Pricing
$1.80 per 1,000 results (Free plan), from $1.20 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
26 options

Scrape tech job listings from Dice.com by keyword, filters, or URL. Extract job titles, companies, recruiter types, salaries, locations, skills, posted dates, apply links or emails, and full job descriptions. Auto-paginates with pay-per-result pricing and no subscription required.

What Dice.com Scraper can do

  • Dual input. Build a search from keywords, location and filters, or paste Dice.com URLs directly, both search pages and single job pages.
  • Full filter set. Posted-date window, employment type, workplace type (remote/hybrid/on-site), employer type (recruiter vs direct hire), Easy Apply, visa-sponsor willingness, and sort by relevance or date.
  • Superset of fields. Structured salary (min, max, currency, period), a skills list, an apply URL or apply email, a company profile link, and a structured street address, on top of every core listing field.
  • Forward pagination. Walks the result set on its own, stopping naturally once a page repeats or empties, or once your listing cap is reached.
  • Optional detail enrichment. Turn on richer per-job data (full description, skills, apply contact, structured address) only when you need it.
  • Built for schedules. Incremental mode returns only new and changed listings on recurring runs, with clear, source-checked rules for when a listing can be marked gone and later reappear.

Choose what to collect

These inputs let you configure Dice.com Scraper - Tech Jobs, Salaries, Skills & Employers. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredSearch mode = pick keywords + location + filters below. URL mode = paste any dice.com search or job URL refined in your browser.

Choices: search, url

queriesarrayFree-text search terms (e.g. "python developer", "data engineer", "devops"). One scrape per keyword. Leave empty to browse without a keyword filter.
locationstringCity + state or country. Examples: "New York, NY, USA", "Austin, TX, USA". Leave empty to search nationwide.
radiusintegerDistance around the location to include. Leave at 0 to use the site default radius. Ignored when Location is empty.
radiusUnitstringUnit for the search radius.

Choices: mi, km

countryCodestringTwo-letter country code for the job market (Dice is primarily US). Example: "US".
postedDatestringOnly return jobs posted within this window. "Any time" walks the unfiltered results.

Choices: any, ONE, THREE, SEVEN

Show 19 more inputs
More input fields
InputWhat it controls
employmentTypestringFilter by employment scope. "Any" walks the unfiltered results.

Choices: any, FULLTIME, PARTTIME, CONTRACTS, THIRD_PARTY

workplaceTypestringFilter by on-site / hybrid / remote arrangement. "Any" walks the unfiltered results.

Choices: any, Remote, Hybrid, On-Site

employerTypestringFilter by who posted the job. "Any" walks the unfiltered results.

Choices: any, Recruiter, Direct Hire

easyApplybooleanOnly return jobs that support one-click Easy Apply.
willingToSponsorbooleanOnly return jobs whose employer indicates willingness to sponsor a visa.
sortBystringResult ordering. "Relevance" is the site default; "Date" surfaces the most recently posted first.

Choices: relevance, date

urlsarrayOne or more dice.com URLs: a /jobs search (any filters, sort or page), a keyword or location landing page (/jobs/q-python-jobs, /jobs-in-austin-tx), or a single /job-detail/ job page. Left untouched, the field scrapes one example of each supported shape. Company profile pages and other sites are skipped with a warning. Multi-URL supported; each URL pages forward independently. Filter fields above are ignored.
fetchDetailsbooleanWhen ON, also fetch each job's detail page for the full HTML description, skills list, structured street address, apply URL/email, valid-through date, and structured salary. Search results already carry id, title, company, location, salary, employment type, posted date, and summary, so many feeds work great with this OFF. Default OFF.
maxPagesintegerSafety bound on how many result pages to walk per keyword (or per pasted URL). Each page returns roughly 20 listings. 0 (default) means unlimited - the walk stops naturally once a page comes back empty or repeats listings already collected, or sooner once Max listings is reached. Set a number only for an explicit page cap below that natural stop.
maxListingsintegerThe sole soft cap on the run: stop after this many listings across all searches. Defaults to 20 so a run stays small unless you raise it. 0 = unlimited (bounded only by the natural stop on Max pages).
resumeFromRunIdstringOptional. Paste a previous run ID or dataset ID to continue a large walk-all pull: listings already saved by that run are loaded before scraping starts and skipped, so this run only appends new listings. For recurring daily monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns all matching listings as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED listings. Turn on "Emit unchanged" or "Emit expired" only when you also want those listings returned (and billed). State is kept separately for each mode/keyword/location/filter/URL and detail-fetch setup; use State key when you want to name or deliberately share a monitoring campaign. Change detection compares every output field except scrapedAt, score (search relevance rank, changes on every fetch), the order of skills/workplaceTypes/emails, and the logo host/query; a changed title, salary, company, description, dates, apply data or any other field makes a listing UPDATED with changedFields naming it. Add more fields to ignore with "Ignore fields when detecting changes". A listing is only marked EXPIRED after a complete, uncapped scan from page 1. To continue one specific interrupted run instead, use Resume from a prior run above.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search/URL and filter settings, different searches then never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return listings that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you specifically want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return listings that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, not when Max listings capped it, when Resume was used, or on a run that only fetched individual job detail URLs. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayField names that must NOT make a listing UPDATED, for example modifiedDate or summary. Use a dotted path for a nested field. The fields stay in the output; they are just not compared. scrapedAt and score are always ignored. Changing this list never causes a wave of UPDATED rows.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON, the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

idID
changeTypeChange type (incremental mode) (text)
urlURL (link)
titleTitle
companyCompany
companyLogoLogo (image)
companyProfileUrlCompany Profile (link)
cityCity
stateState
countryCountry
locationDisplayLocation
workplaceTypesWorkplace
Show 42 more fields
remoteRemote
salarySalary
salaryMinMin Pay
salaryMaxMax Pay
salaryCurrencyCurrency
salaryPeriodPeriod
employmentTypeType
employerTypeEmployer
easyApplyEasy Apply
willingToSponsorSponsors
skillsSkills
postedDatePosted
modifiedDateModified
applyTypeApply Type
applyUrlApply (link)
applyEmailApply Email
emailsEmails
summarySummary
companyReviewsReviews
scrapedAtScraped
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
guidGUID
positionIdPosition ID
jobLocationJob location (structured)
workSettingWork setting
updatedUpdated
searchPageSearch page
searchSortBySearch sort
descriptionHtmlDescription (HTML)
descriptionDescription (HTML, legacy)
descriptionTextDescription (text)
searchQuerySearch query
searchLocationSearch location
validThroughValid through
streetStreet
postalCodePostal code
regionRegion
scoreRelevance score
pagePage
sourceUrlSource URL

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "id": "3fa41c9e7d2b4a11",
  "guid": "3fa41c9e-7d2b-4a11-9c3d-8b6f1e2a4d7c",
  "url": "https://www.dice.com/job-detail/3fa41c9e-7d2b-4a11-9c3d-8b6f1e2a4d7c",
  "title": "Senior Backend Engineer",
  "company": "Sample Company",
  "companyProfileUrl": "https://www.dice.com/company-profile/9c3d8b6f-1e2a-4d7c-aaaa-111122223333",
  "city": "Denver",
  "state": "Colorado",
  "country": "USA",
  "locationDisplay": "Denver, Colorado, USA",
  "workplaceTypes": [
    "Hybrid"
  ],
  "remote": false,
  "salary": "USD 110,000.00 - 140,000.00 per year",
  "salaryMin": 110000,
  "salaryMax": 140000,
  "salaryCurrency": "USD",
  "salaryPeriod": "year",
  "employmentType": "Full-time",
  "employerType": "Recruiter",
  "easyApply": true,
  "willingToSponsor": false,
  "skills": [
    "Go",
    "Kubernetes",
    "PostgreSQL"
  ],
  "positionId": "R-048213",
  "score": 812.4,
  "postedDate": "2026-02-10T00:00:00Z",
  "modifiedDate": "2026-02-12T00:00:00Z",
  "validThrough": "2026-03-12T00:00:00Z",
  "applyType": "APPLY_TO_EMAIL",
  "applyUrl": null,
  "applyEmail": "jobs@example.com",
  "emails": [
    "jobs@example.com"
  ],
  "summary": "Sample summary text appears here.",
  "description": "<p>Full HTML description appears here when Fetch detail pages is on.</p>",
  "companyReviews": null,
  "scrapedAt": "2026-02-12T08:00:00.000Z"
}

Ways to use this data

  • Recruiters and staffing teams: source active tech openings by skill, location and visa-sponsor willingness.
  • Tech job boards and aggregators: mirror Dice.com listings into your own search or alert product.
  • Compensation and market research: track posted salary ranges across roles, regions and employment types over time.
  • Career sites and newsletters: build a "new today" feed from a saved search using incremental mode.
  • Workforce planning teams: monitor recruiter-type or visa-sponsorship-willing postings for a given role or region.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Dice.com Scraper return?

The documented output for Dice.com Scraper includes id, change type (incremental mode), url, title, company, logo, company profile and city. Availability of each field depends on the source page and the selected mode.

How much does Dice.com Scraper cost?

It costs $1.80 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed listings on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and changed listings for that saved search, and unchanged ones are not billed unless Emit unchanged is on.

Why did Resume return almost nothing on my second run of the same search?

Resume continues one specific interrupted or previous crawl by skipping listings a prior run already saved; it is not a way to poll a search for "what's new" (use Incremental mode for that). It works best for a pasted list of individual job URLs, checked one by one. For a plain search, Resume restarts at page 1 every time and stops as soon as a page returns nothing beyond what was already saved, so if the prior run already covered that page, this run can stop immediately instead of walking further. To keep extending a large search-mode pull, paste the search URL in URL mode with a page number that picks up where the previous run left off.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Dice.com Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.