{
  "title": "EURES Job Vacancy Scraper Input",
  "description": "Search live job vacancies on EURES (the EU's job mobility portal), or fetch full details for specific job vacancy IDs.",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "mode": {
      "title": "Mode",
      "type": "string",
      "description": "What to fetch.",
      "editor": "select",
      "enum": [
        "search",
        "byIds"
      ],
      "enumTitles": [
        "Search job vacancies",
        "Lookup by vacancy ID or URL"
      ],
      "default": "search",
      "prefill": "search"
    },
    "searchQuery": {
      "title": "Search query",
      "type": "string",
      "description": "Free-text keyword to search for (mode=search). Matches job title, description and employer name depending on `searchIn`.",
      "editor": "textfield",
      "default": "developer",
      "prefill": "developer"
    },
    "searchIn": {
      "title": "Search scope",
      "type": "string",
      "description": "Where the search query is matched.",
      "editor": "select",
      "enum": [
        "EVERYWHERE",
        "TITLE",
        "DESCRIPTION",
        "EMPLOYER"
      ],
      "enumTitles": [
        "Everywhere (title + description + employer)",
        "Job title only",
        "Job description only",
        "Employer name only"
      ],
      "default": "EVERYWHERE",
      "prefill": "EVERYWHERE"
    },
    "jobIds": {
      "title": "Job vacancy IDs or URLs (mode=byIds)",
      "type": "array",
      "description": "EURES job vacancy IDs or full detail-page URLs, as found in the `jobId` or `sourceUrl` output field, e.g. `MzQwNDYwIDU` or `https://europa.eu/eures/portal/jv-se/jv-details/MzQwNDYwIDU`.",
      "editor": "stringList",
      "default": [],
      "prefill": []
    },
    "countries": {
      "title": "Countries",
      "type": "array",
      "description": "Restrict results to job locations in these countries. Leave empty for all EEA countries.",
      "editor": "select",
      "items": {
        "type": "string",
        "enum": [
          "at",
          "be",
          "bg",
          "ch",
          "cy",
          "cz",
          "de",
          "dk",
          "ee",
          "el",
          "es",
          "fi",
          "fr",
          "hr",
          "hu",
          "ie",
          "is",
          "it",
          "li",
          "lt",
          "lu",
          "lv",
          "mt",
          "nl",
          "no",
          "pl",
          "pt",
          "ro",
          "se",
          "si",
          "sk"
        ],
        "enumTitles": [
          "Austria",
          "Belgium",
          "Bulgaria",
          "Switzerland",
          "Cyprus",
          "Czechia",
          "Germany",
          "Denmark",
          "Estonia",
          "Greece",
          "Spain",
          "Finland",
          "France",
          "Croatia",
          "Hungary",
          "Ireland",
          "Iceland",
          "Italy",
          "Liechtenstein",
          "Lithuania",
          "Luxembourg",
          "Latvia",
          "Malta",
          "Netherlands",
          "Norway",
          "Poland",
          "Portugal",
          "Romania",
          "Sweden",
          "Slovenia",
          "Slovakia"
        ]
      },
      "uniqueItems": true,
      "default": [],
      "prefill": []
    },
    "regionCodes": {
      "title": "Region codes (NUTS)",
      "type": "array",
      "description": "Restrict results to job locations in these region codes (finer-grained than `countries`), e.g. `deb` for Berlin (Germany) or `no0b` for Trondelag (Norway). Find a region's code in the `nutsRegionCodes` output field of a previous run, or on the EURES advanced-search location picker. Finer NUTS codes are automatically matched to the nearest supported parent region. Combines with `countries` as an OR (union of matches).",
      "editor": "stringList",
      "default": [],
      "prefill": []
    },
    "sectors": {
      "title": "Business sector (NACE)",
      "type": "array",
      "description": "Restrict results to these NACE Rev.2 business sectors.",
      "editor": "select",
      "items": {
        "type": "string",
        "enum": [
          "a",
          "b",
          "c",
          "d",
          "e",
          "f",
          "g",
          "h",
          "i",
          "j",
          "k",
          "l",
          "m",
          "n",
          "o",
          "p",
          "q",
          "r",
          "s",
          "t",
          "u",
          "v"
        ],
        "enumTitles": [
          "Agriculture, forestry and fishing",
          "Mining and quarrying",
          "Manufacturing",
          "Electricity, gas, steam and air conditioning supply",
          "Water supply, sewerage, waste management",
          "Construction",
          "Wholesale and retail trade; repair of motor vehicles",
          "Transportation and storage",
          "Accommodation and food service activities",
          "Information and communication",
          "Financial and insurance activities",
          "Real estate activities",
          "Professional, scientific and technical activities",
          "Administrative and support service activities",
          "Public administration and defence; social security",
          "Education",
          "Human health and social work activities",
          "Arts, entertainment and recreation",
          "Other service activities",
          "Activities of households as employers",
          "Activities of extraterritorial organisations and bodies",
          "Other / not classified"
        ]
      },
      "uniqueItems": true,
      "default": [],
      "prefill": []
    },
    "positionOfferingCodes": {
      "title": "Contract type",
      "type": "array",
      "description": "Restrict results to these contract/position offering types.",
      "editor": "select",
      "items": {
        "type": "string",
        "enum": [
          "directhire",
          "temporary",
          "temporarytohire",
          "contracttohire",
          "contract",
          "apprenticeship",
          "selfemployed",
          "oncall",
          "seasonal",
          "internship",
          "recruitmentreserve",
          "volunteer"
        ],
        "enumTitles": [
          "Direct hire",
          "Temporary",
          "Temporary to hire",
          "Contract to hire",
          "Contract",
          "Apprenticeship",
          "Self-employed",
          "On-call",
          "Seasonal",
          "Internship",
          "Recruitment reserve",
          "Volunteer"
        ]
      },
      "uniqueItems": true,
      "default": [],
      "prefill": []
    },
    "positionScheduleCodes": {
      "title": "Work schedule",
      "type": "array",
      "description": "Restrict results to these work schedules.",
      "editor": "select",
      "items": {
        "type": "string",
        "enum": [
          "fulltime",
          "parttime",
          "flextime"
        ],
        "enumTitles": [
          "Full-time",
          "Part-time",
          "Flexible"
        ]
      },
      "uniqueItems": true,
      "default": [],
      "prefill": []
    },
    "educationLevels": {
      "title": "Education level",
      "type": "array",
      "description": "Restrict results to these required education levels.",
      "editor": "select",
      "items": {
        "type": "string",
        "enum": [
          "basic",
          "medium",
          "tertiary",
          "bachelor",
          "master",
          "doctoral",
          "not_classified"
        ],
        "enumTitles": [
          "Basic",
          "Medium (secondary)",
          "Tertiary",
          "Bachelor",
          "Master",
          "Doctoral",
          "Not classified"
        ]
      },
      "uniqueItems": true,
      "default": [],
      "prefill": []
    },
    "experienceLevels": {
      "title": "Required experience",
      "type": "array",
      "description": "Restrict results to these required-experience bands.",
      "editor": "select",
      "items": {
        "type": "string",
        "enum": [
          "none_required",
          "up_to_1_year",
          "between_1_and_2_years",
          "between_2_and_5_years",
          "more_than_5_years"
        ],
        "enumTitles": [
          "None required",
          "Up to 1 year",
          "1 to 2 years",
          "2 to 5 years",
          "More than 5 years"
        ]
      },
      "uniqueItems": true,
      "default": [],
      "prefill": []
    },
    "languageSkills": {
      "title": "Required language skills",
      "type": "array",
      "description": "Restrict results to jobs requiring at least basic proficiency in these languages.",
      "editor": "select",
      "items": {
        "type": "string",
        "enum": [
          "bg",
          "cs",
          "da",
          "de",
          "et",
          "el",
          "en",
          "es",
          "fr",
          "ga",
          "hr",
          "is",
          "it",
          "lv",
          "lt",
          "hu",
          "mt",
          "nl",
          "no",
          "pl",
          "pt",
          "ro",
          "sk",
          "sl",
          "fi",
          "sv"
        ],
        "enumTitles": [
          "Bulgarian",
          "Czech",
          "Danish",
          "German",
          "Estonian",
          "Greek",
          "English",
          "Spanish",
          "French",
          "Irish",
          "Croatian",
          "Icelandic",
          "Italian",
          "Latvian",
          "Lithuanian",
          "Hungarian",
          "Maltese",
          "Dutch",
          "Norwegian",
          "Polish",
          "Portuguese",
          "Romanian",
          "Slovak",
          "Slovenian",
          "Finnish",
          "Swedish"
        ]
      },
      "uniqueItems": true,
      "default": [],
      "prefill": []
    },
    "occupationUris": {
      "title": "ESCO occupation or ISCO URIs",
      "type": "array",
      "description": "Restrict results to jobs classified under these ESCO occupation URIs or broader ISCO group URIs. Copy occupation values from the `occupationUris` field of a previous search result, e.g. `http://data.europa.eu/esco/occupation/f2b15a0e-e65a-438a-affb-29b9d50b77d1`; an ISCO URI such as `http://data.europa.eu/esco/isco/C2221` matches every occupation in that ISCO group.",
      "editor": "stringList",
      "default": [],
      "prefill": []
    },
    "skillUris": {
      "title": "ESCO skill URIs",
      "type": "array",
      "description": "Restrict results to jobs requiring these ESCO skill URIs. Copy values from the `requiredSkills` field of a previous `mode=byIds` result, e.g. `http://data.europa.eu/esco/skill/ccd0a1d9-afda-43d9-b901-96344886e14d`.",
      "editor": "stringList",
      "default": [],
      "prefill": []
    },
    "benefitCodes": {
      "title": "Extra benefits offered",
      "type": "array",
      "description": "Restrict results to jobs that explicitly advertise these extra (non-salary) benefits. Note: most EURES listings do not disclose extra-benefit information at all, so this filter narrows results significantly -- leave empty to include all jobs regardless of disclosed benefits.",
      "editor": "select",
      "items": {
        "type": "string",
        "enum": [
          "1",
          "2",
          "3",
          "4",
          "5",
          "6",
          "7",
          "8",
          "9",
          "10",
          "11",
          "12",
          "13",
          "14",
          "15"
        ],
        "enumTitles": [
          "Accommodation included",
          "Meals included",
          "Relocation assisted",
          "Travel expenses",
          "Medical insurance",
          "Dental insurance",
          "Vision insurance",
          "Life insurance",
          "Short-term disability insurance",
          "Long-term disability insurance",
          "Retirement plan",
          "Company car possible",
          "Relocation assistance",
          "Expatriate benefits",
          "Other benefits"
        ]
      },
      "uniqueItems": true,
      "default": [],
      "prefill": []
    },
    "euresFlagOnly": {
      "title": "EURES-flagged jobs only",
      "type": "boolean",
      "description": "Only return jobs explicitly flagged as cross-border EURES vacancies (employer welcomes candidates from other EEA countries).",
      "default": false,
      "prefill": false
    },
    "includeDetails": {
      "title": "Include full vacancy details",
      "type": "boolean",
      "description": "Also fetch each search result's detail record — salary, benefits, contacts, application link and full location. One extra request per emitted record; off by default for fast, low-cost searches.",
      "default": false,
      "prefill": false
    },
    "publicationPeriod": {
      "title": "EURES recency window",
      "type": "string",
      "description": "EURES's own recency filter: only return vacancies received or last re-synced within this window (output field `lastModifiedDate`). This is not the original employer posting date (`publicationDate`) -- national employment services periodically re-sync unchanged listings, so an older vacancy can appear in a recent window.",
      "editor": "select",
      "enum": [
        "",
        "LAST_DAY",
        "LAST_THREE_DAYS",
        "LAST_WEEK",
        "LAST_MONTH"
      ],
      "enumTitles": [
        "Any time",
        "Last day",
        "Last three days",
        "Last week",
        "Last month"
      ],
      "default": "",
      "prefill": ""
    },
    "minNumberOfPosts": {
      "title": "Minimum number of open posts",
      "type": "integer",
      "description": "Only return job vacancies offering at least this many open posts/positions (useful for finding bulk-hiring vacancies).",
      "minimum": 1,
      "maximum": 999
    },
    "sortBy": {
      "title": "Sort by",
      "type": "string",
      "description": "Order of returned results. `MOST_RECENT` orders by each listing's last-synced/last-modified timestamp in EURES's own index (output field `lastModifiedDate`), which usually but not always matches `publicationDate` -- national employment services periodically re-sync unchanged listings, which refreshes this timestamp without a new posting. Note: when `searchQuery` is set, results are always ordered by relevance (best match) regardless of this setting, since EURES cannot reliably combine keyword search with most-recent ordering.",
      "editor": "select",
      "enum": [
        "BEST_MATCH",
        "MOST_RECENT"
      ],
      "enumTitles": [
        "Relevance (best match)",
        "Most recent"
      ],
      "default": "BEST_MATCH",
      "prefill": "BEST_MATCH"
    },
    "maxItems": {
      "title": "Max items",
      "type": "integer",
      "description": "Hard cap on emitted records.",
      "minimum": 1,
      "maximum": 2000,
      "default": 50,
      "prefill": 3
    }
  },
  "required": [
    "mode"
  ]
}
