Sign inTry it

Search tech jobs on Dice.

Searches Dice.com tech job listings like its keyword job page: job title, company, link and job id. First page of results (about 20 jobs). Returns an empty list when nothing matches.

No reports yetRead-only, no login
Site
Dice, United States
Version
v1
Runs, last 7 days
No reports yet
sha256
57ba91aaec1c…

Run it with your agent

after installing Wield

Ask in plain words. Your agent finds this recipe and calls it:

“Search tech jobs on Dice.”

Read-only: it changes nothing on the site. No login needed.

{
  "tool": "run",
  "arguments": {
    "recipe_id": "dice.com/search-jobs",
    "params": {
      "query": "python developer"
    }
  }
}

Requests

sent from your browser, in order
  1. 1GET/jobs/q-{{params.query}}-jobsServer-rendered keyword page /jobs/q-<query>-jobs (read-only GET). Each job is div[data-testid='job-card'] with a detail link data-testid='job-search-job-detail-link' and the company name in the card header.

Parameters

from your agent
querystringrequiredJob title, skill or keyword, e.g. 'python developer', 'devops', 'cybersecurity'

Returns

to your agent
jobsobject[]company, title, url
querystring

Where it can send

  • www.dice.com

Anything else is blocked by the extension.

Reads from your session

Nothing. Your browser attaches the site's cookies by itself.

Used only in requests to the addresses on the left. Never sent to wield.run or your agent.

Checks

a run passes when
  • length(output.jobs) > `0`
  • length(output.jobs[?title != `null`]) == length(output.jobs)
  • length(output.jobs[?starts_with(url, 'https://www.dice.com/job-detail/')]) == length(output.jobs)

Raw recipe

Served as canonical JSON from /api/v1/recipes/dice.com/search-jobs, so its sha256 matches the ETag and the index.

Check it yourself
curl -s https://wield.run/api/v1/recipes/dice.com/search-jobs | shasum -a 256
# 57ba91aaec1c55ad0bb52efc9c5fb47a0a57c9e87f870f54cf9ffec5fe02100e
dice.com/search-jobs.json, v1
{
  "description": "Searches Dice.com tech job listings like its keyword job page: job title, company, link and job id. First page of results (about 20 jobs). Returns an empty list when nothing matches.",
  "effect": "read",
  "id": "dice.com/search-jobs",
  "keywords": [
    "dice",
    "dice.com",
    "tech jobs",
    "technology jobs",
    "it jobs",
    "software jobs",
    "developer jobs",
    "programmer",
    "engineer jobs",
    "cybersecurity jobs",
    "devops",
    "python",
    "job search",
    "careers"
  ],
  "output": {
    "schema": {
      "properties": {
        "jobs": {
          "items": {
            "properties": {
              "company": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "title": {
                "type": "string"
              },
              "url": {
                "type": "string"
              }
            },
            "required": [
              "title",
              "url"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "query": {
          "type": "string"
        }
      },
      "required": [
        "query",
        "jobs"
      ],
      "type": "object"
    },
    "value": "{query: params.query, jobs: map(&{title: title, company: company || `null`, url: join('', ['https://www.dice.com', href])}, steps.search.jobs[?title != `null` && href != `null`] || `[]`)}"
  },
  "params": {
    "additionalProperties": false,
    "properties": {
      "query": {
        "description": "Job title, skill or keyword, e.g. 'python developer', 'devops', 'cybersecurity'",
        "maxLength": 100,
        "minLength": 2,
        "type": "string"
      }
    },
    "required": [
      "query"
    ],
    "type": "object"
  },
  "provenance": {
    "method": "har",
    "notes": "One GET to /jobs/q-<query>-jobs, which answers 200 HTML with the first page of job cards (div[data-testid='job-card']). Title and link come from a[data-testid='job-search-job-detail-link']; the company name is the first p in the card header. Links are relative /job-detail/<guid> and are made absolute on www.dice.com. Only the first page is read. Location and pay are not extracted because the markup has no stable attribute for them.",
    "recorded_at": "2026-11-08T17:10:00.000Z",
    "recorded_by": "wield-forge (claude-haiku agent)"
  },
  "requires_login": false,
  "schema": "https://wield.run/schema/recipe/v1.json",
  "site": {
    "country": "US",
    "id": "dice.com",
    "language": "en",
    "name": "Dice",
    "origin": "https://www.dice.com",
    "origins": [
      "https://www.dice.com"
    ]
  },
  "steps": [
    {
      "description": "Server-rendered keyword page /jobs/q-<query>-jobs (read-only GET). Each job is div[data-testid='job-card'] with a detail link data-testid='job-search-job-detail-link' and the company name in the card header.",
      "expect": {
        "assert": "status == `200`",
        "content_type": "html",
        "status": [
          200
        ]
      },
      "extract": {
        "html_items": {
          "jobs": {
            "fields": {
              "company": {
                "selector": ".header p"
              },
              "href": {
                "attr": "href",
                "selector": "a[data-testid='job-search-job-detail-link']"
              },
              "title": {
                "selector": "a[data-testid='job-search-job-detail-link']"
              }
            },
            "max": 50,
            "selector": "div[data-testid='job-card']"
          }
        }
      },
      "id": "search",
      "request": {
        "headers": {
          "Accept": "text/html"
        },
        "method": "GET",
        "url": "/jobs/q-{{params.query}}-jobs"
      }
    }
  ],
  "task": "Search tech jobs on Dice",
  "tos": {
    "notes": "Not reviewed. One search page per call, the same page a visitor loads. The site's terms on automated access were not checked.",
    "reviewed": false
  },
  "verify": {
    "checks": [
      "length(output.jobs) > `0`",
      "length(output.jobs[?title != `null`]) == length(output.jobs)",
      "length(output.jobs[?starts_with(url, 'https://www.dice.com/job-detail/')]) == length(output.jobs)"
    ],
    "example_params": {
      "query": "python developer"
    },
    "max_ms": 5000
  },
  "version": 1
}