{
  "openapi": "3.0.1",
  "info": {
    "title": "JustJoin.it Scraper",
    "description": "[💰 $0.95 / 1K] Extract IT jobs from JustJoin.it — salaries in the posted pay period, skills with proficiency levels, company, location, and apply route. Search by keyword and city, filter by category, seniority, contract type, and remote/hybrid/office.",
    "version": "1.0",
    "x-build-id": "VymTB02y99wRxCc4p"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~justjoin-it-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-justjoin-it-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/solidcode~justjoin-it-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-justjoin-it-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/solidcode~justjoin-it-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-justjoin-it-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": {
          "keywords": {
            "title": "Search Keywords",
            "type": "string",
            "description": "Search term for job titles, skills, or companies (e.g. 'React', 'Python', 'DevOps'). Leave empty to browse all jobs."
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City name to filter by (e.g. 'Warszawa', 'Kraków', 'Wrocław', 'Berlin'). Also includes nearby jobs within ~30 km of the city. Leave empty to include all locations."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional: paste full JustJoin.it search or job-offer URLs to scrape directly (e.g. 'https://justjoin.it/job-offers/warszawa/python'). When provided, these are used in addition to the keyword/city search above.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "uniqueItems": true,
            "type": "array",
            "description": "Only include jobs in these tech categories. Leave empty for all categories.",
            "items": {
              "type": "string",
              "enum": [
                "ai",
                "javascript",
                "html",
                "php",
                "ruby",
                "python",
                "java",
                "net",
                "scala",
                "c",
                "mobile",
                "testing",
                "devops",
                "admin",
                "ux",
                "pm",
                "game",
                "analytics",
                "security",
                "data",
                "go",
                "support",
                "erp",
                "architecture",
                "other"
              ],
              "enumTitles": [
                "AI/ML",
                "JavaScript",
                "HTML",
                "PHP",
                "Ruby",
                "Python",
                "Java",
                ".NET",
                "Scala",
                "C / C++",
                "Mobile",
                "Testing",
                "DevOps",
                "Admin",
                "UX/UI",
                "Project Manager",
                "Game",
                "Analytics",
                "Security",
                "Data",
                "Go",
                "Support",
                "ERP",
                "Architecture",
                "Other"
              ]
            },
            "default": []
          },
          "seniority": {
            "title": "Seniority Level",
            "uniqueItems": true,
            "type": "array",
            "description": "Only include jobs at these experience levels. Leave empty for all levels.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "junior",
                "mid",
                "senior",
                "manager",
                "c_level"
              ],
              "enumTitles": [
                "Intern",
                "Junior",
                "Mid",
                "Senior",
                "Team Leader / Manager",
                "C-level"
              ]
            },
            "default": []
          },
          "employmentType": {
            "title": "Employment Type",
            "uniqueItems": true,
            "type": "array",
            "description": "Only include jobs offering these contract types. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "b2b",
                "permanent",
                "mandate_contract",
                "internship",
                "contract"
              ],
              "enumTitles": [
                "B2B",
                "Permanent (UoP)",
                "Mandate contract",
                "Internship",
                "Specific-task contract"
              ]
            },
            "default": []
          },
          "workingMode": {
            "title": "Working Mode",
            "uniqueItems": true,
            "type": "array",
            "description": "Only include jobs with these work arrangements. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "office"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "Office"
              ]
            },
            "default": []
          },
          "withSalaryOnly": {
            "title": "Only Jobs With Disclosed Salary",
            "type": "boolean",
            "description": "When enabled, only include job listings that publish a salary range.",
            "default": false
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "default",
              "newest",
              "salary-desc",
              "salary-asc"
            ],
            "type": "string",
            "description": "Order in which jobs are collected. \"Newest first\" uses JustJoin.it's own newest ranking, which puts freshly published jobs ahead of older listings an employer has renewed — so it can differ slightly from the datePosted column, which is refreshed on renewal.",
            "default": "default"
          },
          "includeDescription": {
            "title": "Include Full Job Description",
            "type": "boolean",
            "description": "When enabled, each job includes its full description (text and HTML) plus the apply URL, company profile URL, company size, country code, and whether the listing is still open. Disable for a faster, lighter run — those seven fields come back empty.",
            "default": true
          },
          "maxItems": {
            "title": "Maximum Jobs",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of job listings to collect. Set to 0 for no limit (collect everything matching your search).",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}