{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper: Beyond the 1000 Limit, No Login",
    "description": "LinkedIn job postings by keyword, location, company or search URL, with no login or cookies. Goes past LinkedIn's 1,000-jobs-per-search limit by dividing large searches and reports the coverage it reached. Title, company, location, date, optional full description and details. No personal data.",
    "version": "0.1",
    "x-build-id": "UXSy3noNJHyHxSWxw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/charitable_trousseau~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-charitable_trousseau-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/charitable_trousseau~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-charitable_trousseau-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/charitable_trousseau~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-charitable_trousseau-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Job titles, skills or anything else you would type into LinkedIn's job search, one per line. Each line is a separate search. Leave empty to get every job in the location or at the companies below. If the keywords, location, companies and search URLs are all empty, the example search data analyst in Austin, Texas, United States runs.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Country, state or region, or city, as you would type it on LinkedIn, e.g. United States, Texas, United States or Austin, Texas, United States. Applies to the keywords above. Leave empty to search worldwide."
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "",
              "3600",
              "86400",
              "259200",
              "604800",
              "1209600",
              "2592000"
            ],
            "type": "string",
            "description": "Only jobs posted within this time. Applied by LinkedIn and checked again on every job returned.",
            "default": ""
          },
          "distance": {
            "title": "Distance from the location (miles)",
            "enum": [
              "",
              "0",
              "5",
              "10",
              "25",
              "50",
              "100"
            ],
            "type": "string",
            "description": "How far around a city to search. LinkedIn uses 25 miles when nothing is chosen. Has no effect on countries and states.",
            "default": ""
          },
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Only jobs at these companies. Give each company's LinkedIn page address (https://www.linkedin.com/company/microsoft), the last part of it (microsoft) or its numeric LinkedIn ID.",
            "items": {
              "type": "string"
            }
          },
          "titleIncludes": {
            "title": "Title must contain",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words or phrases (capital letters do not matter), e.g. data engineer. Useful on large searches: beyond the first thousand results LinkedIn's own matches get looser. Jobs left out are not charged.",
            "items": {
              "type": "string"
            }
          },
          "titleExcludes": {
            "title": "Title must not contain",
            "type": "array",
            "description": "Leave out jobs whose title contains any of these words or phrases, e.g. senior, intern. Jobs left out are not charged.",
            "items": {
              "type": "string"
            }
          },
          "jobTypes": {
            "title": "Job type",
            "type": "array",
            "description": "Only jobs of these types. LinkedIn's public search no longer applies this filter itself, so the scraper reads each posting's page and keeps only the ones that state one of these types. Every job returned is checked. Because the page is read anyway, jobs returned with this filter are charged as jobs with details.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "parttime",
                "contract",
                "temporary",
                "internship",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            }
          },
          "experienceLevels": {
            "title": "Experience level",
            "type": "array",
            "description": "Only jobs at these seniority levels. Checked on each posting's page in the same way as job type, and charged the same way.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry",
                "associate",
                "midsenior",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            }
          },
          "easyApply": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Only jobs that can be applied to on LinkedIn itself.",
            "default": false
          },
          "under10Applicants": {
            "title": "Under 10 applicants only",
            "type": "boolean",
            "description": "Only jobs LinkedIn marks as having fewer than 10 applicants.",
            "default": false
          },
          "searchUrls": {
            "title": "LinkedIn job search URLs",
            "type": "array",
            "description": "Paste the address of a linkedin.com/jobs/search results page. Keywords, location, distance, date posted, company, Easy Apply and under 10 applicants are taken from it; job type and experience level are checked on each posting. The fields above do not apply to these.",
            "items": {
              "type": "string"
            }
          },
          "maxJobsPerSearch": {
            "title": "Maximum jobs per keyword or URL",
            "minimum": 1,
            "type": "integer",
            "description": "The scraper stops a search when it has saved this many jobs. You are never charged for more. The best-ranked jobs come first.",
            "default": 100
          },
          "splitLargeSearches": {
            "title": "Go past LinkedIn's 1,000-job limit",
            "type": "boolean",
            "description": "LinkedIn hands out about 1,000 jobs per search. With this on, a search that counts more is divided by state or region, city, company and date, and the parts are merged without duplicates. Only matters when your maximum is above 1,000.",
            "default": true
          },
          "stopAtLinkedInCount": {
            "title": "Stop at LinkedIn's count",
            "type": "boolean",
            "description": "LinkedIn's count for a search stops near 12,000 however many jobs match, and searches divided by place also return matches the count leaves out, many of them only loosely related to your keywords. By default a search goes on until your maximum is reached or the divided searches bring nothing new. Switch this on to end a search once as many jobs are found as LinkedIn counts for it: you then get the best-ranked jobs of every state, region and city and fewer loose matches.",
            "default": false
          },
          "includeDescriptions": {
            "title": "Include job details and full description",
            "type": "boolean",
            "description": "Reads each posting's page and adds the full description, seniority level, employment type, job function, industries, number of applicants and, where LinkedIn shows it, the employer's own application link. Charged per job on top of the job itself.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave as it is: datacenter proxies are used, and residential ones only for requests LinkedIn refuses from them. Choose a proxy group here only if you want every request to go through it.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}