{
  "openapi": "3.0.1",
  "info": {
    "title": "Jobat.be Scraper",
    "description": "[💰 $0.95 / 1K] Extract job listings from Jobat.be, one of Belgium's largest job boards. Search by keyword, location and province in Dutch (Flanders) or French (Wallonia) for titles, companies, provinces, contract types, categories, posted dates, full descriptions and apply links.",
    "version": "1.0",
    "x-build-id": "P865qMvuxkUKZa00c"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~jobat-be-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-jobat-be-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/solidcode~jobat-be-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-jobat-be-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/solidcode~jobat-be-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-jobat-be-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": {
          "searchQueries": {
            "title": "Search Keywords",
            "maxItems": 50,
            "type": "array",
            "description": "Job titles or keywords to search for, such as 'Software Developer', 'Verpleegkundige', or 'Comptable'. Each keyword runs a separate search and results are merged and de-duplicated. Up to 50 keywords per run. They share the single 'Max Results per Run' budget below, so adding keywords widens the search without increasing what you pay. Leave empty if you only want to use direct Jobat.be URLs below.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "A city or municipality in Belgium, such as 'Brussels', 'Antwerpen', 'Gent', or 'Liège'. Leave empty to search all of Belgium."
          },
          "startUrls": {
            "title": "Direct Jobat.be URLs",
            "maxItems": 100,
            "type": "array",
            "description": "Paste full Jobat.be search-result URLs (for example https://www.jobat.be/nl/jobs/results/developer) and/or individual job-page URLs. Any filters baked into a search URL are scraped exactly as-is. Useful when you have already dialed in a search on the Jobat.be website. Up to 100 URLs per run.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResults": {
            "title": "Max Results per Run",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Total number of jobs to collect in this run, across all your search keywords and pasted URLs combined (up to 2,000). This is also exactly what you are billed for. With more than one keyword the total is shared out in turns, so every keyword is represented; whenever a keyword runs out of jobs, its unused share goes back to the keywords that still have results, so the run keeps going until it reaches your number or the site genuinely has nothing left. Use 50 for a quick scan or a higher number for deep research. Full job details are collected by default, and even a run at the full 2,000 finishes well inside the standard run time."
          },
          "province": {
            "title": "Province",
            "enum": [
              "",
              "antwerpen",
              "oost-vlaanderen",
              "west-vlaanderen",
              "vlaams-brabant",
              "limburg",
              "brussel",
              "waals-brabant",
              "henegouwen",
              "luik",
              "luxemburg",
              "namen"
            ],
            "type": "string",
            "description": "Restrict results to a single Belgian province (or the Brussels-Capital Region). Leave on 'Any' to include all provinces."
          },
          "contractType": {
            "title": "Contract Type",
            "enum": [
              "",
              "permanent",
              "temporary",
              "freelance",
              "internship",
              "student"
            ],
            "type": "string",
            "description": "Filter by contract type. Leave on 'Any' for all types."
          },
          "datePosted": {
            "title": "Posted Within",
            "enum": [
              "",
              "1",
              "3",
              "7",
              "30"
            ],
            "type": "string",
            "description": "Only show jobs published recently. Jobat.be counts whole days here, not hours: \"Posted today\" means every job put online since midnight Belgian time, so a run in the small hours finds only a handful and the very same run in the evening finds a full day's worth. Pick \"Last 3 days\" if you want a steady number of results whatever time your run starts."
          },
          "language": {
            "title": "Language",
            "enum": [
              "nl",
              "fr"
            ],
            "type": "string",
            "description": "Result language and site region. Jobat.be serves Dutch listings for Flanders and French listings for Wallonia."
          },
          "includeJobDetails": {
            "title": "Fetch Full Job Details",
            "type": "boolean",
            "description": "On by default, including for runs started through the API that leave it out. Opens each job's own page to fill in the full description, posting date, job category, region, employment type, contract type, benefits, salary and contact details. Turn it off only for a fast headcount-style scan: rows then carry just the title, company, location, benefits and links, and the description, date, category, region, contract, salary and contact fields come back empty."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}