{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper - Job Listings, Salaries & Companies",
    "description": "LinkedIn jobs scraper for job listings and job postings: full job descriptions, salaries, seniority, applicants and company details. Search by keyword and location, with date, company, job type and remote filters, any number of jobs. Export or use the API. No login or cookies. $0.35 per 1,000 jobs.",
    "version": "1.0",
    "x-build-id": "EefojAvRSq4qnqayq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/socialscrapers~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-socialscrapers-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/socialscrapers~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-socialscrapers-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/socialscrapers~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-socialscrapers-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": "Searches",
            "type": "array",
            "description": "One object per search. Fields (all optional):<br>• <code>keywords</code>: job title, skill or company, e.g. \"data analyst\"<br>• <code>location</code>: city, region or country, e.g. \"London\" or \"Texas, United States\" (default: Worldwide)<br>• <code>datePosted</code>: anyTime, pastMonth, pastWeek, past24Hours, pastHour, or any window in seconds such as \"r7200\" (the past 2 hours)<br>• <code>companies</code>: company names or LinkedIn company IDs, e.g. [\"Stripe\", \"1441\"]<br>• <code>jobTypes</code>: fullTime, partTime, contract, temporary, internship, volunteer, other<br>• <code>experienceLevels</code>: internship, entryLevel, associate, midSenior, director, executive<br>• <code>workplaceTypes</code>: onSite, remote, hybrid<br>• <code>easyApply</code>: true for Easy Apply jobs only<br>• <code>under10Applicants</code>: true for jobs with fewer than 10 applicants<br>• <code>maxJobs</code>: jobs to save from this search, 0 for all (default: Max jobs per search)"
          },
          "searchUrls": {
            "title": "Search URLs",
            "type": "array",
            "description": "LinkedIn job search links copied from your browser (linkedin.com/jobs/search?...). Every filter in the link is used; lnkd.in short links to a search are followed. Example: https://www.linkedin.com/jobs/search?keywords=nurse&location=Texas&f_TPR=r86400",
            "items": {
              "type": "string"
            }
          },
          "jobUrls": {
            "title": "Job URLs",
            "type": "array",
            "description": "Links to single LinkedIn jobs (linkedin.com/jobs/view/..., with or without tracking parameters), lnkd.in short links to a job, or job IDs, e.g. https://www.linkedin.com/jobs/view/4000000000 or 4000000000.",
            "items": {
              "type": "string"
            }
          },
          "maxJobsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 0,
            "type": "integer",
            "description": "Jobs to save from each search URL, and from each search without its own maxJobs. 0 saves every job LinkedIn has for the search. LinkedIn shows about 1,000 results per search; for more, the scraper automatically splits the search by state or region, city and date posted, and saves each job once.",
            "default": 100
          },
          "includeDescription": {
            "title": "Include description and job details",
            "type": "boolean",
            "description": "Open every job's page for its full description, seniority level, employment type, industries, applicants, salary, apply type, job poster and whether it still accepts applications. Turn off for a faster list with the search-result fields only (title, company, location, date posted).",
            "default": true
          },
          "includeCompanyDetails": {
            "title": "Include company details",
            "type": "boolean",
            "description": "Add each hiring company's website, industry, size, employees on LinkedIn, headquarters and address, type, year founded, specialties, followers and About text. Each company page is read once per run, however many of its jobs you get.",
            "default": false
          },
          "keywordMatch": {
            "title": "Only jobs that mention your keywords",
            "enum": [
              "off",
              "title",
              "titleOrDescription"
            ],
            "type": "string",
            "description": "LinkedIn fills a search that has few matching jobs with related ones (even a made-up word lists thousands of jobs). Choose where every word of your keywords must appear: in the job title, or in the title or description. Jobs left out this way are not charged. Off keeps LinkedIn's results as they are.",
            "default": "off"
          },
          "filtersAsKeywords": {
            "title": "Add job type, experience and workplace to the search words",
            "type": "boolean",
            "description": "LinkedIn's public job search treats job type, experience level and workplace (remote, hybrid, on-site) as words of the search rather than as filters. When on, the options you pick are added to your keywords, e.g. \"Remote Entry level data analyst\". Jobs are always checked against the employment type and seniority level on their page.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many LinkedIn pages are loaded at the same time, e.g. 20. Lower it if you see many refused requests in the log.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "By default Apify Proxy (datacenter IPs), and any page LinkedIn keeps refusing there is retried automatically through Apify's residential proxy. Choose RESIDENTIAL to use residential IPs for every request.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}