Dice.com Jobs Scraper - US Tech Jobs, Salaries & Skills API avatar

Dice.com Jobs Scraper - US Tech Jobs, Salaries & Skills API

Pricing

$0.70 / 1,000 results

Go to Apify Store
Dice.com Jobs Scraper - US Tech Jobs, Salaries & Skills API

Dice.com Jobs Scraper - US Tech Jobs, Salaries & Skills API

Use this to get US tech job ads from Dice.com. Input: keywords, locations, filters or Dice URLs. One result = one job: title, company, location, salary (parsed), contract/full-time, remote/hybrid, date, URL; optional full description, skills and company profile. Past the 10k cap. $0.70 per 1,000.

Pricing

$0.70 / 1,000 results

Rating

0.0

(0)

Developer

Giovanni Rich

Giovanni Rich

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Dice Jobs Scraper & API - US tech job ads from Dice.com (salaries, skills, contract jobs)

Dice Jobs Scraper is a Dice.com scraper and unofficial Dice jobs API for US tech jobs. Give it keywords, US locations and filters (or paste Dice search, job or company URLs) and get every matching job ad as clean JSON, CSV or Excel: title, company, location, salary (as written and as numbers), full-time / contract / third-party (C2C), remote / hybrid / on-site, direct hire or recruiter, posting date, the job URL and, if you want it, the full description, the skills list, contract terms and the company profile (website, size, type, headquarters, tech stack).

It reads the same JSON the Dice website loads, over plain HTTP: no browser and no login, so up to 200 jobs arrive per request. Dice returns at most 10,000 jobs for any one search; this scraper splits big searches automatically by employer type, US state, easy apply, employment type and workplace type and merges the results without duplicates. In testing, python (30,307 listed) returned 29,720 jobs in under 3 minutes, and a search for every job on Dice (112,804 listed) returned 108,898.

Use it for tech-recruiting and staffing lead generation (which companies are hiring Java, SAP or DevOps contractors this week), IT job boards and aggregators, contract-rate and salary benchmarking, C2C / third-party job feeds, and tech labour-market research.

How to use

  1. Type one or more Search keywords (python developer, devops engineer, salesforce, SAP FICO) and, optionally, Locations (Austin, TX, New York, NY, Texas, 94105). Every keyword is searched in every location. No keyword = all jobs matching your location and filters.
  2. Optionally filter: Workplace types (remote, hybrid, on-site), Employment types (full-time, part-time, contract, third party), Employer types (direct hire or recruiter), Posted within (days), Easy apply only, Visa sponsorship only, Company name, Radius and Sort order.
  3. Set Max jobs per search (0 = everything). Tick Include full description & skills and / or Include company profile if you need them.
  4. Click Start. Download the results as JSON, CSV, Excel or HTML from the Output tab, or pull them through the Apify API, Make, Zapier, n8n or an MCP client.

Already have links? Paste Dice search URLs, job URLs or company URLs into Dice URLs instead; the filters in a search URL are read from the URL.

What you get

One dataset item per job ad:

  • Identity: id (Dice job id, stable across runs), guid, title, url.
  • Company: companyName, companyId, companyProfileId, companyProfileUrl, companyPageUrl, companyLogoUrl.
  • Where: location, city, state, stateCode, country, isRemote, workplaceTypes (Remote, Hybrid, On-Site), workFromHomeAvailable.
  • Work: employmentType and employmentTypes (Full-time, Part-time, Contract, Third Party), employerType (Direct Hire, Recruiter, Other), easyApply, willingToSponsor.
  • Pay: salaryText exactly as written, plus salaryMin, salaryMax, salaryCurrency and salaryPeriod (hour, day, week, month, year) parsed from it when the text has clear numbers.
  • Dates: postedAt, modifiedAt, firstActiveAt.
  • Text: summary (the first ~500 characters of the description).
  • Where it came from: sourceQuery, sourceLocation, position, scrapedAt.

