{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper",
    "description": "Scrape LinkedIn jobs from search URLs or filters. Get title, salary, full description, seniority, applicants, apply link, recruiter and company data (website, size, industry). Split searches by city to get past the 1000-job cap. No login or cookies needed. Export to JSON, CSV or Excel.",
    "version": "0.0",
    "x-build-id": "XpkSWQJIjdFtT3s88"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/briskpebble~Linkedin-Jobs-Scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-briskpebble-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/briskpebble~Linkedin-Jobs-Scraper/runs": {
      "post": {
        "operationId": "runs-sync-briskpebble-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/briskpebble~Linkedin-Jobs-Scraper/run-sync": {
      "post": {
        "operationId": "run-sync-briskpebble-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": {
          "urls": {
            "title": "LinkedIn job search URLs",
            "type": "array",
            "description": "Open <a href=\"https://www.linkedin.com/jobs/search\" target=\"_blank\">linkedin.com/jobs/search</a> in an incognito window, search with the filters you want and paste the URL from the address bar. You can add several searches, and also single job URLs (<code>linkedin.com/jobs/view/...</code>).<br><br>When URLs are provided, the search filters below are ignored.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Job title, skills or company, for example <code>data engineer python</code>."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or country as you would type it on LinkedIn, e.g. <code>United States</code>, <code>London, United Kingdom</code> or <code>Remote</code>."
          },
          "geoId": {
            "title": "Geo ID",
            "type": "string",
            "description": "Optional LinkedIn location id for precise targeting (the <code>geoId=</code> value of a LinkedIn search URL, e.g. <code>103644278</code> = United States). Takes precedence over the location text."
          },
          "distance": {
            "title": "Distance (miles)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Search radius around the location. Leave empty for LinkedIn's default."
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "anyTime",
              "pastHour",
              "past24Hours",
              "pastWeek",
              "pastMonth"
            ],
            "type": "string",
            "description": "Only return jobs posted within this window.",
            "default": "anyTime"
          },
          "companyIds": {
            "title": "Company IDs",
            "type": "array",
            "description": "LinkedIn numeric company ids (the <code>f_C=</code> value of a search URL), e.g. <code>1441</code> for Google.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "under10Applicants": {
            "title": "Under 10 applicants",
            "type": "boolean",
            "description": "Only jobs with fewer than 10 applicants.",
            "default": false
          },
          "easyApply": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Only jobs that can be applied to directly on LinkedIn.",
            "default": false
          },
          "jobTypes": {
            "title": "Job type",
            "type": "array",
            "description": "LinkedIn's public AI search no longer supports this as a URL filter; with \"Auto convert\" on it's added to the keywords instead.",
            "items": {
              "type": "string",
              "enum": [
                "F",
                "P",
                "C",
                "T",
                "I",
                "V",
                "O"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            }
          },
          "experienceLevels": {
            "title": "Experience level",
            "type": "array",
            "description": "Converted to keywords when \"Auto convert\" is on.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            }
          },
          "workplaceTypes": {
            "title": "Workplace type",
            "type": "array",
            "description": "Converted to keywords when \"Auto convert\" is on.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3"
              ],
              "enumTitles": [
                "On-site",
                "Remote",
                "Hybrid"
              ]
            }
          },
          "minSalary": {
            "title": "Minimum salary",
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9"
            ],
            "type": "string",
            "description": "Converted to keywords when \"Auto convert\" is on."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "recent"
            ],
            "type": "string",
            "description": "Order of the search results."
          },
          "autoConvertToAiSearch": {
            "title": "Auto convert old search filters to AI search (recommended)",
            "type": "boolean",
            "description": "LinkedIn's public job search now runs on AI search, which ignores many classic filters (job type, experience, workplace type, salary). When on, those filters are removed from the URL and added to the keywords in plain English, e.g. <code>f_WT=2</code> becomes \"remote\". Date posted, company, Easy Apply and under 10 applicants stay URL filters.",
            "default": true
          },
          "scrapeJobDetails": {
            "title": "Scrape job details",
            "type": "boolean",
            "description": "Open each job to get the description, seniority, employment type, job function, industries, applicants, apply URL and job poster. Turn off for a fast, cheap run with search card data only (title, company, location, salary, date).",
            "default": true
          },
          "scrapeCompany": {
            "title": "Scrape company details",
            "type": "boolean",
            "description": "Adds company website, size, employee count, industry, headquarters, followers and description. Each company is fetched once per run. Requires \"Scrape job details\".",
            "default": true
          },
          "limitPerSource": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum jobs from each search URL (or from the filters). Leave empty to scrape everything LinkedIn returns, up to ~1000 per search."
          },
          "maxItems": {
            "title": "Max jobs in total",
            "minimum": 1,
            "type": "integer",
            "description": "Stop the whole run after this many jobs, across all searches. Leave empty for no limit."
          },
          "splitByLocation": {
            "title": "Split search by city locations",
            "type": "boolean",
            "description": "Runs each search once per city of the chosen country (or of your own list) to get past LinkedIn's ~1000 results cap. Duplicate jobs are removed. This overrides the location of your search.",
            "default": false
          },
          "splitCountry": {
            "title": "Country to split by",
            "enum": [
              "US",
              "CA",
              "GB",
              "IE",
              "DE",
              "FR",
              "NL",
              "BE",
              "CH",
              "AT",
              "ES",
              "IT",
              "PT",
              "SE",
              "NO",
              "DK",
              "FI",
              "PL",
              "CZ",
              "RO",
              "IN",
              "SG",
              "AE",
              "SA",
              "AU",
              "NZ",
              "JP",
              "BR",
              "MX",
              "ZA",
              "PK",
              "PH"
            ],
            "type": "string",
            "description": "Its major cities are searched one by one. Used only when \"Split search by city locations\" is on."
          },
          "splitLocations": {
            "title": "Custom split locations",
            "type": "array",
            "description": "Your own list of locations to split by, e.g. <code>Austin, Texas, United States</code>. Overrides the country.",
            "items": {
              "type": "string"
            }
          },
          "titleExcludeKeywords": {
            "title": "Exclude job titles containing",
            "type": "array",
            "description": "Skip jobs whose title contains any of these words (case-insensitive), e.g. <code>senior</code>, <code>intern</code>.",
            "items": {
              "type": "string"
            }
          },
          "companyExcludeNames": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Skip jobs from these companies (case-insensitive, partial match), e.g. staffing agencies.",
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "LinkedIn rate-limits datacenter IPs heavily. Residential proxy gives the most reliable results.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum parallel requests. Higher is faster but increases the chance of being rate-limited.",
            "default": 10
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "How many times a failed or blocked request is retried with a new proxy session.",
            "default": 6
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}