{
  "openapi": "3.0.1",
  "info": {
    "title": "HelloWork Jobs Scraper — Salaries & Company Data",
    "description": "Scrape current HelloWork jobs across France with salaries, contracts, remote status, locations, skills, full descriptions, requirements, company profiles and job URLs. Search multiple keywords and cities, apply flexible filters, and export clean French recruitment data to JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "G3gGuGcZtZDYo7dTn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/haketa~hellowork-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-haketa-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/haketa~hellowork-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-haketa-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/haketa~hellowork-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-haketa-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": {
          "searchKeywords": {
            "title": "🔎 Job keywords",
            "type": "array",
            "description": "Jobs, skills or professions to search. Every keyword is combined with every location, so adding more values returns more opportunities.",
            "default": [
              "développeur"
            ],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "📍 Locations",
            "type": "array",
            "description": "French cities, departments or regions. Leave empty for France-wide results. Each location creates an additional search.",
            "default": [
              "Paris"
            ],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 HelloWork search or job URLs",
            "type": "array",
            "description": "Optional HelloWork search pages or individual job URLs. These run in addition to keyword searches.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "contractTypes": {
            "title": "📄 Contract types",
            "uniqueItems": true,
            "type": "array",
            "description": "Select one or more contract types. Leave empty to include every contract.",
            "items": {
              "type": "string",
              "enum": [
                "CDI",
                "CDD",
                "Travail_temp",
                "Stage",
                "Alternance",
                "Independant",
                "Freelance",
                "Franchise",
                "Associe",
                "Fonctionnaire",
                "Stage_de_lycee"
              ],
              "enumTitles": [
                "CDI",
                "CDD",
                "Intérim",
                "Stage",
                "Alternance",
                "Indépendant",
                "Freelance",
                "Franchise",
                "Associé",
                "Fonctionnaire",
                "Stage de lycée"
              ]
            },
            "default": []
          },
          "remoteOnly": {
            "title": "🏠 Remote jobs only",
            "type": "boolean",
            "description": "Keep only listings that mention full, partial or occasional remote work.",
            "default": false
          },
          "postedWithinDays": {
            "title": "🗓️ Posted within days",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only recently posted jobs. Use 0 to disable this filter.",
            "default": 0
          },
          "minSalary": {
            "title": "💶 Minimum annual salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs whose published maximum annual salary reaches this value. Jobs without salary data are excluded when set. Use 0 for no filter.",
            "default": 0
          },
          "includeDetails": {
            "title": "✨ Enrich every job",
            "type": "boolean",
            "description": "Visit each job page for full description, requirements, skills, precise publication date, company profile, salary estimates and application metadata.",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Add the original formatted HTML alongside clean text when detail enrichment is enabled.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Total number of unique jobs saved across all searches. Increase this to collect more data in one run.",
            "default": 1000
          },
          "maxConcurrency": {
            "title": "Concurrent detail requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Recommended range: 6–12. Higher values may be faster but place more load on the source.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Direct requests are fastest and cheapest. Enable Apify Proxy only if your network is blocked.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}