{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper: Full Details, Salaries & New-Job Monitor",
    "description": "Scrape LinkedIn jobs with full descriptions, salary ranges, seniority, job type and applicant counts. No login. Get only new jobs on a schedule and go past the 1,000-result limit.",
    "version": "0.1",
    "x-build-id": "nQCNqa2Zb1leyDgNT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/stratumics~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-stratumics-linkedin-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/stratumics~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-stratumics-linkedin-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/stratumics~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-stratumics-linkedin-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": {
          "searches": {
            "title": "Job searches",
            "type": "array",
            "description": "Each search is keywords plus a location, typed the way you would type them on LinkedIn. Every search runs on its own and returns up to \"Max jobs per search\" jobs. Keywords can be a job title, a skill or a company name. Leave keywords empty to get every job in a location.",
            "items": {
              "type": "object",
              "properties": {
                "keywords": {
                  "title": "Keywords",
                  "type": "string",
                  "description": "Job title, skill or company, for example \"data analyst\" or \"registered nurse\".",
                  "editor": "textfield"
                },
                "location": {
                  "title": "Location",
                  "type": "string",
                  "description": "City, state, region or country, for example \"Austin, Texas, United States\" or \"Germany\".",
                  "editor": "textfield"
                }
              },
              "additionalProperties": false
            }
          },
          "startUrls": {
            "title": "LinkedIn URLs",
            "type": "array",
            "description": "Optional. Paste LinkedIn job search URLs from your browser, or links to single job postings. A pasted search keeps every filter in its URL, so the filters below apply only to the keyword searches above.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "any",
              "past-hour",
              "past-24h",
              "past-week",
              "past-month"
            ],
            "type": "string",
            "description": "Only jobs posted within this time. Use \"Past 24 hours\" or \"Past hour\" for scheduled monitoring runs.",
            "default": "any"
          },
          "jobTypes": {
            "title": "Job type",
            "type": "array",
            "description": "Keep only these employment types. Checked against each job page, so only matching jobs are saved and charged.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            },
            "default": []
          },
          "experienceLevels": {
            "title": "Experience level",
            "type": "array",
            "description": "Keep only these seniority levels. Checked against each job page. Jobs marked \"Not Applicable\" on LinkedIn are left out when this filter is on.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry-level",
                "associate",
                "mid-senior",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            },
            "default": []
          },
          "workplaceTypes": {
            "title": "Workplace",
            "type": "array",
            "description": "Keep only on-site, remote or hybrid jobs. LinkedIn hides this label from logged-out visitors, so the scraper reads it from the job title, location and description; jobs that never say are left out when this filter is on. Tip: also add \"remote\" to your keywords.",
            "items": {
              "type": "string",
              "enum": [
                "on-site",
                "remote",
                "hybrid"
              ],
              "enumTitles": [
                "On-site",
                "Remote",
                "Hybrid"
              ]
            },
            "default": []
          },
          "easyApplyOnly": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Only jobs you can apply to on LinkedIn with Easy Apply.",
            "default": false
          },
          "under10Applicants": {
            "title": "Fewer than 10 applicants",
            "type": "boolean",
            "description": "Only jobs that LinkedIn shows with fewer than 10 applicants so far.",
            "default": false
          },
          "companyIds": {
            "title": "Company IDs",
            "type": "array",
            "description": "Only jobs from these companies. Use LinkedIn's numeric company ID, which is the f_C value in a LinkedIn job search URL filtered by that company (for example 1441 for Google).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "distanceMiles": {
            "title": "Distance from location",
            "enum": [
              "any",
              "0",
              "5",
              "10",
              "25",
              "50",
              "100"
            ],
            "type": "string",
            "description": "Search radius around a city location, in miles.",
            "default": "any"
          },
          "maxJobsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Most jobs to save for each search or pasted search URL. LinkedIn shows at most 1,000 results per search; above that, turn on the option below.",
            "default": 100
          },
          "splitWideSearches": {
            "title": "Get past LinkedIn's 1,000-result limit",
            "type": "boolean",
            "description": "When a search reaches 1,000 results and you asked for more, run it again in slices (by state or region for supported countries, then by posting date) and merge the results without duplicates.",
            "default": true
          },
          "fetchJobDetails": {
            "title": "Full job details",
            "type": "boolean",
            "description": "Open each job page for the full description, seniority, employment type, industries, applicant count, salary and apply type. Turn off for a faster, cheaper list with title, company, location, date and link only.",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Also save the description with its original formatting as HTML, in descriptionHtml. The plain-text description is always included.",
            "default": false
          },
          "includeJobPoster": {
            "title": "Include the job poster",
            "type": "boolean",
            "description": "Add the name, headline and profile link of the person who posted the job, when LinkedIn shows them. This is personal data, so only turn it on if you have a legitimate reason to process it.",
            "default": false
          },
          "onlyNewJobs": {
            "title": "Only new jobs",
            "type": "boolean",
            "description": "Remember every job this monitor returns and skip it in later runs, so each scheduled run returns only new postings. Skipped jobs are not charged.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Name of the memory used by \"Only new jobs\". Use a different name for each saved task or schedule, for example \"nurses-texas\". Letters, digits and hyphens are kept.",
            "default": "default"
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Upper limit for requests running at once. The scraper slows down by itself when LinkedIn rate-limits, so the default suits most runs.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "LinkedIn limits requests per IP address. Apify datacenter proxies rotate IPs and are enough for this Actor.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}