{
  "openapi": "3.0.1",
  "info": {
    "title": "Welcome to the Jungle Jobs Scraper — Salary & Remote",
    "description": "Welcome to the Jungle Jobs Scraper for public job listings. Search by keyword, city, contract, or remote policy and export title, company, salary, and the job description as JSON.",
    "version": "0.1",
    "x-build-id": "cYCgwrSVlAAvSgkXQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawloop~welcome-to-the-jungle-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawloop-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/crawloop~welcome-to-the-jungle-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawloop-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/crawloop~welcome-to-the-jungle-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawloop-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": {
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Job title or skill (for example python, product manager, data)."
          },
          "keywords": {
            "title": "Extra keywords",
            "type": "array",
            "description": "Each extra keyword is searched separately. Results are deduplicated by job id.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "City",
            "type": "string",
            "description": "Office city as shown on the board (Paris, Lyon, London, Berlin). Matched against the office city."
          },
          "locations": {
            "title": "Extra cities",
            "type": "array",
            "description": "Optional extra cities. Each one is a separate search, combined with each keyword.",
            "items": {
              "type": "string"
            }
          },
          "countryCode": {
            "title": "Country",
            "type": "string",
            "description": "ISO country code of the office (FR, US, GB, DE, ES). Leave empty for every country."
          },
          "contractType": {
            "title": "Contract",
            "enum": [
              "",
              "full_time",
              "part_time",
              "internship",
              "apprenticeship",
              "temporary",
              "freelance",
              "graduate_program",
              "vie",
              "other"
            ],
            "type": "string",
            "description": "Optional contract filter.",
            "default": ""
          },
          "remote": {
            "title": "Remote",
            "enum": [
              "",
              "fulltime",
              "partial",
              "punctual",
              "no"
            ],
            "type": "string",
            "description": "Optional remote policy.",
            "default": ""
          },
          "language": {
            "title": "Listing language",
            "enum": [
              "",
              "en",
              "fr",
              "de",
              "es"
            ],
            "type": "string",
            "description": "Language of the job listing. Empty keeps every language.",
            "default": ""
          },
          "salaryMinYearly": {
            "title": "Minimum yearly salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs whose yearly minimum is at least this amount. 0 or empty disables the filter."
          },
          "experienceMinYears": {
            "title": "Minimum experience (years)",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "Keep jobs that ask for at least this many years. 0 or empty disables the filter."
          },
          "companySlug": {
            "title": "Company slug",
            "type": "string",
            "description": "Optional company slug from the public company path, such as doctolib."
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Relevance matches the public search default. Date puts the newest jobs first. Monitor mode always sorts by date.",
            "default": "relevance"
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional public search, company, or job URLs. When set, they replace keyword and city. A job URL reads that listing. A company URL reads that company's jobs.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "includeDetails": {
            "title": "Include job page",
            "type": "boolean",
            "description": "Open each job's public record for the apply link, skills, and the longer description. Salary and the listing text are already on the search row. One dataset row is still one job.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum job rows across all searches. 0 means no cap other than max pages and the 1,000-hit index ceiling.",
            "default": 50
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Safety cap. Each page has 20 jobs. The index stops serving results after 1,000 hits per query.",
            "default": 5
          },
          "monitorMode": {
            "title": "Monitor mode",
            "type": "boolean",
            "description": "On a schedule, push and charge only job ids not seen in a previous run. The first run is the baseline. Newest jobs first. Stops a search when a page is entirely known.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Named key-value store for seen job ids. Use one name per watch.",
            "default": "welcome-to-the-jungle-jobs-monitor"
          },
          "resetMonitorState": {
            "title": "Reset monitor state",
            "type": "boolean",
            "description": "Clear the seen-job cache before this run.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave proxy off. The public job index answers without a proxy. Enable one only if you see HTTP 403 or 429.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}