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.
| Input | What it controls |
|---|---|
modestring · required | Search mode = pick keywords + location + filters below. URL mode = paste any dice.com search or job URL refined in your browser. |
queriesarray | Free-text search terms (e.g. "python developer", "data engineer", "devops"). One scrape per keyword. Leave empty to browse without a keyword filter. |
locationstring | City + state or country. Examples: "New York, NY, USA", "Austin, TX, USA". Leave empty to search nationwide. |
radiusinteger | Distance around the location to include. Leave at 0 to use the site default radius. Ignored when Location is empty. |
radiusUnitstring | Unit for the search radius. |
countryCodestring | Two-letter country code for the job market (Dice is primarily US). Example: "US". |
postedDatestring | Only return jobs posted within this window. "Any time" walks the unfiltered results. |
Show 19 more inputs
| Input | What it controls |
|---|---|
employmentTypestring | Filter by employment scope. "Any" walks the unfiltered results. |
workplaceTypestring | Filter by on-site / hybrid / remote arrangement. "Any" walks the unfiltered results. |
employerTypestring | Filter by who posted the job. "Any" walks the unfiltered results. |
easyApplyboolean | Only return jobs that support one-click Easy Apply. |
willingToSponsorboolean | Only return jobs whose employer indicates willingness to sponsor a visa. |
sortBystring | Result ordering. "Relevance" is the site default; "Date" surfaces the most recently posted first. |
urlsarray | One 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. |
fetchDetailsboolean | When 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. |
maxPagesinteger | Safety 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. |
maxListingsinteger | The 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). |
resumeFromRunIdstring | Optional. 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. |
incrementalModeboolean | Turn 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. |
stateKeystring | Optional. 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. |
emitUnchangedboolean | Off 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. |
emitExpiredboolean | Off 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. |
ignoreFieldsForChangesarray | Field 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. |
mcpConnectorsarray | Optionally 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). |
notionParentPageUrlstring | URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap 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.
idIDchangeTypeChange type (incremental mode) (text)urlURL (link)titleTitlecompanyCompanycompanyLogoLogo (image)companyProfileUrlCompany Profile (link)cityCitystateStatecountryCountrylocationDisplayLocationworkplaceTypesWorkplaceShow 42 more fields
remoteRemotesalarySalarysalaryMinMin PaysalaryMaxMax PaysalaryCurrencyCurrencysalaryPeriodPeriodemploymentTypeTypeemployerTypeEmployereasyApplyEasy ApplywillingToSponsorSponsorsskillsSkillspostedDatePostedmodifiedDateModifiedapplyTypeApply TypeapplyUrlApply (link)applyEmailApply EmailemailsEmailssummarySummarycompanyReviewsReviewsscrapedAtScrapedchangedFieldsChanged fields (incremental mode) (array)firstSeenAtFirst seen (incremental mode) (date)lastSeenAtLast seen (incremental mode) (date)guidGUIDpositionIdPosition IDjobLocationJob location (structured)workSettingWork settingupdatedUpdatedsearchPageSearch pagesearchSortBySearch sortdescriptionHtmlDescription (HTML)descriptionDescription (HTML, legacy)descriptionTextDescription (text)searchQuerySearch querysearchLocationSearch locationvalidThroughValid throughstreetStreetpostalCodePostal coderegionRegionscoreRelevance scorepagePagesourceUrlSource URLExample 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.
