{
  "openapi": "3.0.1",
  "info": {
    "title": "Werkzoeken.nl Scraper",
    "description": "Scrape job listings from Werkzoeken.nl — a comprehensive Dutch job aggregator. Filter by keyword, location, contract type and working hours. Full job descriptions in HTML, text and Markdown. Repost detection and daysOld filtering. No API key required.",
    "version": "0.0",
    "x-build-id": "PkldFlAadgsukWEir"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/unfenced-group~werkzoeken-nl-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-unfenced-group-werkzoeken-nl-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/unfenced-group~werkzoeken-nl-scraper/runs": {
      "post": {
        "operationId": "runs-sync-unfenced-group-werkzoeken-nl-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/unfenced-group~werkzoeken-nl-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-unfenced-group-werkzoeken-nl-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchQuery": {
            "title": "🔍 Search keywords",
            "type": "string",
            "description": "Job title, keyword, or profession — e.g. `developer`, `chauffeur`, `verpleegkundige`.",
            "default": ""
          },
          "location": {
            "title": "📍 Location",
            "type": "string",
            "description": "City or region — e.g. `Amsterdam`, `Rotterdam`, `Den Haag`.",
            "default": ""
          },
          "radius": {
            "title": "📡 Search radius (km)",
            "type": "string",
            "description": "Search radius around location in kilometres — e.g. `10`, `25`, `50`.",
            "default": ""
          },
          "contractType": {
            "title": "📝 Contract type",
            "type": "string",
            "description": "Filter by contract type: fulltime, parttime, freelance, or temporary."
          },
          "hoursPerWeek": {
            "title": "⏰ Hours per week",
            "type": "string",
            "description": "Filter by working hours per week, e.g. 32 or 40.",
            "default": ""
          },
          "educationLevel": {
            "title": "🎓 Education level",
            "type": "string",
            "description": "Required education level — e.g. `MBO`, `HBO`, `WO`.",
            "default": ""
          },
          "employerType": {
            "title": "🏢 Employer type",
            "type": "string",
            "description": "Filter by employer type: direct (employer) or uitzendbureau (staffing agency).",
            "default": ""
          },
          "minSalary": {
            "title": "💰 Min salary (€/month)",
            "type": "string",
            "description": "Minimum monthly salary filter — e.g. `2500`, `3000`.",
            "default": ""
          },
          "daysOld": {
            "title": "📅 Max age (days)",
            "type": "string",
            "description": "Only return jobs posted within this many days — e.g. `7` for this week, `1` for today.",
            "default": ""
          },
          "sortBy": {
            "title": "🔀 Sort by",
            "enum": [
              "",
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "Sort order for results (e.g. by date or relevance).",
            "default": ""
          },
          "fetchDetails": {
            "title": "📋 Fetch full job details",
            "type": "boolean",
            "description": "Visit each listing page to get the full job description (HTML, plain text, Markdown) and apply URL. Slower but yields much richer output.",
            "default": false
          },
          "skipReposts": {
            "title": "🚫 Skip reposts",
            "type": "boolean",
            "description": "Exclude listings detected as reposts of previously seen jobs (same fingerprint).",
            "default": false
          },
          "incrementalMode": {
            "title": "♻️ Incremental mode",
            "type": "boolean",
            "description": "Only emit NEW, UPDATED, and REAPPEARED jobs compared to the previous run. Run on a schedule to get a daily feed of changes without reprocessing the full dataset.",
            "default": false
          },
          "stateKey": {
            "title": "🔑 State key (incremental)",
            "type": "string",
            "description": "Optional stable identifier for the tracked search. Leave empty to auto-derive from your search inputs — different keyword/location combinations get isolated state automatically.",
            "default": ""
          },
          "compact": {
            "title": "📦 Compact output (LLM / agent mode)",
            "type": "boolean",
            "description": "Return core fields only (id, title, company, city, contractType, salary, url, changeStatus). Reduces payload size for AI-agent and MCP pipelines.",
            "default": false
          },
          "descriptionFormat": {
            "title": "📄 Description format",
            "enum": [
              "all",
              "text",
              "html",
              "markdown"
            ],
            "type": "string",
            "description": "Choose which description representation to include. `all` keeps HTML + plain text + Markdown; the others drop the variants you don't need.",
            "default": "all"
          },
          "descriptionMaxLength": {
            "title": "✂️ Description max length (chars)",
            "minimum": 0,
            "type": "integer",
            "description": "Truncate description fields to this many characters. 0 = no truncation. Useful for LLM context limits.",
            "default": 0
          },
          "excludeEmptyFields": {
            "title": "🗑️ Exclude empty fields",
            "type": "boolean",
            "description": "Drop null, empty-string, and empty-array fields from each record before saving. Produces smaller, cleaner payloads for AI agents and dashboards.",
            "default": false
          },
          "telegramToken": {
            "title": "🤖 Telegram bot token",
            "type": "string",
            "description": "Telegram bot token from @BotFather. Required for Telegram notifications.",
            "default": ""
          },
          "telegramChatId": {
            "title": "💬 Telegram chat ID",
            "type": "string",
            "description": "Telegram chat or channel ID where alerts are sent — e.g. `-100123456789` for a private group or `@yourchannel`.",
            "default": ""
          },
          "discordWebhookUrl": {
            "title": "🎮 Discord webhook URL",
            "type": "string",
            "description": "Discord incoming webhook URL. Get one from Server Settings → Integrations → Webhooks.",
            "default": ""
          },
          "slackWebhookUrl": {
            "title": "💼 Slack webhook URL",
            "type": "string",
            "description": "Slack incoming webhook URL. Create at api.slack.com/messaging/webhooks.",
            "default": ""
          },
          "webhookUrl": {
            "title": "🪝 Generic webhook URL",
            "type": "string",
            "description": "Receives a POST with `{ jobs: [...], meta: { total, searchQuery, location } }`. Works with n8n, Make, Zapier, or any custom backend.",
            "default": ""
          },
          "webhookHeaders": {
            "title": "🔑 Webhook headers",
            "type": "object",
            "description": "Optional headers sent with the webhook POST — e.g. `{\"Authorization\": \"Bearer xyz\"}`."
          },
          "notificationLimit": {
            "title": "📊 Max jobs per notification",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum jobs included in each notification message (1–20). Extra jobs stay in the dataset; the notification shows a summary line.",
            "default": 5
          },
          "notifyOnlyChanges": {
            "title": "🔄 Notify only new / updated",
            "type": "boolean",
            "description": "When incremental mode is on, only send notifications for NEW, UPDATED, and REAPPEARED jobs. Has no effect outside incremental mode.",
            "default": false
          },
          "maxItems": {
            "title": "💯 Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of results to return. Set to 0 for unlimited.",
            "default": 100
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}