{
  "openapi": "3.0.1",
  "info": {
    "title": "HelloWork Jobs Scraper",
    "description": "[💰 $0.95 / 1K] Extract job listings from HelloWork — France's leading job board. Search by keyword and city, filter by contract type, telework, and date posted, and get titles, companies, salaries, full descriptions, and apply links.",
    "version": "1.0",
    "x-build-id": "NOvnvif8x6gPFzqz3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~hellowork-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-hellowork-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~hellowork-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-hellowork-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~hellowork-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-hellowork-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",
            "type": "array",
            "description": "Job titles or keyword phrases to search for, such as 'développeur', 'comptable', or 'chef de projet'. Each entry runs a separate search. Leave empty if you only want to use direct HelloWork URLs.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, département, or region in France (e.g., Paris, Lyon, Marseille, Île-de-France). Applied to every keyword above. Leave blank to search the whole country."
          },
          "startUrls": {
            "title": "Direct HelloWork Search URLs",
            "type": "array",
            "description": "Optional. Paste full HelloWork job search URLs (e.g., https://www.hellowork.com/fr-fr/emploi/recherche.html?k=developpeur&l=Paris) to use them as-is. Useful when you've already built a search with custom filters in the HelloWork UI.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max Results per Search",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum jobs to collect per search keyword or URL. Use 50 for a quick scan, 500 for deep research. Set to 0 for no cap (an internal upper limit of 5,000 still applies to prevent runaway pagination). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots.",
            "default": 100
          },
          "contractType": {
            "title": "Contract Type",
            "uniqueItems": true,
            "type": "array",
            "description": "Only return jobs matching these French contract types. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "CDI",
                "CDD",
                "ALTERNANCE",
                "STAGE",
                "INTERIM",
                "FREELANCE"
              ],
              "enumTitles": [
                "CDI (permanent)",
                "CDD (fixed-term)",
                "Alternance (apprenticeship / work-study)",
                "Stage (internship)",
                "Intérim (temporary)",
                "Freelance / Indépendant"
              ]
            },
            "default": []
          },
          "telework": {
            "title": "Remote / Telework",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter by remote work mode. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "FULL",
                "PARTIAL",
                "OCCASIONAL",
                "NONE"
              ],
              "enumTitles": [
                "Full remote (télétravail complet)",
                "Partial (télétravail partiel)",
                "Occasional (télétravail occasionnel)",
                "On-site only (pas de télétravail)"
              ]
            },
            "default": []
          },
          "datePosted": {
            "title": "Date Posted",
            "enum": [
              "any",
              "24h",
              "3d",
              "1w",
              "1m"
            ],
            "type": "string",
            "description": "Only include jobs posted within this window.",
            "default": "any"
          },
          "minSalary": {
            "title": "Minimum Annual Salary (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return jobs offering at least this annual salary in euros. Leave blank to apply no salary filter. Note: many HelloWork listings omit a salary — those rows are still included even when this filter is set."
          },
          "includeJobDetails": {
            "title": "Include Full Job Details",
            "type": "boolean",
            "description": "Fetch the full description, skills, sector, and structured posting metadata from each job's detail page. Slightly slower but produces much richer data. Disable for faster light scans that return only the search-card data.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}