{
  "openapi": "3.0.1",
  "info": {
    "title": "HelloWork Jobs Scraper",
    "description": "Scrape job offers from HelloWork.com (France's largest job board) by keyword, location and advanced filters. Outputs rich job data including salary, remote policy, company info and full HTML description.",
    "version": "0.1",
    "x-build-id": "FVBa47KuKfabAFXWH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/osamih~hellowork-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-osamih-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/osamih~hellowork-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-osamih-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/osamih~hellowork-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-osamih-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": "Search keywords",
            "type": "array",
            "description": "Job titles or search terms. One HelloWork search is run per keyword (e.g. <code>développeur web</code>, <code>comptable</code>, <code>data analyst</code>). Results from all searches are merged and de-duplicated.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, department or region in France (e.g. <code>Paris</code>, <code>Lyon</code>, <code>Bretagne</code>). Leave empty to search all of France."
          },
          "distanceKm": {
            "title": "Distance from location (km)",
            "enum": [
              "all",
              "0",
              "5",
              "10",
              "20",
              "50"
            ],
            "type": "string",
            "description": "Maximum radius around the location. Only applies when a location is set. \"Site default\" lets HelloWork decide (~20 km).",
            "default": "all"
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "Filter by contract type. Leave empty for all contract types.",
            "items": {
              "type": "string",
              "enum": [
                "CDI",
                "CDD",
                "Travail_temp",
                "Alternance",
                "Stage",
                "Stage_de_lycee",
                "Independant",
                "Freelance",
                "Franchise",
                "Fonctionnaire",
                "Associe"
              ],
              "enumTitles": [
                "Permanent (CDI)",
                "Fixed-term (CDD)",
                "Temporary / Interim",
                "Apprenticeship (Alternance)",
                "Internship (Stage)",
                "High-school internship",
                "Independent contractor",
                "Freelance",
                "Franchise",
                "Civil servant (Fonctionnaire)",
                "Business partner (Associé)"
              ]
            },
            "default": []
          },
          "publishedSince": {
            "title": "Published since",
            "enum": [
              "all",
              "24h",
              "3d",
              "7d",
              "30d"
            ],
            "type": "string",
            "description": "Only include offers published within this period.",
            "default": "all"
          },
          "remotePolicy": {
            "title": "Remote work policy",
            "type": "array",
            "description": "Filter by télétravail policy. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Complet",
                "Partiel",
                "Occasionnel",
                "Pas_teletravail"
              ],
              "enumTitles": [
                "Fully remote",
                "Partially remote",
                "Occasionally remote",
                "No remote work"
              ]
            },
            "default": []
          },
          "companyTypes": {
            "title": "Company types",
            "type": "array",
            "description": "Filter by the type of employer posting the offer. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Entreprises",
                "Cabinet_recr",
                "SSII",
                "Travail_temporaire",
                "Centre_formation"
              ],
              "enumTitles": [
                "Companies",
                "Recruiting firms",
                "IT services companies (ESN/SSII)",
                "Temp agencies",
                "Training centers"
              ]
            },
            "default": []
          },
          "experienceLevels": {
            "title": "Experience levels",
            "type": "array",
            "description": "Filter by required experience. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "0-1y",
                "2-3y",
                "4-5y",
                "6-10y",
                "gt10y",
                "unknown"
              ],
              "enumTitles": [
                "Less than 1 year",
                "2–3 years",
                "4–5 years",
                "6–10 years",
                "More than 10 years",
                "Not specified"
              ]
            },
            "default": []
          },
          "jobFunctions": {
            "title": "Job functions",
            "type": "array",
            "description": "Filter by job function / domain (métier). Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Achat",
                "Assistanat_admin_accueil",
                "BTP_gros_second_oeuvre",
                "Bureau_etude_R_D",
                "Commercial_particulier",
                "Commercial_professionnel",
                "Commercial_technico_com",
                "Commercial_vendeur",
                "Compta_gestion_finance_audit",
                "Dir_management_resp",
                "Dir_resp_centre_profit",
                "Import_export_inter",
                "Informatique_dev",
                "Informatique_dev_hard",
                "Informatique_syst_info",
                "Informatique_syst_reseaux",
                "Ingenierie_agro_agri",
                "Ingenierie_chimie_pharma_bio",
                "Ingenierie_electro_tech",
                "Ingenierie_meca_aero",
                "Ingenierie_telecom",
                "Juridique_droit",
                "Logistique_metiers_transport",
                "Marketing_com_graphisme",
                "Metiers_fonction_publique",
                "Negociation_gest_immo",
                "Production_gestion",
                "Production_operateur",
                "Qualite_securite_environnement",
                "RH_Personnel_Formation",
                "Restauration_hotellerie_tourisme",
                "SAV_Hotline",
                "Sante_social",
                "Services_pers_entreprises"
              ],
              "enumTitles": [
                "Purchasing",
                "Administrative support & reception",
                "Construction (structural & finishing)",
                "Design office / R&D",
                "Sales — consumers (B2C)",
                "Sales — businesses (B2B)",
                "Technical sales",
                "Retail sales",
                "Accounting, management, finance & audit",
                "Management & executive roles",
                "Profit-center / branch management",
                "Import-export & international",
                "IT — software development",
                "IT — hardware development",
                "IT — information systems",
                "IT — systems & networks",
                "Engineering — agronomy & agriculture",
                "Engineering — chemistry, pharma & biology",
                "Engineering — electronics & electrical",
                "Engineering — mechanical & aeronautics",
                "Engineering — telecoms",
                "Legal",
                "Logistics & transport roles",
                "Marketing, communication & graphic design",
                "Public sector roles",
                "Real estate negotiation & management",
                "Production — management",
                "Production — operators",
                "Quality, safety & environment (QSE)",
                "HR, personnel & training",
                "Catering, hospitality & tourism",
                "After-sales service & support",
                "Healthcare & social work",
                "Services to individuals & businesses"
              ]
            },
            "default": []
          },
          "sectors": {
            "title": "Industry sectors",
            "type": "array",
            "description": "Filter by the employer's industry sector. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Agri_peche",
                "BTP",
                "Banq_assur_finan",
                "Distrib_commerce",
                "Energie_envir",
                "Enseign_forma",
                "Immo",
                "Ind_aero",
                "Ind_agro",
                "Ind_auto_meca_nav",
                "Ind_hightech_telecom",
                "Ind_manufact",
                "Ind_petro",
                "Ind_pharma_bio_chim",
                "Inform_SSII",
                "Media_internet_com",
                "Resto",
                "Sante_social",
                "Serv_entreprise",
                "Serv_pers_part",
                "Serv_public_autre",
                "Serv_public_collec_terri",
                "Serv_public_etat",
                "Serv_public_hosp",
                "Tourism_hotel_loisir",
                "Transport_logist"
              ],
              "enumTitles": [
                "Agriculture & fishing",
                "Construction",
                "Banking, insurance & finance",
                "Distribution & retail",
                "Energy & environment",
                "Education & training",
                "Real estate",
                "Aerospace industry",
                "Food industry",
                "Automotive, mechanical & naval industry",
                "High-tech & telecom industry",
                "Manufacturing industry",
                "Petroleum industry",
                "Pharma, biotech & chemical industry",
                "IT services (ESN/SSII)",
                "Media, internet & communication",
                "Restaurants & catering",
                "Healthcare & social",
                "Business services",
                "Services to individuals",
                "Public services — other",
                "Public services — local government",
                "Public services — state",
                "Public services — hospitals",
                "Tourism, hotels & leisure",
                "Transport & logistics"
              ]
            },
            "default": []
          },
          "workTime": {
            "title": "Work time",
            "type": "array",
            "description": "Filter by full-time / part-time. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "ft",
                "pt",
                "np"
              ],
              "enumTitles": [
                "Full time",
                "Part time",
                "Not specified"
              ]
            },
            "default": []
          },
          "rseLabels": {
            "title": "CSR labels & certifications (RSE)",
            "type": "array",
            "description": "Filter by the employer's CSR / social-responsibility labels (labels & engagements RSE). Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "_10556393",
                "_b64a8fe7",
                "_9ffe5c83",
                "_3a9a1663",
                "_a2f6a46f",
                "_2d67f571",
                "_79347e6b",
                "_e7ce5995",
                "_7b05b6d4"
              ],
              "enumTitles": [
                "Ecocert 26000",
                "EcoVadis",
                "Engagé RSE (AFNOR)",
                "For Life",
                "Lucie 26000",
                "PME+",
                "Positive Company",
                "Responsible Care",
                "Safe Place"
              ]
            },
            "default": []
          },
          "superRecruiterOnly": {
            "title": "Super recruiters only",
            "type": "boolean",
            "description": "Only include offers from companies with HelloWork's \"super recruteur\" badge (responsive, transparent recruiters).",
            "default": false
          },
          "minAnnualSalary": {
            "title": "Minimum annual salary (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include offers with an annual salary of at least this amount in EUR (e.g. <code>35000</code>)."
          },
          "salaryOnly": {
            "title": "Only offers with a salary",
            "type": "boolean",
            "description": "Only include offers where the salary is specified.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Sort results by relevance or publication date. Use \"date\" together with \"Published since\" for monitoring new offers.",
            "default": "relevance"
          },
          "maxItems": {
            "title": "Maximum number of jobs",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of job offers to scrape across all searches. Note: HelloWork caps each search at ~67 pages (≈2,010 offers) — to collect more, use several narrower keywords or filters.",
            "default": 500
          },
          "fetchJobDetails": {
            "title": "Fetch full job details",
            "type": "boolean",
            "description": "Visit each job's detail page to get the full HTML description, exact salary range, remote policy, education/experience requirements, tags and company info. Turn off for a much faster run that only returns the basic data from search result cards.",
            "default": true
          },
          "startUrls": {
            "title": "Direct search URLs (advanced)",
            "type": "array",
            "description": "Instead of (or in addition to) keywords, paste full HelloWork search URLs, e.g. <code>https://www.hellowork.com/fr-fr/emploi/recherche.html?k=data+engineer&l=Paris&c=CDI</code>. All filters in the URL are respected.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxies to use. Defaults to Apify residential proxies (lowest chance of blocking). Note that residential traffic is billed per GB — switch to datacenter proxies for cheaper large-volume runs.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of pages loaded in parallel. Lower this if you see rate-limiting errors.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}