{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper – Jobs, Companies & Recruiters",
    "description": "Scrape LinkedIn jobs by keyword, location, or search URL. Get full job descriptions, company details, recruiter/job-poster data, salaries, applicant counts, and structured output. No LinkedIn login or cookies required.",
    "version": "1.0",
    "x-build-id": "5XdKJWNLHDYKrId7y"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/coregent~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-coregent-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/coregent~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-coregent-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/coregent~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-coregent-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": {
          "searchKeywords": {
            "title": "Search Keywords",
            "type": "array",
            "description": "Job titles, keywords, skills, or natural-language job searches. Each keyword is combined with each location, so 3 keywords x 2 locations = 6 searches.",
            "items": {
              "type": "string"
            },
            "default": [
              "Software Engineer"
            ]
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, regions, or countries to search in. Use \"Remote\" for remote-only searches. Leave empty to search everywhere.",
            "items": {
              "type": "string"
            },
            "default": [
              "Sydney, Australia"
            ]
          },
          "maxResults": {
            "title": "Maximum Jobs",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of unique jobs to save across the whole run. You are charged only for jobs actually saved.",
            "default": 100
          },
          "searchUrls": {
            "title": "Search URLs",
            "type": "array",
            "description": "Paste LinkedIn job search URLs, or individual job URLs (linkedin.com/jobs/view/...). Filters already present in the URL are preserved. Non-LinkedIn URLs are skipped with a warning.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "postedWithin": {
            "title": "Posted Within",
            "enum": [
              "anytime",
              "past24Hours",
              "pastWeek",
              "pastMonth"
            ],
            "type": "string",
            "description": "Only return jobs posted within this window.",
            "default": "anytime"
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "relevance",
              "recent"
            ],
            "type": "string",
            "description": "Result ordering requested from LinkedIn.",
            "default": "relevance"
          },
          "workplaceTypes": {
            "title": "Workplace",
            "type": "array",
            "description": "Remote, hybrid, or on-site. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            },
            "default": []
          },
          "employmentTypes": {
            "title": "Employment Type",
            "type": "array",
            "description": "Full-time, part-time, contract, and so on. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "fullTime",
                "partTime",
                "contract",
                "temporary",
                "internship",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            },
            "default": []
          },
          "experienceLevels": {
            "title": "Experience Level",
            "type": "array",
            "description": "Seniority levels to include. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entryLevel",
                "associate",
                "midSenior",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            },
            "default": []
          },
          "easyApplyOnly": {
            "title": "Easy Apply Only",
            "type": "boolean",
            "description": "Only return jobs that can be applied to directly on LinkedIn.",
            "default": false
          },
          "underTenApplicantsOnly": {
            "title": "Under 10 Applicants",
            "type": "boolean",
            "description": "Only return jobs with fewer than 10 applicants. Best-effort: LinkedIn often shows a bucket such as \"Over 200 applicants\" instead of an exact number, and jobs with no stated count are kept.",
            "default": false
          },
          "includeCompanies": {
            "title": "Include Companies",
            "type": "array",
            "description": "Only keep jobs from these companies. Accepts company names, LinkedIn company URLs, or company slugs.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "excludeCompanies": {
            "title": "Exclude Companies",
            "type": "array",
            "description": "Drop jobs from these companies. Exclusion always wins over inclusion.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "excludeJobTitleKeywords": {
            "title": "Exclude Job Title Keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words (case-insensitive). Applied before the job page is fetched, so excluded jobs are never charged.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "excludeLocations": {
            "title": "Exclude Locations",
            "type": "array",
            "description": "Drop jobs whose location contains any of these terms. Useful when LinkedIn broadens results beyond the location you asked for.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "jobFunctions": {
            "title": "Job Functions",
            "type": "array",
            "description": "Job functions to keep, for example Engineering or Marketing. Jobs with no stated function are kept.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "industries": {
            "title": "Industries",
            "type": "array",
            "description": "Industries to keep, for example Software Development. Jobs with no stated industry are kept.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "excludeRecruitmentAgencies": {
            "title": "Exclude Recruitment Agencies",
            "type": "boolean",
            "description": "Drop staffing and recruiting agencies so you see direct employers. Uses company-name patterns, plus the company's LinkedIn industry when company enrichment is enabled. Off by default — agencies are never removed silently.",
            "default": false
          },
          "minimumCompanyEmployees": {
            "title": "Min Company Employees",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep jobs at companies with at least this many employees. Requires company data, so setting this automatically enables Include Company Details and its per-company charge. Jobs whose company size could not be determined are kept."
          },
          "maximumCompanyEmployees": {
            "title": "Max Company Employees",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep jobs at companies with at most this many employees. Requires company data, so setting this automatically enables Include Company Details and its per-company charge."
          },
          "minimumApplicants": {
            "title": "Min Applicants",
            "minimum": 0,
            "type": "integer",
            "description": "Best-effort — jobs with no exact applicant count are kept."
          },
          "maximumApplicants": {
            "title": "Max Applicants",
            "minimum": 0,
            "type": "integer",
            "description": "Best-effort — jobs with no exact applicant count are kept."
          },
          "minimumSalary": {
            "title": "Min Salary",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep jobs whose stated salary range reaches this figure. Jobs without a published salary are kept unless you enable Exclude Jobs Without Salary."
          },
          "maximumSalary": {
            "title": "Max Salary",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep jobs whose stated salary range starts at or below this figure."
          },
          "salaryCurrency": {
            "title": "Salary Currency",
            "enum": [
              "",
              "USD",
              "AUD",
              "EUR",
              "GBP",
              "CAD",
              "SGD",
              "INR"
            ],
            "type": "string",
            "description": "Restrict salary filtering to one currency. Leave empty to accept any.",
            "default": ""
          },
          "excludeJobsWithoutSalary": {
            "title": "Exclude Jobs Without Salary",
            "type": "boolean",
            "description": "Drop jobs that do not publish a salary. Most LinkedIn jobs do not, so this reduces results sharply.",
            "default": false
          },
          "removeDuplicates": {
            "title": "Remove Duplicate Jobs",
            "type": "boolean",
            "description": "Remove the same job when it appears under several keywords or locations. Matched by job ID, then job URL, then title + company + location.",
            "default": true
          },
          "skipJobIds": {
            "title": "Skip Job IDs",
            "type": "array",
            "description": "Job IDs already collected in a previous run. Matching jobs are skipped before their page is fetched, so they cost nothing.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "skipUrls": {
            "title": "Skip URLs",
            "type": "array",
            "description": "Previously scraped job URLs. Same effect as Skip Job IDs, for when you stored URLs rather than IDs.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "includeCompanyDetails": {
            "title": "Include Company Details",
            "type": "boolean",
            "description": "Add company website, domain, industry, size, employee count, headquarters, and description. Charged once per unique company, not once per job — a company appearing in 50 jobs is charged once. Failed lookups are not charged.",
            "default": false
          },
          "includeRecruiterDetails": {
            "title": "Include Recruiter Details",
            "type": "boolean",
            "description": "Add the job poster / hiring team member when LinkedIn shows one publicly: name, headline, profile URL, and photo. No extra charge — it is read from the job page already being fetched. Most public job posts do not name a recruiter, so this field is often empty.",
            "default": true
          },
          "extractPublicEmails": {
            "title": "Extract Public Emails",
            "type": "boolean",
            "description": "Collect email addresses that appear publicly in the job description (and the company profile, if company details are enabled). No external email-lookup service is used and nothing extra is charged. Expect most jobs to return an empty list — most employers route applications through LinkedIn rather than publishing an address. Recruitment-agency listings are the most likely to include one.",
            "default": false
          },
          "expandLargeSearches": {
            "title": "Expand Large Searches",
            "type": "boolean",
            "description": "For broad searches that hit LinkedIn's result ceiling, split the search into smaller location-based sub-searches and merge the results. Your Maximum Jobs limit still applies to the whole run.",
            "default": false
          },
          "dataSource": {
            "title": "Data Source",
            "enum": [
              "auto",
              "linkedinPublic",
              "tikhub"
            ],
            "type": "string",
            "description": "Where job data comes from. \"Automatic\" uses LinkedIn's public pages and falls back to a backup provider only for jobs LinkedIn blocks. On the Apify Free plan the backup provider has a smaller budget; everything else is unaffected and you are never charged for it.",
            "default": "auto"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy settings. Datacenter or no proxy both work well here. Apify Residential is NOT supported and the run will stop immediately if it is selected — if you need residential routing, supply your own provider under Custom proxy URLs.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}