{
  "openapi": "3.0.1",
  "info": {
    "title": "Welcome to the Jungle Jobs Scraper | Every Job, ATS & Companies",
    "description": "Export every Welcome to the Jungle (WTTJ) job, past the site's 1,000-result search limit: up to the whole ~90,000-job board in one run. 105 fields: salary, remote, contract, skills, apply link with ATS vendor, and company website, LinkedIn, headcount, revenue. Incremental alerts.",
    "version": "0.1",
    "x-build-id": "aa3ANR6LLSy38TghF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/corvuslab~welcome-to-the-jungle-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-corvuslab-welcome-to-the-jungle-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/corvuslab~welcome-to-the-jungle-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-corvuslab-welcome-to-the-jungle-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/corvuslab~welcome-to-the-jungle-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-corvuslab-welcome-to-the-jungle-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": {
          "searchTerms": {
            "title": "🔑 Search terms",
            "type": "array",
            "description": "Job titles, skills or keywords, e.g. \"data analyst\" or \"react\". Each term runs as its own search; results are merged and de-duplicated. Leave empty to browse every job.",
            "items": {
              "type": "string"
            }
          },
          "searchInTitleOnly": {
            "title": "🎯 Match search terms in the job title only",
            "type": "boolean",
            "description": "Only return jobs whose title contains the search term — far more precise than searching the full posting.",
            "default": false
          },
          "locations": {
            "title": "📍 Locations",
            "type": "array",
            "description": "City, region or district names as they appear on the site, e.g. \"Paris\", \"Lyon\", \"London\", \"New York\". A job matches when any of its offices is there.",
            "items": {
              "type": "string"
            }
          },
          "radiusKm": {
            "title": "📡 Radius around each location (km)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Widen each location to everything within this distance, e.g. 20 to include the suburbs. Leave empty to match the place by name only."
          },
          "countries": {
            "title": "🌍 Countries",
            "type": "array",
            "description": "Only jobs with an office in these countries.",
            "items": {
              "type": "string",
              "enum": [
                "FR",
                "US",
                "GB",
                "CA",
                "DE",
                "ES",
                "IE",
                "NL",
                "IT",
                "BE",
                "MA",
                "IN",
                "PL",
                "AU",
                "BR",
                "SG",
                "PT",
                "CH",
                "EE",
                "IL",
                "JP",
                "LU",
                "CZ",
                "HU",
                "CN",
                "NZ",
                "MX",
                "BG",
                "AE",
                "SE",
                "AT",
                "RO",
                "HK",
                "KR",
                "PH",
                "GR",
                "LT",
                "DK",
                "TN",
                "ZA",
                "NO",
                "CO",
                "AR",
                "FI",
                "SK",
                "RS",
                "UA",
                "TR",
                "SA",
                "QA",
                "SN",
                "CI",
                "RE",
                "GP",
                "MQ",
                "GF",
                "NC",
                "MC"
              ],
              "enumTitles": [
                "France",
                "United States",
                "United Kingdom",
                "Canada",
                "Germany",
                "Spain",
                "Ireland",
                "Netherlands",
                "Italy",
                "Belgium",
                "Morocco",
                "India",
                "Poland",
                "Australia",
                "Brazil",
                "Singapore",
                "Portugal",
                "Switzerland",
                "Estonia",
                "Israel",
                "Japan",
                "Luxembourg",
                "Czechia",
                "Hungary",
                "China",
                "New Zealand",
                "Mexico",
                "Bulgaria",
                "United Arab Emirates",
                "Sweden",
                "Austria",
                "Romania",
                "Hong Kong",
                "South Korea",
                "Philippines",
                "Greece",
                "Lithuania",
                "Denmark",
                "Tunisia",
                "South Africa",
                "Norway",
                "Colombia",
                "Argentina",
                "Finland",
                "Slovakia",
                "Serbia",
                "Ukraine",
                "Turkey",
                "Saudi Arabia",
                "Qatar",
                "Senegal",
                "Ivory Coast",
                "Reunion",
                "Guadeloupe",
                "Martinique",
                "French Guiana",
                "New Caledonia",
                "Monaco"
              ]
            }
          },
          "startUrls": {
            "title": "🔗 Start URLs",
            "type": "array",
            "description": "Paste Welcome to the Jungle URLs: a job search page (filters in the URL are kept), a company page (returns all its open jobs) or a single job page.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "companies": {
            "title": "🏢 Companies",
            "type": "array",
            "description": "Jobs from these companies — the name as it appears in their Welcome to the Jungle URL (e.g. \"doctolib\", \"l-oreal\") or the full company URL. On its own it returns all their open jobs; with search terms, only the matching ones.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "💯 Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of jobs to return in total, across all search terms and URLs (searches run in order). 0 = no limit — a single run can export the whole board (about 90,000 jobs).",
            "default": 100
          },
          "sortBy": {
            "title": "🔀 Sort by",
            "enum": [
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "Newest first, or the site's relevance ranking for your search terms. Runs that ask for more than 1,000 jobs are delivered newest first.",
            "default": "date"
          },
          "contractTypes": {
            "title": "📝 Contract types",
            "type": "array",
            "description": "Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "temporary",
                "internship",
                "apprenticeship",
                "freelance",
                "part_time",
                "vie",
                "graduate_program",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Permanent / full-time (CDI)",
                "Fixed-term (CDD)",
                "Internship",
                "Apprenticeship / work-study",
                "Freelance",
                "Part-time",
                "VIE (international volunteer)",
                "Graduate program",
                "Volunteer",
                "Other"
              ]
            }
          },
          "remote": {
            "title": "🏠 Remote policy",
            "type": "array",
            "description": "Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "partial",
                "punctual",
                "no",
                "unknown"
              ],
              "enumTitles": [
                "Fully remote",
                "Hybrid / partial remote",
                "Occasional remote",
                "No remote",
                "Not specified"
              ]
            }
          },
          "postedWithin": {
            "title": "📅 Posted within",
            "enum": [
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Only jobs published in this window."
          },
          "experienceLevels": {
            "title": "🧑‍💼 Experience required",
            "type": "array",
            "description": "Minimum years of experience the job asks for.",
            "items": {
              "type": "string",
              "enum": [
                "0-1",
                "1-3",
                "3-5",
                "5-10",
                "10+"
              ],
              "enumTitles": [
                "Less than 1 year",
                "1–3 years",
                "3–5 years",
                "5–10 years",
                "10+ years"
              ]
            }
          },
          "educationLevels": {
            "title": "🎓 Education level",
            "type": "array",
            "description": "Minimum diploma the job asks for (French scale: Bac+5 = master's).",
            "items": {
              "type": "string",
              "enum": [
                "no_diploma",
                "cap",
                "bep",
                "bac",
                "bac_1",
                "bac_2",
                "bac_3",
                "bac_4",
                "bac_5",
                "phd"
              ],
              "enumTitles": [
                "No diploma",
                "CAP",
                "BEP",
                "Bac (high school)",
                "Bac+1",
                "Bac+2",
                "Bac+3 (bachelor's)",
                "Bac+4",
                "Bac+5 (master's)",
                "PhD"
              ]
            }
          },
          "salaryMin": {
            "title": "💰 Minimum yearly salary",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs that publish a yearly salary of at least this amount, in the job's own currency."
          },
          "onlyWithSalary": {
            "title": "💵 Only jobs that show a salary",
            "type": "boolean",
            "description": "Skip jobs without a published salary.",
            "default": false
          },
          "companySizes": {
            "title": "👥 Company size",
            "type": "array",
            "description": "Headcount of the hiring company.",
            "items": {
              "type": "string",
              "enum": [
                "0-15",
                "15-50",
                "50-250",
                "250-2000",
                "2000+"
              ],
              "enumTitles": [
                "1–15 employees",
                "15–50 employees",
                "50–250 employees",
                "250–2,000 employees",
                "2,000+ employees"
              ]
            }
          },
          "sectors": {
            "title": "🏭 Company sector",
            "type": "array",
            "description": "Industry of the hiring company.",
            "items": {
              "type": "string",
              "enum": [
                "tech-1",
                "industry-1",
                "banking-insurance-finance",
                "distribution-1",
                "consulting-audit",
                "health-social-environment",
                "advertising-marketing-agency",
                "public-administration-1",
                "culture-media-entertainment",
                "food-and-beverage",
                "engineering-1",
                "education-training-recruitment",
                "real-estate",
                "fashion-luxury-beauty-lifestyle",
                "mobility-transport",
                "corporate-services",
                "hotel-tourism-leisure",
                "nonprofit-association",
                "legal-law",
                "architecture-1"
              ],
              "enumTitles": [
                "Tech",
                "Industry",
                "Banking, Insurance & Finance",
                "Distribution & Retail",
                "Consulting & Audit",
                "Health, Social & Environment",
                "Advertising, Marketing & Agencies",
                "Public Administration",
                "Culture, Media & Entertainment",
                "Food & Beverage",
                "Engineering",
                "Education, Training & Recruitment",
                "Real Estate",
                "Fashion, Luxury, Beauty & Lifestyle",
                "Mobility & Transport",
                "Corporate Services",
                "Hotel, Tourism & Leisure",
                "Nonprofit & Associations",
                "Legal & Law",
                "Architecture"
              ]
            }
          },
          "jobCategories": {
            "title": "🗂️ Job category",
            "type": "array",
            "description": "The job family the site files the role under.",
            "items": {
              "type": "string",
              "enum": [
                "sales-customer-service-5MzIw",
                "tech-engineering-3NjUy",
                "business-finance-1MjQ4",
                "project-product-management-xYmEw",
                "hr-people-iZGMy",
                "communication-marketing-advertising-wNDg5",
                "maintenance-repair-lZDUy",
                "transport-logistics-lMDVm",
                "craftsmanship-and-manual-labor-yNGQw",
                "fashion-5MzY5",
                "hospitality-4ZTdj",
                "healthcare-yMjNi",
                "consulting-strategy-iNDRl",
                "construction-jNzEz",
                "legal-zYjg3",
                "security-defense-jMzJm",
                "research-development-0OGVm",
                "agriculture-agri-food-4YmNh",
                "education-wNTkx",
                "culture-arts-wOTc2"
              ],
              "enumTitles": [
                "Sales & Customer Service",
                "Tech & Engineering",
                "Business & Finance",
                "Project & Product Management",
                "HR & People",
                "Communication, Marketing & Advertising",
                "Maintenance & Repair",
                "Transport & Logistics",
                "Craftsmanship & Manual Labor",
                "Fashion",
                "Hospitality",
                "Healthcare",
                "Consulting & Strategy",
                "Construction",
                "Legal",
                "Security & Defense",
                "Research & Development",
                "Agriculture & Agri-food",
                "Education",
                "Culture & Arts"
              ]
            }
          },
          "jobLanguages": {
            "title": "🗣️ Posting language",
            "type": "array",
            "description": "Language the job ad is written in.",
            "items": {
              "type": "string",
              "enum": [
                "fr",
                "en",
                "de",
                "es",
                "it",
                "pt",
                "nl",
                "cs",
                "pl"
              ],
              "enumTitles": [
                "French",
                "English",
                "German",
                "Spanish",
                "Italian",
                "Portuguese",
                "Dutch",
                "Czech",
                "Polish"
              ]
            }
          },
          "includeDetails": {
            "title": "📄 Include full job details",
            "type": "boolean",
            "description": "Adds the full description, candidate profile, recruitment process, apply link and applicant-tracking system, skills and tools, and the company's website, LinkedIn, socials, revenue and headquarters. Turn off for the fastest run with search-card fields only.",
            "default": true
          },
          "siteLanguage": {
            "title": "🌐 Label language",
            "enum": [
              "en",
              "fr",
              "es",
              "cs",
              "sk"
            ],
            "type": "string",
            "description": "Language for translated labels (benefits, sectors, categories, skills) and job links. The job text itself stays in the language it was written in.",
            "default": "en"
          },
          "descriptionFormat": {
            "title": "📝 Text format",
            "enum": [
              "all",
              "text",
              "html",
              "markdown"
            ],
            "type": "string",
            "description": "Which versions of the long texts (description, candidate profile, recruitment process) to include.",
            "default": "all"
          },
          "descriptionMaxLength": {
            "title": "✂️ Cut long texts at",
            "minimum": 0,
            "type": "integer",
            "description": "Truncate each long text to this many characters. Empty = keep the full text."
          },
          "compact": {
            "title": "📦 Compact output",
            "type": "boolean",
            "description": "Return only the core fields — ideal for AI agents, spreadsheets and alerts.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "🧹 Drop empty fields",
            "type": "boolean",
            "description": "Remove fields that have no value from each job.",
            "default": false
          },
          "incrementalMode": {
            "title": "♻️ Incremental mode",
            "type": "boolean",
            "description": "Remember what earlier runs returned and only output jobs that are new, changed or back since last time — unchanged jobs are skipped and cost nothing. Run it on a schedule to build a job alert feed.",
            "default": false
          },
          "stateKey": {
            "title": "🗝️ State key",
            "type": "string",
            "description": "Stable name for the tracked search. Leave empty to derive one automatically from your search settings."
          },
          "emitUnchanged": {
            "title": "🔁 Include unchanged records",
            "type": "boolean",
            "description": "Also output jobs that have not changed since the previous run. Each one counts as a result.",
            "default": false
          },
          "emitExpired": {
            "title": "🗑️ Include expired records",
            "type": "boolean",
            "description": "Also output jobs that were in the previous run but are no longer published (changeType EXPIRED). Each one counts as a result.",
            "default": false
          },
          "telegramToken": {
            "title": "💬 Telegram bot token",
            "type": "string",
            "description": "Bot token from @BotFather."
          },
          "telegramChatId": {
            "title": "🆔 Telegram chat ID",
            "type": "string",
            "description": "Chat or channel ID, e.g. \"-100123456789\" or \"@yourchannel\"."
          },
          "slackWebhookUrl": {
            "title": "💼 Slack webhook URL",
            "type": "string",
            "description": "Slack incoming-webhook URL."
          },
          "discordWebhookUrl": {
            "title": "🎮 Discord webhook URL",
            "type": "string",
            "description": "Discord incoming-webhook URL."
          },
          "webhookUrl": {
            "title": "🪝 Webhook URL",
            "type": "string",
            "description": "Any HTTPS endpoint. Receives a JSON POST with the matched records — works with n8n, Make and Zapier."
          },
          "webhookHeaders": {
            "title": "🧾 Webhook headers",
            "type": "object",
            "description": "Extra headers for the webhook request, e.g. {\"Authorization\": \"Bearer xyz\"}."
          },
          "notificationLimit": {
            "title": "🔢 Jobs per notification",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many jobs to list in each notification message.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy",
            "type": "object",
            "description": "Not needed — the actor runs fine without a proxy. Only set one if your runs report connection problems.",
            "default": {
              "useApifyProxy": false
            }
          },
          "maxRequestRetries": {
            "title": "🔄 Max request retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to retry a failed request before giving up on it.",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}