Dice Tech Jobs Scraper
Pricing
from $0.80 / 1,000 results
Dice Tech Jobs Scraper
Scrape tech job postings from Dice.com — filter by keyword, location and radius, skill, or employment type. Get one normalized row per job with title, company, location, employment type, and optional skill tags, ready for CSV, JSON, or API export.
Pricing
from $0.80 / 1,000 results
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
🎯 What this scrapes
Dice is a dedicated tech-job board listing developer, DevOps, data, and IT-contract roles that general job boards often miss. This Actor searches Dice's own listings and writes one structured row per posting: title, company, location, employment type, a remote flag, and (optionally) the skill tags Dice attaches to each role. Filter by keyword, location + radius, skill, or employment type — or leave everything blank to pull the newest postings site-wide.
🔥 What we handle for you
- 🛡️ We rotate browser fingerprints —
curl-cffiimpersonation (Chrome / Firefox / Safari) so the target sees real-browser TLS, not Python. - 🌐 We rotate residential proxies through Apify Proxy on every block — fresh session ID, fresh exit IP.
- 🔁 We retry with exponential backoff on
408 / 429 / 5xxand honourRetry-After— up to 5 attempts per page. - 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
- 🧊 We keep the dataset clean — Pydantic-validated rows, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
💡 Use cases
- Tech recruiting pipelines — pull fresh Dice postings that match a role profile into your ATS or sourcing sheet.
- Market-rate research — aggregate published salary/rate text by skill and location to benchmark comp bands.
- Contract/DevOps sourcing — filter by Employment type to isolate Contract and Third Party roles Dice specializes in.
- Remote-role monitoring — track newly posted remote tech jobs across a keyword or skill on a schedule.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
🔌 Integrate it
Pull results straight into a script with the Apify Python client:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("DevilScrapes/dice-tech-jobs-scraper").call(run_input={"keyword": "python developer", "location": "Austin, TX"})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["title"], job["company"], job["apply_url"])
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
keyword | string | no | 'Python Developer' | Free-text search term matched against job titles and descriptions. Leave empty to browse all postings. |
location | string | no | 'Austin, TX' | City, state, or ZIP to center the search on, e.g. 'Austin, TX'. Leave empty to search nationwide. |
skill | string | no | '—' | Single skill or technology to filter by, e.g. 'Kubernetes'. Leave empty to skip skill filtering. |
radius | integer | no | 30 | Search radius in miles around Location. Ignored when Location is empty. |
includeRemote | boolean | no | True | Include postings Dice tags as remote-eligible in addition to the Location + Radius match. |
employmentType | string | no | '—' | Filter by employment type. Leave empty to include all types. |
fetchSkills | boolean | no | False | When enabled, fetch each job's full skill-tag list from its detail page. Adds one extra request per job. |
maxResults | integer | no | 100 | Hard cap on dataset rows for this run. |
proxyConfiguration | object | no | {'useApifyProxy': True} | Apify Proxy configuration. Standard (non-residential) group by default — override here if you need a different group. |
Example input
{"keyword": "python developer","location": "Austin, TX","radius": 30,"includeRemote": true,"maxResults": 3,"proxyConfiguration": {"useApifyProxy": true}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
job_id | string | Dice internal job ID — stable across runs. |
title | string | Job title. |
company | string | Hiring company name. |
location_display | string | Raw location string as shown on the listing. |
is_remote | boolean | True when Dice tags the posting as remote-eligible. |
workplace_types | array | e.g. ["On-Site"], ["Remote"], ["Hybrid"]. |
employment_type | ['string', 'null'] | 'Full-time' / 'Contract' / 'Third Party' as tagged by Dice; null if not shown. |
employer_type | ['string', 'null'] | e.g. 'Direct Hire' / 'Recruiter'; null if not shown. |
easy_apply | boolean | True when Dice's one-click Easy Apply is available. |
skills | array | Skill tags; populated only when Fetch skill tags is enabled, else []. |
posted_date | string | ISO-8601 posting timestamp as tagged by Dice. |
modified_date | ['string', 'null'] | ISO-8601 last-modified timestamp; null if not shown. |
summary | ['string', 'null'] | Truncated job summary snippet. |
description_full | ['string', 'null'] | Full description; populated only when Fetch skill tags is enabled. |
apply_type | ['string', 'null'] | e.g. 'External'; populated only when Fetch skill tags is enabled. |
salary_text | ['string', 'null'] | Raw salary/rate string as published; null when Dice doesn't show one. |
apply_url | string | Canonical Dice job-detail URL. |
scraped_at | string | ISO-8601 UTC row-construction timestamp. |
Example output
{"job_id": "b4b1e2f7c9","title": "Senior Python Developer","company": "Example Tech Inc.","location_display": "Austin, TX","is_remote": true,"workplace_types": ["On-Site"],"employment_type": "Full-time","employer_type": "Direct Hire","easy_apply": true,"skills": ["Python","Django","AWS"],"posted_date": "2026-07-30T00:00:00+00:00","salary_text": "$120,000 - $150,000","apply_url": "https://www.dice.com/job-detail/b4b1e2f7c9","scraped_at": "2026-08-01T14:00:00+00:00"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.01 | One-off warm-up charge per run |
result | $0.002 | Per dataset item |
Example: 1 000 results at the rates above ≈ $2.01. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
v1 covers Dice.com's US tech-job listings surface only — the DHI-owned ClearanceJobs/eFinancialCareers properties are separate sites and out of scope. Skill tags, full descriptions, and apply_type require Fetch skill tags (one extra request per job). posted_date and modified_date are the raw ISO-8601 values Dice itself publishes at list level — we don't infer or estimate a date when Dice doesn't supply one.
❓ FAQ
Do I need a Dice account or API key?
No. This Actor scrapes Dice's own publicly listed job postings — no login, no API key.
What happens if I leave every filter blank?
The Actor pulls the newest postings site-wide, up to Max results.
Does skills always populate?
Only when Fetch skill tags is enabled; each job then costs one extra detail-page request. Otherwise skills is an empty list.
Why is salary_text sometimes null?
Dice doesn't require employers to publish a salary or rate — we surface the raw text only when the listing shows one, never an estimate.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.