{
  "openapi": "3.0.1",
  "info": {
    "title": "Nationale Vacaturebank Scraper",
    "description": "Scrape listings from Nationale Vacaturebank. #1 Dutch job board. Structured output. No API key required.",
    "version": "0.0",
    "x-build-id": "f5vsRuChfabI5E5Pi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nocodeventure~nationale-vacaturebank-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nocodeventure-nationale-vacaturebank-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/nocodeventure~nationale-vacaturebank-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nocodeventure-nationale-vacaturebank-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/nocodeventure~nationale-vacaturebank-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nocodeventure-nationale-vacaturebank-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": {
          "searchTerm": {
            "title": "Zoekterm",
            "type": "string",
            "description": "Functie- of trefwoordzoek — NVB filter `dcoTitle` (bijv. Developer).",
            "default": ""
          },
          "city": {
            "title": "Stad",
            "type": "string",
            "description": "Plaats voor locatiefilter — NVB `city` (bijv. Amsterdam). Werkt samen met coördinaten en straal.",
            "default": ""
          },
          "latitude": {
            "title": "Breedtegraad",
            "type": "number",
            "description": "WGS84-latitude (bijv. 52.371002 voor Amsterdam). Gebruik samen met **Lengtegraad** en **Straal (km)**."
          },
          "longitude": {
            "title": "Lengtegraad",
            "type": "number",
            "description": "WGS84-longitude (bijv. 4.904176). Gebruik samen met **Breedtegraad** en **Straal (km)**."
          },
          "distanceKm": {
            "title": "Straal (km)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Zoekradius in kilometer — NVB `distance`. Alleen actief als breedte-, lengtegraad en straal alle drie gezet zijn (1–500)."
          },
          "sort": {
            "title": "Sorteren op",
            "enum": [
              "relevance",
              "date",
              "popularity",
              "distance",
              "random"
            ],
            "type": "string",
            "description": "NVB API `sort` — see `src/filters/sort.ts`. Values `relevance`, `date`, `popularity` match site **Sorteren op**; `distance` and `random` are also accepted (see `nationalevacaturebank-docs/jobs_request.md` `_links`).",
            "default": "relevance"
          },
          "limit": {
            "title": "Jobs per page",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Page size (1–100). NVB API `limit` query parameter. The NVB website uses 10 by default, which causes pagination across multiple pages. Higher values return more results per request but reduce pagination.",
            "default": 10
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of listing pages to fetch (0 = all pages). Each listing page is one billable fetch; each vacancy on that page triggers one more billable fetch for the full vacancy record (best chance for contact when NVB publishes it).",
            "default": 1
          },
          "hoursPreset": {
            "title": "Uren",
            "enum": [
              "",
              "fulltime",
              "parttime"
            ],
            "type": "string",
            "description": "NVB **Uren**: Fulltime → `workingHoursMin:33` & `workingHoursMax:40`; Parttime → `1` & `32`. When set, overrides manual working hours below.",
            "default": ""
          },
          "workingHoursMin": {
            "title": "Working hours (min)",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Minimum hours per week (`workingHoursMin`). Ignored when **Uren** is Fulltime or Parttime."
          },
          "workingHoursMax": {
            "title": "Working hours (max)",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Maximum hours per week (`workingHoursMax`). Ignored when **Uren** is Fulltime or Parttime."
          },
          "companyTypes": {
            "title": "Geplaatst door",
            "type": "array",
            "description": "Filter `companyType` — NVB API values; see `src/filters/companyType.ts`.",
            "items": {
              "type": "string",
              "enum": [
                "direct_employer_and_media_bureau",
                "human_resource_manager"
              ],
              "enumTitles": [
                "Werkgevers",
                "Recruitment bureau's"
              ]
            },
            "default": []
          },
          "contractTypes": {
            "title": "Dienstverband",
            "type": "array",
            "description": "Filter `contractType` — see `src/filters/contractType.ts`.",
            "items": {
              "type": "string",
              "enum": [
                "Bijbaan",
                "Freelance",
                "Interim",
                "Leer-werk overeenkomst",
                "Stage",
                "Thuiswerk",
                "Tijdelijk",
                "Vakantiewerk",
                "Vast",
                "Vrijwilliger",
                "ZZP",
                "Zelfstandig/Franchise"
              ],
              "enumTitles": [
                "Bijbaan",
                "Freelance",
                "Interim",
                "Leer-werk overeenkomst",
                "Stage",
                "Thuiswerk",
                "Tijdelijk",
                "Vakantiewerk",
                "Vast",
                "Vrijwilliger",
                "ZZP",
                "Zelfstandig / Franchise"
              ]
            },
            "default": []
          },
          "careerLevels": {
            "title": "Career level",
            "type": "array",
            "description": "Filter `careerLevel` — see `src/filters/careerLevel.ts`.",
            "items": {
              "type": "string",
              "enum": [
                "Geen ervaring",
                "Starter",
                "Ervaren",
                "Leidinggevend",
                "Senior management",
                "Directie"
              ],
              "enumTitles": [
                "Geen ervaring",
                "Starter",
                "Ervaren",
                "Leidinggevend",
                "Senior management",
                "Directie"
              ]
            },
            "default": []
          },
          "industries": {
            "title": "Branche",
            "type": "array",
            "description": "Filter `industry` — see `src/filters/industry.ts`.",
            "items": {
              "type": "string",
              "enum": [
                "Banken/Financiële dienstverlening",
                "Bouw/Installatie",
                "Detailhandel",
                "Facilitaire dienstverlening",
                "Gezondheidszorg/Welzijn",
                "Horeca",
                "Industrie",
                "Juridische dienstverlening",
                "Landbouw/Bosbouw/Visserij",
                "Makelaardij/Vastgoed",
                "Media/Uitgeverijen/TV",
                "Overheid/Non-profit",
                "Techniek",
                "Transport/Opslag/Distributie",
                "Uitzend/Detachering/W&S",
                "Zakelijke dienstverlening",
                "Overig",
                "Accountancy",
                "Advies/Consultancy",
                "Afval en milieu",
                "Automotive",
                "Beveiliging/Bewaking",
                "Chemie/Petrochemie",
                "Elektronica",
                "Energie/Gas/Water",
                "FMCG",
                "Farmacie",
                "Handel/Groothandel",
                "ICT",
                "Internet",
                "Kunst/Cultuur/Entertainment",
                "Maritiem",
                "Mode/Textiel/Cosmetica",
                "Onderwijs/Opleiding",
                "Personen vervoer",
                "Reclame/PR/Communicatie",
                "Sport/Recreatie/Toerisme",
                "Telecom",
                "Verzekeringen/Assurantiën"
              ],
              "enumTitles": [
                "Banken / Financiële dienstverlening",
                "Bouw / Installatie",
                "Detailhandel",
                "Facilitaire dienstverlening",
                "Gezondheidszorg / Welzijn",
                "Horeca",
                "Industrie",
                "Juridische dienstverlening",
                "Landbouw / Bosbouw / Visserij",
                "Makelaardij / Vastgoed",
                "Media / Uitgeverijen / TV",
                "Overheid / Non-profit",
                "Techniek",
                "Transport / Opslag / Distributie",
                "Uitzend / Detachering / W&S",
                "Zakelijke dienstverlening",
                "Overig",
                "Accountancy",
                "Advies / Consultancy",
                "Afval en milieu",
                "Automotive",
                "Beveiliging / Bewaking",
                "Chemie / Petrochemie",
                "Elektronica",
                "Energie / Gas / Water",
                "FMCG",
                "Farmacie",
                "Handel / Groothandel",
                "ICT",
                "Internet",
                "Kunst / Cultuur / Entertainment",
                "Maritiem",
                "Mode / Textiel / Cosmetica",
                "Onderwijs / Opleiding",
                "Personen vervoer",
                "Reclame / PR / Communicatie",
                "Sport / Recreatie / Toerisme",
                "Telecom",
                "Verzekeringen / Assurantiën"
              ]
            },
            "default": []
          },
          "categories": {
            "title": "Category",
            "type": "array",
            "description": "Filter `category` — see `src/filters/category.ts`.",
            "items": {
              "type": "string",
              "enum": [
                "Administratief/Secretarieel",
                "Automatisering/Internet",
                "Beleid/Bestuur/Staf",
                "Beveiliging/Defensie/Politie",
                "Commercieel/Verkoop",
                "Consultancy/Advies",
                "Design/Creatie/Journalistiek",
                "Directie/Management algemeen",
                "Financieel/Accounting",
                "Financiele dienstverlening",
                "Horeca/Detailhandel",
                "Juridisch",
                "Marketing/PR/Communicatie",
                "Medisch/Zorg",
                "Onderwijs/Onderzoek/Wetenschap",
                "Productie/Uitvoerend",
                "Techniek",
                "Overig",
                "Klantenservice/Callcenter/Receptie",
                "HR/Training/Opleiding",
                "Inkoop/Logistiek/Transport"
              ],
              "enumTitles": [
                "Administratief / Secretarieel",
                "Automatisering / Internet",
                "Beleid / Bestuur / Staf",
                "Beveiliging / Defensie / Politie",
                "Commercieel / Verkoop",
                "Consultancy / Advies",
                "Design / Creatie / Journalistiek",
                "Directie / Management algemeen",
                "Financieel / Accounting",
                "Financiële dienstverlening",
                "Horeca / Detailhandel",
                "Juridisch",
                "Marketing / PR / Communicatie",
                "Medisch / Zorg",
                "Onderwijs / Onderzoek / Wetenschap",
                "Productie / Uitvoerend",
                "Techniek",
                "Overig",
                "Klantenservice / Callcenter / Receptie",
                "HR / Training / Opleiding",
                "Inkoop / Logistiek / Transport"
              ]
            },
            "default": []
          },
          "educationLevels": {
            "title": "Opleidingsniveau",
            "type": "array",
            "description": "Filter `educationLevel` — see `src/filters/educationLevel.ts`.",
            "items": {
              "type": "string",
              "enum": [
                "WO",
                "HBO",
                "MBO",
                "VWO",
                "HAVO",
                "VMBO/MAVO",
                "LBO",
                "Lagere school",
                "Postdoctoraal"
              ],
              "enumTitles": [
                "WO",
                "HBO",
                "MBO",
                "VWO",
                "HAVO",
                "VMBO / MAVO",
                "LBO",
                "Lagere school",
                "Postdoctoraal"
              ]
            },
            "default": []
          },
          "workingPlaces": {
            "title": "Werkplek",
            "type": "array",
            "description": "Filter `workingPlace` — see `src/filters/workingPlace.ts`.",
            "items": {
              "type": "string",
              "enum": [
                "Hybride",
                "Werken op afstand",
                "Werken op locatie"
              ],
              "enumTitles": [
                "Hybride",
                "Werken op afstand",
                "Werken op locatie"
              ]
            },
            "default": []
          },
          "salaryMin": {
            "title": "Salaris (minimum)",
            "minimum": 0,
            "maximum": 999999,
            "type": "integer",
            "description": "NVB `salaryMin` filter — minimum salary (e.g. 3500). Leave empty to skip."
          },
          "vacancyTypes": {
            "title": "Listing type",
            "type": "array",
            "description": "Filter `type` (e.g. spotlight) — see `src/filters/vacancyType.ts`.",
            "items": {
              "type": "string",
              "enum": [
                "spotlight"
              ],
              "enumTitles": [
                "Spotlight"
              ]
            },
            "default": []
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Maximum concurrent HTTP requests.",
            "default": 5
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Throttle requests per minute. Lower if you see HTTP 429.",
            "default": 120
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Recommended for larger runs to reduce rate limiting.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}