{
  "openapi": "3.0.1",
  "info": {
    "title": "Welcome to the Jungle Universal Scraper",
    "description": "⚡ Scrape unlimited jobs from Welcome to the Jungle! Search by keywords, filter by city, contract, remote policy, experience, salary, sector or company, and instantly get rich, structured job data with the hiring company profile — for job boards, sourcing, market research or lead generation.",
    "version": "0.1",
    "x-build-id": "AZBd7WRzUp4WNj2bS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapifier~welcome-to-the-jungle-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapifier-welcome-to-the-jungle-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/scrapifier~welcome-to-the-jungle-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapifier-welcome-to-the-jungle-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/scrapifier~welcome-to-the-jungle-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapifier-welcome-to-the-jungle-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": {
          "urls": {
            "title": "Welcome to the Jungle URLs",
            "type": "array",
            "description": "Paste one or more Welcome to the Jungle URLs — a jobs search URL (its filters are kept) or a company page URL (all of its jobs). Leave empty to use the filters below instead.",
            "items": {
              "type": "string"
            }
          },
          "query": {
            "title": "Keywords",
            "type": "string",
            "description": "Free-text search over job title + description (e.g. \"developer\", \"data scientist\"). Empty = all jobs."
          },
          "search_in_title_only": {
            "title": "Search in job title only",
            "type": "boolean",
            "description": "Match the keywords against the job title only, not the full description.",
            "default": false
          },
          "location": {
            "title": "Location (city / region / country)",
            "type": "string",
            "description": "Search around a place, e.g. \"Paris\", \"Lyon\", \"Île-de-France\". Combine with a radius below (geocoded automatically)."
          },
          "radius_km": {
            "title": "Radius (km)",
            "minimum": 1,
            "type": "integer",
            "description": "Search radius around the location, in kilometres (e.g. 20). Only used with a location."
          },
          "cities": {
            "title": "Exact cities",
            "type": "array",
            "description": "Exact office cities to include (e.g. Paris, Barcelona). More precise than a location + radius.",
            "items": {
              "type": "string"
            }
          },
          "country_codes": {
            "title": "Countries",
            "type": "array",
            "description": "Office countries. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "FR",
                "ES",
                "GB",
                "BE",
                "DE",
                "IT",
                "PL",
                "PT",
                "NL",
                "LU",
                "CH",
                "US",
                "CA",
                "CZ",
                "SK"
              ],
              "enumTitles": [
                "France",
                "Spain",
                "United Kingdom",
                "Belgium",
                "Germany",
                "Italy",
                "Poland",
                "Portugal",
                "Netherlands",
                "Luxembourg",
                "Switzerland",
                "United States",
                "Canada",
                "Czechia",
                "Slovakia"
              ]
            }
          },
          "contract_types": {
            "title": "Contract type",
            "type": "array",
            "description": "One or more contract types. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "FULL_TIME",
                "INTERNSHIP",
                "APPRENTICESHIP",
                "TEMPORARY",
                "FREELANCE",
                "VIE",
                "OTHER"
              ],
              "enumTitles": [
                "Permanent (CDI)",
                "Internship (Stage)",
                "Apprenticeship (Alternance)",
                "Fixed-term (CDD)",
                "Freelance",
                "VIE",
                "Other"
              ]
            }
          },
          "remote": {
            "title": "Remote policy",
            "type": "array",
            "description": "Remote-work policy. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "no",
                "punctual",
                "partial",
                "fulltime",
                "unknown"
              ],
              "enumTitles": [
                "On-site",
                "Occasional remote",
                "Partial / Hybrid",
                "Full remote",
                "Unspecified"
              ]
            }
          },
          "experience_min": {
            "title": "Min experience (years)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs requiring at least this many years of experience."
          },
          "experience_max": {
            "title": "Max experience (years)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs requiring at most this many years (great for junior roles)."
          },
          "education_levels": {
            "title": "Education level",
            "type": "array",
            "description": "Required education level. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "NO_DIPLOMA",
                "BAC",
                "BAC_1",
                "BAC_2",
                "BAC_3",
                "BAC_4",
                "BAC_5"
              ],
              "enumTitles": [
                "No diploma",
                "Baccalaureate",
                "Bac+1",
                "Bac+2",
                "Bac+3 (Bachelor)",
                "Bac+4",
                "Bac+5 (Master)"
              ]
            }
          },
          "salary_min": {
            "title": "Min yearly salary (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs advertising at least this gross yearly salary."
          },
          "company_min_employees": {
            "title": "Min company size (employees)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs at companies with at least this many employees (e.g. 250 for mid/large)."
          },
          "company_max_employees": {
            "title": "Max company size (employees)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs at companies with at most this many employees (e.g. 50 for startups)."
          },
          "sectors": {
            "title": "Sectors",
            "type": "array",
            "description": "Only jobs in these sectors. Use a category (e.g. \"Tech\", \"Distribution\", \"Conseil / Audit\") or a specific sector (e.g. \"IT / Digital\", \"FinTech / InsurTech\", \"E-commerce\").",
            "items": {
              "type": "string"
            }
          },
          "languages": {
            "title": "Job language",
            "type": "array",
            "description": "Language the listing is written in. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "fr",
                "en",
                "es",
                "it",
                "de",
                "nl",
                "pt"
              ],
              "enumTitles": [
                "French",
                "English",
                "Spanish",
                "Italian",
                "German",
                "Dutch",
                "Portuguese"
              ]
            }
          },
          "organizations": {
            "title": "Companies (by name)",
            "type": "array",
            "description": "Only jobs from these companies (exact names, e.g. Decathlon, Papernest).",
            "items": {
              "type": "string"
            }
          },
          "published_after": {
            "title": "Published after",
            "type": "string",
            "description": "Only jobs published on or after this date (YYYY-MM-DD)."
          },
          "date_posted": {
            "title": "Date posted (preset)",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Convenience preset (combines with 'Published after' — the tighter wins).",
            "default": "any"
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Result ordering.",
            "default": "relevance"
          },
          "website_country": {
            "title": "Label language",
            "enum": [
              "fr",
              "en",
              "es",
              "cs",
              "sk"
            ],
            "type": "string",
            "description": "Language for sector / contract / size labels in the output (job titles & descriptions stay in their original language).",
            "default": "fr"
          },
          "max_results": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "How many jobs to collect (0 = as many as possible). A single search reaches up to 1000; use 'Deep scrape' to go further.",
            "default": 100
          },
          "split_by_contract": {
            "title": "Deep scrape (beyond 1000)",
            "type": "boolean",
            "description": "Search returns at most 1000 jobs per query; sweep each contract type to collect far more.",
            "default": false
          },
          "include_company_info": {
            "title": "Include company profile",
            "type": "boolean",
            "description": "Attach the company (name, size, sectors, logo, description) to every job.",
            "default": true
          },
          "include_full_details": {
            "title": "Include full job details (slower)",
            "type": "boolean",
            "description": "Fetch each job's full page: application URL, required skills, summary, start date and recruitment process. One extra request per job.",
            "default": false
          },
          "flatten": {
            "title": "Flat company columns (CSV-friendly)",
            "type": "boolean",
            "description": "Add flat company_name / company_slug / company_size columns for CSV/Excel.",
            "default": false
          },
          "emit_input_status": {
            "title": "Report empty searches",
            "type": "boolean",
            "description": "Add an input_status report to the run's OUTPUT record.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Not required — the search API is public. Only set a proxy if you want to route traffic through it."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}