{
  "openapi": "3.0.1",
  "info": {
    "title": "HelloWork Jobs Scraper",
    "description": "The HelloWork Jobs Scraper extracts French job listings from HelloWork.com by keyword and location, capturing titles, companies, contracts, exact vs approximate search matches, recruiter vs estimated salaries, advertiser types and full descriptions — ideal for recruiting and salary benchmarking.",
    "version": "0.0",
    "x-build-id": "j2l4phGZdY73oirsh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/piotrv1001~hellowork-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-piotrv1001-hellowork-jobs-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/piotrv1001~hellowork-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-piotrv1001-hellowork-jobs-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/piotrv1001~hellowork-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-piotrv1001-hellowork-jobs-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": {
          "keywords": {
            "title": "Job title or keyword",
            "type": "string",
            "description": "What to search for, e.g. `développeur`, `comptable`, `infirmier`, `commercial`. Leave empty to get every job in the location."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "A French town, postcode, department or region, e.g. `Nantes`, `35000`, `Bretagne`. Unknown places are rejected instead of silently searching all of France. Leave empty to search nationwide."
          },
          "radiusKm": {
            "title": "Radius around the location",
            "enum": [
              "0",
              "5",
              "10",
              "20",
              "50"
            ],
            "type": "string",
            "description": "How far around the location to search. `0 km` keeps only the town itself. HelloWork's own default is 20 km.",
            "default": "20"
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "Only jobs with one of these contracts. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "CDI",
                "CDD",
                "Travail_temp",
                "Stage",
                "Alternance",
                "Independant",
                "Freelance",
                "Franchise",
                "Fonctionnaire",
                "Associe",
                "Stage_de_lycee"
              ],
              "enumTitles": [
                "CDI (permanent)",
                "CDD (fixed-term)",
                "Intérim (temporary)",
                "Stage (internship)",
                "Alternance (work-study)",
                "Indépendant",
                "Freelance",
                "Franchise",
                "Fonctionnaire (civil service)",
                "Associé (partner)",
                "Stage de lycée"
              ]
            }
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "all",
              "h",
              "d",
              "w",
              "m"
            ],
            "type": "string",
            "description": "Only jobs posted recently.",
            "default": "all"
          },
          "exactMatchesOnly": {
            "title": "Exact matches only",
            "type": "boolean",
            "description": "HelloWork pads searches with approximate matches (similar titles, nearby places). Every job carries the site's own `searchMatch` label (`exact` or `approximate`); turn this on to drop the approximate ones. Dropped jobs are not charged and are counted in the run summary.",
            "default": false
          },
          "startUrls": {
            "title": "HelloWork URLs",
            "type": "array",
            "description": "Search pages copied from your browser (with any filters applied on the site), job list pages such as `https://www.hellowork.com/fr-fr/emploi/metier_developpeur-informatique-ville_lyon-69000.html`, or single job pages like `https://www.hellowork.com/fr-fr/emplois/83605035.html`. The radius, contract and date inputs above apply only to the keyword search.",
            "items": {
              "type": "string"
            }
          },
          "scrapeDetails": {
            "title": "Scrape full job details",
            "type": "boolean",
            "description": "Open every job and add the salary with its source (recruiter-provided vs HelloWork estimate, never mixed), the advertiser type (ESN, recruitment agency, temp agency), full description and candidate profile, postcode and region, education, experience, skills, industry and exact posting and expiry dates. Charged as a job detail instead of a job listing. Job page URLs always include full details.",
            "default": false
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of jobs to save.",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy used to reach hellowork.com. The default works for most runs.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}