{
  "openapi": "3.0.1",
  "info": {
    "title": "Welcome to the Jungle Jobs Scraper & API - Otta, WTTJ, Salary",
    "description": "Welcome to the Jungle jobs scraper and API (WTTJ and Otta): 84,000+ open jobs in France, Europe, the UK and the US, searched live by title, place, contract, remote and pay, newest first. Salary, experience, company size and industry on every row, internships and alternance too. No login.",
    "version": "1.0",
    "x-build-id": "EWex9kdN0vsCLXYOR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/anshumanatrey~welcome-to-the-jungle-jobs-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-anshumanatrey-welcome-to-the-jungle-jobs-search",
        "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/anshumanatrey~welcome-to-the-jungle-jobs-search/runs": {
      "post": {
        "operationId": "runs-sync-anshumanatrey-welcome-to-the-jungle-jobs-search",
        "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/anshumanatrey~welcome-to-the-jungle-jobs-search/run-sync": {
      "post": {
        "operationId": "run-sync-anshumanatrey-welcome-to-the-jungle-jobs-search",
        "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": {
          "searchTerms": {
            "title": "Job titles to find (searchTerms)",
            "type": "array",
            "description": "Type the job titles or keywords to find, one per line, for example data analyst or développeur. A job matches when its title has every word of a line: frontend also finds Front-End, and accents do not matter. A place typed with the title is read as the place: développeur à Paris, data analyst in London. Leave it empty for the newest jobs of every kind. A pasted Welcome to the Jungle search link works too, with its country, contract and remote filters.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Where the job is (location)",
            "type": "array",
            "description": "Type where the jobs should be: towns, departments, regions or countries, one per line, for example Paris, Lyon, Ile-de-France, London, New York, Germany or Europe. French and English names both work (Bretagne and Brittany). Remote typed alone asks for fully remote jobs. Leave it empty for every country.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "workType": {
            "title": "Remote or office (workType)",
            "type": "array",
            "description": "Pick remote (fully remote), hybrid (a few days or occasional days at home) or onsite (no remote), or several, as each employer states it on Welcome to the Jungle. Leave it empty for all of them, including the 47% of jobs that state no remote policy. Typed words such as full remote or office work too.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Fully remote (remote)",
                "Hybrid",
                "No remote, in the office (onsite)"
              ]
            },
            "default": []
          },
          "employmentType": {
            "title": "Contract type (employmentType)",
            "type": "array",
            "description": "Pick the contract types to keep: full-time (permanent, CDI), part-time, contract (freelance), intern (internship, stage), temporary (fixed-term, CDD) or apprenticeship (work-study, alternance), or several. Leave it empty for every contract. Each job's own contract, VIE and graduate programs included, is in the contractType column.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "full-time",
                "part-time",
                "contract",
                "intern",
                "temporary",
                "apprenticeship"
              ],
              "enumTitles": [
                "Permanent, full-time (full-time)",
                "Part-time",
                "Freelance (contract)",
                "Internship (intern)",
                "Fixed-term (temporary)",
                "Work-study (apprenticeship)"
              ]
            },
            "default": []
          },
          "postedWithin": {
            "title": "Posted in the last (postedWithin)",
            "type": "string",
            "description": "Pick how new the jobs must be: posted in the last 24 hours, 3, 7, 15 or 30 days. 30 days, the default, keeps the last month's jobs, newest first, and any time keeps every open job. The date is the moment the job went live on Welcome to the Jungle. You can also type your own period, such as 48 hours or 2 weeks.",
            "default": "30 days"
          },
          "minSalary": {
            "title": "Minimum pay a year (minSalary)",
            "minimum": 0,
            "type": "integer",
            "description": "Type the lowest yearly pay to keep, as a number in the job's own currency (EUR, USD or GBP): 50000 keeps the jobs whose pay can reach 50,000 a year. Monthly pay counts 12 months and a day rate 218 working days. Jobs that show no pay (two thirds of them) are left out. Leave it empty for every job.",
            "default": null
          },
          "experienceYears": {
            "title": "Experience (experienceYears)",
            "type": "string",
            "description": "Type your years of experience: a number such as 3, a range such as 2-5, 5+ for five or more, or fresher for none. A job is kept when the experience it asks for overlaps yours: Welcome to the Jungle states it as a band (3 to 4 years, 5 to 7 years), so 3 keeps 2-3 and 3-4 years. Jobs that state no experience (37%) are left out. Leave it empty for every experience.",
            "default": null
          },
          "companySize": {
            "title": "Company size (companySize)",
            "type": "array",
            "description": "Pick the company sizes to keep, by headcount, as Welcome to the Jungle groups companies: under-15, 15-50, 50-250, 250-2000 or over-2000 employees. Leave it empty for every size. Typed forms such as <15 or 2000+ work too.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "under-15",
                "15-50",
                "50-250",
                "250-2000",
                "over-2000"
              ],
              "enumTitles": [
                "Fewer than 15 people (under-15)",
                "15 to 50 people (15-50)",
                "50 to 250 people (50-250)",
                "250 to 2,000 people (250-2000)",
                "Over 2,000 people (over-2000)"
              ]
            },
            "default": []
          },
          "industries": {
            "title": "Business sectors (industries)",
            "type": "array",
            "description": "Type the business sectors to keep, one per line, as Welcome to the Jungle names its industries: Software, FinTech, Banking, Health, E-commerce, Cyber Security, Artificial Intelligence, Luxury, Energy. A word finds every industry or industry group whose name holds it: Tech finds every tech industry. Leave it empty for every sector.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jobLanguage": {
            "title": "Language of the ad (jobLanguage)",
            "type": "array",
            "description": "Pick the languages the job ads must be written in: en (English), fr (French), de (German), es (Spanish), it (Italian), nl (Dutch) or pt (Portuguese). 62% of ads are in French and 37% in English; English ones are the jobs open to English speakers. Leave it empty for every language.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "en",
                "fr",
                "de",
                "es",
                "it",
                "nl",
                "pt"
              ],
              "enumTitles": [
                "English (en)",
                "French (fr)",
                "German (de)",
                "Spanish (es)",
                "Italian (it)",
                "Dutch (nl)",
                "Portuguese (pt)"
              ]
            },
            "default": []
          },
          "maxJobs": {
            "title": "Number of jobs (maxJobs)",
            "type": "integer",
            "description": "Type how many jobs to get, newest first: 100 by default. Type 0 to get every matching job (about 81,000 for the whole board, which needs 1 GB of memory or more). Each job is one charged row, so this sets the most a run can cost.",
            "default": 100
          },
          "includeDetails": {
            "title": "Full details (includeDetails)",
            "type": "boolean",
            "description": "Tick to add the full details of each job from Welcome to the Jungle's job API: the description, the experience wanted and the recruitment process as text and HTML, skills, tools, the start date, the company's website and, for a job posted through an outside careers site, its apply link. The run reads each saved job once more, and a job with details costs more.",
            "default": false
          },
          "excludeTerms": {
            "title": "Leave out words (excludeTerms)",
            "type": "array",
            "description": "Type words that leave a job out when its title has them, one per line, for example senior or stage. Leave it empty to keep every job.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchDescriptions": {
            "title": "Wider match (searchDescriptions)",
            "type": "boolean",
            "description": "Tick for a wider match: every job whose title, summary or profile wanted holds your words, not only its title. kubernetes then also finds a DevOps Engineer job that asks for Kubernetes.",
            "default": false
          },
          "companies": {
            "title": "Only these companies (companies)",
            "type": "array",
            "description": "Type company names to search only their jobs, one per line, as Welcome to the Jungle names them: Doctolib, Back Market, Thales, Monzo. A company page link (welcometothejungle.com/en/companies/doctolib) or a companySlug from a row works too. Leave it empty to search every company.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jobUrls": {
            "title": "Job links to check (jobUrls)",
            "type": "array",
            "description": "Paste Welcome to the Jungle job links to check whether they are still open, one per line, instead of searching. Each comes back open with the job, closed (the employer archived it) or not found.",
            "default": [],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}