{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper (No Login) + Direct Apply Links",
    "description": "Scrape public LinkedIn job listings without login or cookies: title, company, location, salary min/max, remote/hybrid, applicants, seniority, full description and the employer's direct apply link (Greenhouse, Lever, Ashby, Workable, Workday). Only-new-jobs mode for daily alerts.",
    "version": "1.1",
    "x-build-id": "wfcNfR9x5RSD1281a"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hydrocore~linkedin-jobs-scraper-no-login/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hydrocore-linkedin-jobs-scraper-no-login",
        "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/hydrocore~linkedin-jobs-scraper-no-login/runs": {
      "post": {
        "operationId": "runs-sync-hydrocore-linkedin-jobs-scraper-no-login",
        "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/hydrocore~linkedin-jobs-scraper-no-login/run-sync": {
      "post": {
        "operationId": "run-sync-hydrocore-linkedin-jobs-scraper-no-login",
        "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": "array",
            "description": "Job titles or skills, one per line, exactly as you would type them into LinkedIn's job search, for example \"registered nurse\" or \"python developer\". Every keyword is searched in every location below.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, states, countries or \"Remote\", one per line, for example \"Austin, Texas\", \"Germany\" or \"London\". Leave empty to search worldwide.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "LinkedIn job search URLs (optional)",
            "type": "array",
            "description": "Instead of (or as well as) keywords: open linkedin.com/jobs, run a search with the filters you want, and paste the address from your browser here (it looks like https://www.linkedin.com/jobs/search/?keywords=...&location=...). Its keywords, location and filters are used. You do not need to be logged in.",
            "items": {
              "type": "string"
            }
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "hour",
              "day",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only jobs posted in this period. For a daily job alert, choose \"Past 24 hours\" and schedule the Actor once a day (also see \"Only new jobs\").",
            "default": "any"
          },
          "workplaceTypes": {
            "title": "Workplace type",
            "type": "array",
            "description": "Only these workplace types. When you pick one or more, each is searched separately, so every job gets an exact workplaceType from LinkedIn's own filter. Leave empty for all; the type is then read from the title, location and description where it is stated.",
            "items": {
              "type": "string",
              "enum": [
                "on-site",
                "remote",
                "hybrid"
              ],
              "enumTitles": [
                "On-site",
                "Remote",
                "Hybrid"
              ]
            }
          },
          "jobTypes": {
            "title": "Job type",
            "type": "array",
            "description": "Only these job types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            }
          },
          "experienceLevels": {
            "title": "Experience level",
            "type": "array",
            "description": "Only these experience levels. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry",
                "associate",
                "mid-senior",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevant",
              "recent"
            ],
            "type": "string",
            "description": "\"Most recent\" is best for alerts and for \"Only new jobs\" (the run can stop as soon as it reaches jobs you already have).",
            "default": "recent"
          },
          "distanceMiles": {
            "title": "Distance (miles)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Optional radius around the location, for example 25. Empty or 0 = LinkedIn's default."
          },
          "titleMustInclude": {
            "title": "Title must contain (any of)",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words, for example \"senior\" or \"manager\". Not case sensitive. Skipped jobs are not charged.",
            "items": {
              "type": "string"
            }
          },
          "excludeWords": {
            "title": "Exclude words",
            "type": "array",
            "description": "Skip jobs whose title or company contains any of these words, for example \"intern\" or \"recruiting agency\". Skipped jobs are not charged.",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Skip jobs from these companies (name or part of it), for example staffing agencies you do not want. Skipped jobs are not charged.",
            "items": {
              "type": "string"
            }
          },
          "salaryOnly": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "Keep only jobs where a pay range was found (on LinkedIn or in the description). Needs \"Full job details\". Jobs without a salary are skipped for free (their page is still read, so the run takes a bit longer).",
            "default": false
          },
          "maxJobsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop each search (each keyword + location combination) after this many saved jobs. LinkedIn shows at most about 1,000 jobs of one search to logged-out visitors; split big searches by location to get more.",
            "default": 100
          },
          "maxJobsTotal": {
            "title": "Max jobs in total",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Optional overall limit for the whole run. Empty or 0 = no overall limit."
          },
          "includeDetails": {
            "title": "Full job details",
            "type": "boolean",
            "description": "On: open each job and save the full record (description, applicants, seniority, job type, function, industries, salary, apply type and direct apply link), charged as \"Job with details\". Off: save only the search card (title, company, location, posted date, link, salary when the card shows it), charged at the cheaper \"Basic job card\" price and much faster.",
            "default": true
          },
          "resolveApplyLinks": {
            "title": "Find the direct employer apply link",
            "type": "boolean",
            "description": "LinkedIn hides the employer's own apply link from logged-out visitors. With this on, the Actor checks whether the company posts the same job on a public job board (Greenhouse, Lever, Ashby, Workable, Workday or Personio) and adds that job's apply link to applyUrl. Included in the \"Job with details\" price. Found for companies that use these systems; empty for the others.",
            "default": true
          },
          "checkCompanyWebsite": {
            "title": "Also check the company website for its job board",
            "type": "boolean",
            "description": "When the company's job board cannot be guessed from its name, read the company website (from its public LinkedIn page) and its careers page to find it. Finds more apply links (for example Workday boards) but adds a few seconds per new company. Results are remembered for 7 days in your key-value store linkedin-jobs-ats-cache, so later runs are faster.",
            "default": true
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "text",
              "html",
              "both",
              "none"
            ],
            "type": "string",
            "description": "How to save the job description (with full details on).",
            "default": "text"
          },
          "onlyNewJobs": {
            "title": "Only new jobs since the last run",
            "type": "boolean",
            "description": "Remember the jobs already delivered for this search and save only jobs you have not received before, so scheduled runs never charge you twice for the same job. The first run saves everything it finds. Memory is kept in your key-value store linkedin-jobs-monitor.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitoring list name",
            "type": "string",
            "description": "Optional. By default the memory is tied to the exact keywords, locations and filters. Give it a name (for example nurses-texas) to keep the same memory when you edit the search."
          },
          "maxSpendUsd": {
            "title": "Max spend for this run (USD)",
            "type": "string",
            "description": "Optional, for example 2.00. The run stops before going over it. Apify's own \"Maximum cost per run\" option is respected too; the lower of the two applies."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed for normal use. If LinkedIn starts answering \"too many requests\" on very large runs, enable Apify Proxy (datacenter is enough) and the Actor switches IP instead of waiting. Proxy traffic is billed by Apify to your account. Used only for LinkedIn pages.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}