{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper: Salary, Remote & New-Job Alerts",
    "description": "Scrape LinkedIn job listings by keyword, location, company or search URL, signed out, no cookies. Full description, salary, seniority, job type, applicants, Easy Apply vs external. Remote/hybrid and experience filters, only-new-jobs feeds. Unofficial; not affiliated with LinkedIn.",
    "version": "0.1",
    "x-build-id": "s94aFeGU3rfrOKnVq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/humble-echidna~linkedin-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-humble-echidna-linkedin-jobs",
        "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/humble-echidna~linkedin-jobs/runs": {
      "post": {
        "operationId": "runs-sync-humble-echidna-linkedin-jobs",
        "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/humble-echidna~linkedin-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-humble-echidna-linkedin-jobs",
        "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": "Job titles or keywords",
            "type": "array",
            "description": "What to search LinkedIn Jobs for, one search per line, as you'd type it into LinkedIn's search box, e.g. data engineer, nurse practitioner, react developer. Every line is searched in every location below. Leave empty to list every job at the companies you name below. Default: software engineer.",
            "default": [
              "software engineer"
            ],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Where the jobs are, one per line, as you'd type it on LinkedIn: a country (United States, Germany), a state or region (California), or a city (London, Austin, Texas). Each keyword line is searched in each location. Leave empty for LinkedIn's worldwide results. Default: United States.",
            "default": [
              "United States"
            ],
            "items": {
              "type": "string"
            }
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "any",
              "past-hour",
              "past-24-hours",
              "past-week",
              "past-month"
            ],
            "type": "string",
            "description": "Only jobs posted within this time: `any` (default), `past-hour`, `past-24-hours`, `past-week` or `past-month`. LinkedIn applies it to the search itself.",
            "default": "any"
          },
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Only jobs at these companies, one per line: the company's name exactly as LinkedIn shows it (Stripe), its LinkedIn page (https://www.linkedin.com/company/stripe/) or its numeric LinkedIn company id. A name that doesn't match one LinkedIn company exactly is reported in the log with the closest names LinkedIn offers, and left out. With no keywords, every job at these companies is listed. Leave empty for any company.",
            "items": {
              "type": "string"
            }
          },
          "workplaceTypes": {
            "title": "Workplace",
            "type": "array",
            "description": "Only jobs the posting says are remote, hybrid or on-site. LinkedIn doesn't apply this filter to signed-out searches, so the actor reads it from each job's location line, title and description; jobs that don't say are left out (and not charged). Leave empty for all jobs.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            }
          },
          "experienceLevels": {
            "title": "Experience level",
            "type": "array",
            "description": "Only jobs at these levels, matched against the posting's own \"Seniority level\" line (LinkedIn doesn't apply this filter to signed-out searches). Postings marked \"Not Applicable\" are left out when this is set (and not charged). 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"
              ]
            }
          },
          "employmentTypes": {
            "title": "Job type",
            "type": "array",
            "description": "Only jobs of these types, matched against the posting's own \"Employment type\" line (LinkedIn doesn't apply this filter to signed-out searches). 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"
              ]
            }
          },
          "searchUrls": {
            "title": "LinkedIn search URLs",
            "type": "array",
            "description": "Optional: LinkedIn job search pages to read as they are, one per line, e.g. https://www.linkedin.com/jobs/search/?keywords=product%20manager&location=Canada&f_TPR=r604800. Each URL is a search of its own; its workplace (f_WT), experience (f_E) and job type (f_JT) choices are applied by the actor, since LinkedIn ignores them signed out. The fields above don't change a pasted URL's search.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "recent",
              "relevant"
            ],
            "type": "string",
            "description": "`recent` (default): newest first, best for feeds and \"only new jobs\". `relevant`: LinkedIn's best matches first.",
            "default": "recent"
          },
          "includeDetails": {
            "title": "Read each job's full posting",
            "type": "boolean",
            "description": "Default true: open every job's posting for its description, salary, seniority, job type, industries, applicant count and how to apply. false: only what the search list shows (title, company, location, date, sometimes salary), which is faster. The workplace, experience and job type filters always read the posting.",
            "default": true
          },
          "onlyNewJobs": {
            "title": "Only jobs new since my last run",
            "type": "boolean",
            "description": "Default false. When true, the first run returns every matching job and later runs return only jobs this search hasn't returned before. What was returned is remembered in your own Apify account, separately for each search (keywords, location, companies and filters together), so different searches never hide each other's jobs. Schedule it hourly or daily for a new-job feed.",
            "default": false
          },
          "maxResultsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "type": "integer",
            "description": "Stop each search (one keyword in one location, or one URL) after this many jobs, e.g. 50, so one broad search can't use up the whole run. Minimum 1; leave empty (the default) for as many as LinkedIn lists, which is at most about 1,000 per search."
          },
          "maxResults": {
            "title": "Max jobs per run",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many jobs in total across all searches (default 100, pre-filled with 20 in the form). Minimum 1. Raise it (e.g. 1000) for a full sweep. The run also stops cleanly at the maximum cost per run you set in the run options, whichever comes first.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}