With Include full description & skills on, each job also gets description (plain text), optional descriptionHtml, skills, expiresAt, postalCode, positionId (the employer's requisition id), applyType, appliesOnCompanySite, applyUrl, contractTypes (W2, independent, corp-to-corp) and contractTerm ("6+ months").

With Include company profile on, each job also gets, from the company's Dice profile: companyWebsite, companyType (e.g. "Staffing & Recruiting"), companySize, companyFounded, companyOfficePolicy, companyHeadquarters, companyLocations, companyDescription, companyTechnologies, companyBenefits and social links. One request per company, not per job.

Use cases

  • Staffing and recruiting lead generation: a company posting three contract Java roles in Dallas needs contractors now. Filter employerTypes: ["directhire"] to skip other agencies, run daily with Posted within 1 day, and send new ads to your CRM with the company website attached.
  • Contract-rate benchmarking: salaryMin / salaryMax with salaryPeriod: "hour" by skill, state and contract type (W2 vs C2C).
  • C2C / third-party job feeds: employmentTypes: ["thirdparty"] lists the corp-to-corp roles Dice tags as third party.
  • IT job boards and aggregators: pull a skill or a whole state into your own feed, deduplicated by id.
  • Tech labour-market research: demand by skill (skills), remote share, direct-hire vs agency share, over time.
  • AI agents: "find remote Kubernetes contract jobs posted this week paying over $70 an hour" maps straight onto the input fields.

Input example

FieldDefaultDescription
searchQueries-Keywords, one search each. Empty = all jobs matching the filters
locationswhole USAustin, TX, New York, NY, a state (Texas) or a ZIP code
radius / radiusUnit30 / miDistance around a city or ZIP
includeRemotetrueAlso return remote jobs from anywhere (what dice.com does)
postedWithinDays0 (any)1 = today, 3, 7, or any number of days
workplaceTypesallAny of remote, hybrid, onsite
employmentTypesallAny of fulltime, parttime, contract, thirdparty
employerTypesallAny of directhire, recruiter, other
easyApplyOnly / willingToSponsorOnlyfalseOne-click apply only / visa sponsorship only
companyName-Only this company, exactly as Dice writes it
sortrelevancerelevance or date
maxItems100Max jobs per search; 0 = all
deepSearchtrueSplit searches above 10,000 jobs so nothing is cut off
includeDetailsfalseFull description, skills, contract terms, apply link (one extra request per job)
includeDescriptionHtmlfalseAlso keep the description HTML
includeCompanyDetailsfalseCompany profile (one extra request per company)
startUrls-Dice search URLs, job URLs or company URLs
proxyConfigurationApify datacenterNo residential proxies needed

Contract and third-party data engineering jobs in Texas and Chicago posted this week, from direct employers, with descriptions and company profiles:

{
"searchQueries": ["data engineer", "snowflake"],
"locations": ["Texas", "Chicago, IL"],
"employmentTypes": ["contract", "thirdparty"],
"employerTypes": ["directhire"],
"postedWithinDays": 7,
"maxItems": 200,
"includeDetails": true,
"includeCompanyDetails": true
}

Every remote Python job on Dice, no cap:

{
"searchQueries": ["python"],
"workplaceTypes": ["remote"],
"maxItems": 0
}

From links you copied off the site:

{
"startUrls": [
"https://www.dice.com/jobs?q=salesforce&location=Chicago%2C+IL&filters.postedDate=SEVEN",
"https://www.dice.com/company/10225989",
"https://www.dice.com/job-detail/56bfa0f0-8d70-4033-8bde-f962d9919761"
]
}

Output example

From a real run (search for data engineer in Texas, details and company profile on; long texts shortened):

{
"id": "92eae29dc7441fffdfe7dda2126f8e9f",
"guid": "2c8484f4-2ecf-4af0-b06a-58b9264112ef",
"title": "Sr. Data Engineer",
"url": "https://www.dice.com/job-detail/2c8484f4-2ecf-4af0-b06a-58b9264112ef",
"companyName": "Proventus Metrics",
"companyId": "91139017",
"companyProfileId": "1bb556f5-dac8-4e73-8fbf-e8b6db9b8dfc",
"companyProfileUrl": "https://www.dice.com/company-profile/1bb556f5-dac8-4e73-8fbf-e8b6db9b8dfc",
"companyPageUrl": "https://www.dice.com/company/91139017",
"companyLogoUrl": "https://d3qscgr6xsioh.cloudfront.net/u5mxod99QL6aPLHR58t7_transformed.png?format=webp",
"location": "Irving, Texas, USA",
"city": "Irving",
"state": "Texas",
"stateCode": "TX",
"country": "USA",
"isRemote": false,
"workplaceTypes": ["On-Site"],
"workFromHomeAvailable": false,
"employmentType": "Contract",
"employmentTypes": ["Contract"],
"employerType": "Direct Hire",
"salaryText": "$40 - $50",
"salaryMin": 40,
"salaryMax": 50,
"salaryCurrency": "USD",
"salaryPeriod": "hour",
"postedAt": "2026-10-14T16:39:47.000Z",
"modifiedAt": "2026-10-14T16:39:47.000Z",
"firstActiveAt": "2026-10-14T16:39:47.000Z",
"easyApply": true,
"willingToSponsor": false,
"summary": "Here is OUR CLIENT REQUIREMENT which can be filled immediately. Position: Sr. Data Engineer Location: Irving, TX Duration: Contract W2 A Google Cloud Platform and AWS Data Engineer ...",
"sourceQuery": "data engineer",
"sourceLocation": "Texas",
"position": 2,
"scrapedAt": "2026-10-14T17:32:35.235Z",
"description": "Here is OUR CLIENT REQUIREMENT which can be filled immediately.\n\nPosition: Sr. Data Engineer\nLocation: Irving, TX\nDuration: Contract W2\n\nA Google Cloud Platform and AWS Data Engine ...",
"skills": ["Data Engineer", "GCP", "AWS", "Python", "ETL/ELT", "PySpark", "Apache Spark", "Certification"],
"expiresAt": "2026-11-14T17:39:47.000Z",
"postalCode": "75060",
"positionId": "9114719",
"applyType": "Easy apply on Dice",
"appliesOnCompanySite": false,
"applyUrl": null,
"contractTypes": ["CONTRACT_W2"],
"contractTerm": "12 Months",
"companyWebsite": "https://proventusmetrics.com/",
"companyType": "Staffing & Recruiting",
"companySize": "1-50",
"companyFounded": null,
"companyOfficePolicy": "Remote & Onsite",
"companyHeadquarters": "Austin, TX, USA",
"companyLocations": ["Austin, TX, USA"],
"companyDescription": "At Proventus Metrics, we're dedicated to transforming businesses through innovative technology solutions. As a premier technology consulting firm, we specialize in guiding organiza ...",
"companyTechnologies": ["Oracle", "Salesforce", "Amazon Web Services", "Microsoft Azure", "Aura", "Microsoft SQL Server"],
"companyBenefits": [],
"companyFacebook": null,
"companyInstagram": null,
"companyTwitter": null
}

Fill rates on a 29,742-job test run (python, all of the US): id, title, URL, company, employment type, employer type, posting dates and summary 100%; company logo 98%; workplace type 97%; location 94% (the rest are remote jobs with no address); company profile link 87%; salary text 77%; parsed salary numbers 69%. On a 204-job run with details and company profiles: description, expiry date and position id 100%; skills 99%; ZIP code 73%; contract type 66% (most ads are contracts); apply link 31% (the rest apply on Dice); company type 92%; company description 83%; company website 80%; company size and founding year 32%; company technologies 27%. A field Dice does not publish for a job is null, never guessed.

Pricing

Pay per result: $0.70 per 1,000 jobs (one result = one job ad saved to the dataset). The full description, skills and company profile are included in that price.

  • 100 jobs for a quick search = $0.07
  • Every python job in the US, about 29,700 jobs = $20.80
  • A daily run of 10 keywords, new jobs only (about 500 jobs) = $0.35 a day

No start fee and no charge per search. Failed requests, duplicate ads, expired job URLs and empty searches are never charged. If you set a maximum cost per run, the scraper stops cleanly when it reaches it. Apify's free plan includes $5 of monthly platform credit, enough for about 7,000 jobs.

Integrations

  • Apify API: run the actor and fetch results over REST, or with the official Python and JavaScript / Node.js clients.
  • MCP for AI agents: through the Apify MCP server (https://mcp.apify.com), Claude, ChatGPT, Cursor and other agents can call this Dice jobs API directly and read the results. The input fields are described for agents.
  • Make, Zapier and n8n: start runs and push new jobs to your CRM, Slack, Google Sheets or Airtable.
  • Webhooks: get notified when a run finishes and process the data right away.
  • Schedules: run daily with postedWithinDays: 1 and deduplicate by id to collect only new ads.
  • Google Sheets: export the dataset straight into a spreadsheet, or refresh it on a schedule.

Python example:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("rel8ble/dice-jobs-scraper").call(run_input={
"searchQueries": ["devops engineer"],
"workplaceTypes": ["remote"],
"employmentTypes": ["contract"],
"postedWithinDays": 7,
"maxItems": 100,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], "|", job["companyName"], "|", job["salaryText"], "|", job["url"])

Limits (read before large runs)

  • 10,000 jobs per single search is Dice's own limit. Deep search gets around it by splitting; on the largest test (every job on Dice, 112,804 listed) it returned 108,898 (96.5%). A slice that is still above 10,000 after every split is fetched in both sort orders, and the run summary counts those slices (searchesCappedAt10000).
  • Dice's totals are estimates and move while a big run is going; expect a few percent fewer unique jobs than the counter shows.
  • US only. Dice's search covers US jobs; locations must be US cities, states or ZIP codes. A place Dice does not recognise returns 0 jobs and the run summary says so (Dice itself would silently search the whole US).
  • Salary numbers are parsed from free text. About three in four ads show a pay line and many say "Depends on Experience"; those keep salaryText and leave the numbers null. When the period is not written, it is inferred from the size of the number (over 15,000 = per year, 300 or less = per hour) and left null in between.
  • Details cost one request per job: about 120 jobs a minute in the cloud (204 jobs with details and company profiles took 106 s) instead of thousands.
  • No personal data. Recruiter names, e-mail addresses and phone numbers are not collected as fields; e-mail addresses and phone numbers that recruiters paste into the ad text are replaced with [email removed] / [phone removed], and e-mail apply addresses are never returned. Names written inside the free text of an ad can still appear there.

FAQ

Is there an official Dice API for job search? Dice's partner APIs are for employers posting jobs, not for reading the job market. This actor is an unofficial alternative that reads the public search results.

How do I get only new jobs every day? Schedule the actor daily with postedWithinDays: 1 and sort: "date", and deduplicate on id in your own system.

How do I skip staffing agencies? Set employerTypes: ["directhire"]. With the company profile on, companyType also shows "Staffing & Recruiting" for agencies that post as direct hires.

What does "Third Party" mean? Dice tags jobs that accept candidates through another firm (corp-to-corp, C2C) as Third Party. With details on, contractTypes shows W2, independent or corp-to-corp.

Why did I get fewer jobs than Dice's count? Dice's count is rounded and changes during a run, and some ads appear twice; duplicates are dropped and not charged. Check RUN_SUMMARY in the key-value store: it lists each search with the site total, pages fetched and why it stopped.

Is scraping Dice legal? The actor collects publicly visible job ads, not personal data. You are responsible for how you use the data and for following Dice's terms and the laws that apply to you.

Something is wrong or a field is missing. Open an issue on the Issues tab of the actor page with the run ID. It reaches the developer directly.