{
  "openapi": "3.0.1",
  "info": {
    "title": "Welcome to the Jungle Scraper: Jobs and Hiring Signals",
    "description": "Scrape Welcome to the Jungle job ads by keyword, filters or pasted search URL, with full descriptions and a new-jobs-only mode. A second mode returns one hiring-signal record per company: open jobs by department, roles opened since your last run, tech tools, headcount. Pay per delivered record.",
    "version": "0.1",
    "x-build-id": "Ii6djBxgSrUmRdE6P"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/amitaviv~welcome-to-the-jungle-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-amitaviv-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/amitaviv~welcome-to-the-jungle-scraper/runs": {
      "post": {
        "operationId": "runs-sync-amitaviv-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/amitaviv~welcome-to-the-jungle-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-amitaviv-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "jobs",
              "companies"
            ],
            "type": "string",
            "description": "Jobs: one record per job ad, from the keywords or URLs below. Hiring signals: one record per company in the Companies list, with its open jobs counted by department and contract and the roles opened since your previous run. If only the Companies list is filled, hiring signals mode is used. Default: jobs.",
            "default": "jobs"
          },
          "queries": {
            "title": "Jobs mode: keywords or Welcome to the Jungle URLs",
            "type": "array",
            "description": "Keywords (e.g. data engineer, node.js) or URLs copied from welcometothejungle.com: a company page URL returns every job of that company, and the URL of a search made on a company's Jobs tab (keyword, job type, remote, profession, experience, city with radius, sort) returns the jobs that search shows. The filters below apply to keywords; a pasted URL carries its own filters, and a URL with a filter the actor does not understand is not run and not charged. Leave empty and set filters to get every job that matches them.",
            "items": {
              "type": "string"
            }
          },
          "companies": {
            "title": "Hiring signals mode: companies",
            "type": "array",
            "description": "One company per line: its exact name on Welcome to the Jungle (Doctolib), its slug from the company page URL (doctolib), the company page URL, or its website domain (doctolib.com). An entry that matches no company, or several, is not charged and is named in the status message with the closest candidates and their slugs. Each delivered company is one \"company\" charge.",
            "items": {
              "type": "string"
            }
          },
          "countryCodes": {
            "title": "Countries",
            "type": "array",
            "description": "Jobs mode, keywords only. Two-letter country codes of the job location, e.g. FR, GB, US, DE, ES (UK is read as GB). Country names are not accepted. Empty = all countries.",
            "items": {
              "type": "string"
            }
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "Jobs mode, keywords only. One or more contract types, e.g. [\"full_time\", \"internship\"] (full_time = permanent; temporary = fixed term; vie = French international volunteer programme). Empty = all contract types.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "internship",
                "apprenticeship",
                "temporary",
                "freelance",
                "vie",
                "graduate_program",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Permanent / full time",
                "Part time",
                "Internship",
                "Apprenticeship",
                "Temporary / fixed term",
                "Freelance",
                "VIE",
                "Graduate programme",
                "Volunteer",
                "Other"
              ]
            }
          },
          "remote": {
            "title": "Remote policy",
            "type": "array",
            "description": "Jobs mode, keywords only. One or more remote policies as the employer set them, e.g. [\"fulltime\", \"partial\"]: fulltime = fully remote, partial = some days remote, punctual = occasional remote, no = on site, unknown = not stated. Empty = any.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "partial",
                "punctual",
                "no",
                "unknown"
              ],
              "enumTitles": [
                "Fully remote",
                "Partly remote",
                "Occasional remote",
                "No remote",
                "Not specified"
              ]
            }
          },
          "publishedWithinDays": {
            "title": "Published within the last (days)",
            "minimum": 1,
            "type": "integer",
            "description": "Jobs mode, keywords only. Only jobs published in the last N days, e.g. 7. Empty = no limit."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "newest"
            ],
            "type": "string",
            "description": "Relevance returns at most 1,000 jobs per keyword or URL (the site's own limit). Newest first has no limit; it is used automatically when you ask for more than 1,000 per query or turn on Only new jobs. Default: relevance.",
            "default": "relevance"
          },
          "includeDetails": {
            "title": "Include full details",
            "type": "boolean",
            "description": "Jobs mode. Adds the full description, apply URL, skills, tools, office address and company website from each job's page (one extra request per delivered job, same price). Default on. Turn off for a faster run with the search fields only (description, address and company website are then null, skills and tools empty, applyUrl is the job page, detailsFetched false).",
            "default": true
          },
          "maxItemsPerQuery": {
            "title": "Max jobs per keyword or URL",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Jobs mode. Number of jobs: stop after this many for each keyword or URL (default 100, up to 100,000). You are charged one \"job\" event per delivered job.",
            "default": 100
          },
          "language": {
            "title": "Site language",
            "enum": [
              "en",
              "fr",
              "es",
              "cs",
              "sk"
            ],
            "type": "string",
            "description": "The language edition of Welcome to the Jungle to read: it sets the language of category, sector and size labels and of the job URLs. Job ads themselves stay in the language they were written in. Default: en.",
            "default": "en"
          },
          "onlyNew": {
            "title": "Only new jobs (monitoring)",
            "type": "boolean",
            "description": "Jobs mode. The first run delivers the newest jobs of each search, up to the maximum, and remembers them; older jobs below the maximum are not delivered later. Every later run delivers and charges only jobs it has not delivered yet: those published since the previous run, and jobs that reached the site's search late. Schedule the actor to get new jobs only. The memory is a key-value store named welcome-to-the-jungle-scraper-monitor in your account; delete it to start over.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Any short name, e.g. paris-data-daily. Runs with the same search (or the same company) and the same monitor name share one memory. Give two schedules or two watchlists different names to keep their memories apart. Default: empty (one memory per search or company)."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Off by default: this source does not need a proxy. Turn on Apify Proxy (datacenter) only if your runs are being blocked.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}