{
  "openapi": "3.0.1",
  "info": {
    "title": "Welcome to the Jungle Jobs, With the Salary Read Right",
    "description": "All 88,651 adverts on Welcome to the Jungle: salary, remote policy, benefits, profession, and the employer's own application link. A quarter of salaried adverts are quoted per month, so the raw number understates them twelvefold. This one publishes the period beside it.",
    "version": "0.1",
    "x-build-id": "9mvq1D2W4osv5xRsl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/gubidonius~wttj-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-gubidonius-wttj-jobs",
        "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/gubidonius~wttj-jobs/runs": {
      "post": {
        "operationId": "runs-sync-gubidonius-wttj-jobs",
        "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/gubidonius~wttj-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-gubidonius-wttj-jobs",
        "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": {
          "query": {
            "title": "Free-text search",
            "type": "string",
            "description": "Words to look for in advert titles, company names and summaries. This is a search and not a filter: it is typo tolerant and ranks by relevance. Leave it empty to walk the whole board.",
            "default": ""
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "The site's own slugs, not display words: full_time, internship, apprenticeship, temporary, freelance, part_time, vie, other. There are 11 and every value is checked against the live list before the search runs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "remotePolicies": {
            "title": "Remote policies",
            "type": "array",
            "description": "One or more of fulltime, partial, punctual, no, unknown. unknown is by far the biggest at 38,043 of 88,651 adverts, and it means the employer said nothing rather than that remote work is refused.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Office country codes",
            "type": "array",
            "description": "Two-letter ISO codes of the office the job is in, for example FR, ES, DE, GB, US. This is a French site and most adverts are FR.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "City names exactly as the site writes them, for example Paris, Lyon, Madrid, London. Accents matter and are checked against the live list.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "professionCategories": {
            "title": "Profession categories",
            "type": "array",
            "description": "The 20 top-level families, written as the site's reference slugs, for example tech-engineering-3NjUy, sales-2NDcz, marketing-communication-1MzYy. Every value is checked against the live list, which is also the fastest way to see the real spellings.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "professions": {
            "title": "Professions",
            "type": "array",
            "description": "The 179 narrower professions, as reference slugs, for example data-business-intelligence-yZjY1. This is the filter that cuts the board most finely.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "companySlugs": {
            "title": "Company slugs",
            "type": "array",
            "description": "Watch named employers, using the last part of their Welcome to the Jungle profile URL, for example algolia or doctolib. 1,551 companies had an open advert on 7 September 2026.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "educationLevels": {
            "title": "Education levels",
            "type": "array",
            "description": "French qualification levels as the site writes them: no_diploma, cap, bep, bac, bac_1, bac_2, bac_3, bac_4, bac_5, phd. Only 19,544 of 88,651 adverts state one at all, so setting this excludes the rest.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "benefits": {
            "title": "Benefits",
            "type": "array",
            "description": "Benefits the employer declares, written out in English, for example \"Generous PTO\", \"Mental health benefits\", \"Bicycle storage\". There are 83 of them.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "currencies": {
            "title": "Salary currencies",
            "type": "array",
            "description": "One or more of EUR, USD, GBP. Only adverts that publish a salary carry one.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "withSalaryOnly": {
            "title": "Only adverts that publish a salary",
            "type": "boolean",
            "description": "Keep only adverts with a salary figure. 28,717 of 88,651 have one, which is far above what most job boards publish.",
            "default": false
          },
          "minYearlySalary": {
            "title": "Minimum yearly salary",
            "minimum": 0,
            "type": "integer",
            "description": "A floor applied to the site's own annual figure, never to the raw quoted number. A quarter of salaried adverts are quoted per month, so comparing 3,000 a month against a floor of 40,000 a year would throw away the job it should keep."
          },
          "minExperienceYears": {
            "title": "Minimum years of experience asked for",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest value of the experience the advert asks for. 55,894 of 88,651 adverts state one, and the rest are excluded when you set this."
          },
          "maxExperienceYears": {
            "title": "Maximum years of experience asked for",
            "minimum": 0,
            "type": "integer",
            "description": "Highest value of the experience the advert asks for. Set this to 1 to find entry-level roles."
          },
          "publishedWithinDays": {
            "title": "Published in the last N days",
            "minimum": 1,
            "type": "integer",
            "description": "Only adverts published this recently. Measured on 7 September 2026: 1,952 adverts were published in the last day and 81,970 in the last week."
          },
          "fullAdvert": {
            "title": "Read each advert page",
            "type": "boolean",
            "description": "Adds the employer's own application link, the applicant tracking system behind it, the full advert text, the candidate profile, the skills and the tools. None of those are on the search record. Costs one extra request per advert and no extra money.",
            "default": true
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "fr"
            ],
            "type": "string",
            "description": "There is one search index per site language holding the same adverts with localised profession and skill names. This picks the index and the display language together, so they cannot disagree.",
            "default": "en"
          },
          "maxResults": {
            "title": "Maximum adverts",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Upper bound on adverts for the WHOLE run, across every filter and every cell of the search. You are never charged for more than this.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}