Sign inTry it

Search job listings on jobup.ch.

Searches jobup.ch, the Swiss job board, like its job list: job title, company, place of work and link as shown on the card. First results page only (about 20 jobs).

No reports yetRead-only, no login
Site
jobup.ch, Switzerland
Version
v1
Runs, last 7 days
No reports yet
sha256
da1e9ce4d850…

Run it with your agent

after installing Wield

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

“Search job listings on jobup.ch.”

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

{
  "tool": "run",
  "arguments": {
    "recipe_id": "jobup.ch/search-jobs",
    "params": {
      "query": "Informatiker"
    }
  }
}

Requests

sent from your browser, in order
  1. 1GET/en/jobs/?termServer-rendered job list /en/jobs/?term=...; read-only GET. Each job is a link a[data-cy='job-link'] around a div[data-cy='serp-item'] with the title in its title attribute.

Parameters

from your agent
querystringrequiredJob title or keyword, e.g. 'Informatiker', 'Pflegefachfrau', 'Buchhalter'

Returns

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

Where it can send

  • www.jobup.ch

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[?company != `null`]) > `0`
  • length(output.jobs[?starts_with(url, 'https://www.jobup.ch/en/jobs/detail/')]) == length(output.jobs)

Raw recipe

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

Check it yourself
curl -s https://wield.run/api/v1/recipes/jobup.ch/search-jobs | shasum -a 256
# da1e9ce4d85021a721573a1911121a72e3cb4a6b2325bf83baf459e6fccd26a3
jobup.ch/search-jobs.json, v1
{
  "description": "Searches jobup.ch, the Swiss job board, like its job list: job title, company, place of work and link as shown on the card. First results page only (about 20 jobs).",
  "effect": "read",
  "id": "jobup.ch/search-jobs",
  "keywords": [
    "jobup",
    "jobup.ch",
    "jobs",
    "stellen",
    "stellenangebote",
    "arbeit",
    "job",
    "schweiz",
    "switzerland",
    "informatiker",
    "pflege",
    "buchhalter",
    "emplois",
    "vacancies"
  ],
  "output": {
    "schema": {
      "properties": {
        "jobs": {
          "items": {
            "properties": {
              "company": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "place_of_work": {
                "description": "Place of work as shown on the card, e.g. 'Bulle'",
                "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: steps.search.jobs[?title != `null` && href != `null`].{title: title, company: company || `null`, place_of_work: place || `null`, url: join('', ['https://www.jobup.ch', href])}}"
  },
  "params": {
    "additionalProperties": false,
    "properties": {
      "query": {
        "description": "Job title or keyword, e.g. 'Informatiker', 'Pflegefachfrau', 'Buchhalter'",
        "maxLength": 100,
        "minLength": 2,
        "type": "string"
      }
    },
    "required": [
      "query"
    ],
    "type": "object"
  },
  "provenance": {
    "method": "har",
    "notes": "GET /en/jobs/?term=<query> returns 200 HTML with the job list. Each job is a.job-link (data-cy='job-link') with the title in its title attribute and a relative href /en/jobs/detail/<id>/. The company is the paragraph after the logo; place and workload are label/value pairs on the card. The /en/?s= search of the home page does not return jobs, so /en/jobs/ is used. No cross-site hosts are called.",
    "recorded_at": "2026-11-08T17:05:00.000Z",
    "recorded_by": "wield-forge (claude-haiku agent)"
  },
  "requires_login": false,
  "schema": "https://wield.run/schema/recipe/v1.json",
  "site": {
    "country": "CH",
    "id": "jobup.ch",
    "language": "de",
    "name": "jobup.ch",
    "origin": "https://www.jobup.ch",
    "origins": [
      "https://www.jobup.ch"
    ]
  },
  "steps": [
    {
      "description": "Server-rendered job list /en/jobs/?term=...; read-only GET. Each job is a link a[data-cy='job-link'] around a div[data-cy='serp-item'] with the title in its title attribute.",
      "expect": {
        "content_type": "html",
        "status": [
          200
        ]
      },
      "extract": {
        "html_items": {
          "jobs": {
            "fields": {
              "company": {
                "selector": "div:has(> picture) + p"
              },
              "href": {
                "attr": "href",
                "selector": ""
              },
              "place": {
                "selector": "div:has(> span) > p"
              },
              "title": {
                "attr": "title",
                "selector": ""
              }
            },
            "max": 60,
            "selector": "a[data-cy='job-link']"
          }
        }
      },
      "id": "search",
      "request": {
        "headers": {
          "Accept": "text/html"
        },
        "method": "GET",
        "query": {
          "term": "{{params.query}}"
        },
        "url": "/en/jobs/"
      }
    }
  ],
  "task": "Search job listings on jobup.ch",
  "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[?company != `null`]) > `0`",
      "length(output.jobs[?starts_with(url, 'https://www.jobup.ch/en/jobs/detail/')]) == length(output.jobs)"
    ],
    "example_params": {
      "query": "Informatiker"
    },
    "max_ms": 5000
  },
  "version": 1
}