{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper - Search, Filter & Detail Extraction",
    "description": "🔥 ~$0.05/1K jobs 🔥 Scrape LinkedIn job listings via the public guest API. Search with filters (job type, experience, remote, salary), fetch full descriptions and criteria. No login required.",
    "version": "1.0",
    "x-build-id": "VrjEwf412wH51PGvP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kaix~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kaix-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/kaix~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-kaix-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/kaix~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-kaix-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": "Search query",
            "type": "string",
            "description": "Enter keywords or describe the jobs you want in a sentence. Use queries for several searches. Use separate location and date fields when those conditions matter. Empty input returns an empty Dataset."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "One location. Combined with locations. Company and keyword filters still apply."
          },
          "maxJobs": {
            "title": "Max jobs",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum unique jobs across all searches. 0 means all available, up to 100000. Each search has a 1000-result source limit. Direct job IDs ignore this limit.",
            "default": 25
          },
          "fetchDetails": {
            "title": "Fetch full job details",
            "type": "boolean",
            "description": "Add descriptions, complete published criteria, compensation context, benefits, application details, recruiter information, and related searches. Direct job IDs always include details.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevant",
              "recent"
            ],
            "type": "string",
            "description": "Sort structured search results by relevance or date. Each search is sorted independently. LinkedIn no longer sorts logged-out searches by date, so for Most recent the Actor searches the last hour, day, week, and month in turn, then sorts the saved jobs by date.",
            "default": "relevant"
          },
          "searchUrl": {
            "title": "Search URL",
            "type": "string",
            "description": "One LinkedIn jobs search URL. Uses its own filters. Combined with searchUrls and any structured searches. Global limits and enrichment settings still apply."
          },
          "companyId": {
            "title": "Company IDs",
            "type": "string",
            "description": "A company ID or comma-separated IDs. Combine with keywords and location. Use companies for names or company URLs."
          },
          "jobIds": {
            "title": "Job IDs",
            "type": "array",
            "description": "Fetch specific jobs by their LinkedIn job IDs (e.g. '4406118990'). Always fetches full details, preserves repeated IDs, and ignores blank entries.",
            "items": {
              "type": "string"
            }
          },
          "jobType": {
            "title": "Job type",
            "type": "array",
            "description": "Filter by job type. LinkedIn no longer applies this filter, so the Actor reads each job's detail page and keeps only matching jobs. This needs one more request for each job that it checks.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "temporary",
                "volunteer",
                "internship",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Volunteer",
                "Internship",
                "Other"
              ]
            }
          },
          "experienceLevel": {
            "title": "Experience level",
            "type": "array",
            "description": "Filter by experience level. LinkedIn no longer applies this filter, so the Actor reads each job's detail page and keeps only matching jobs. This needs one more request for each job that it checks.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry_level",
                "associate",
                "mid_senior",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            }
          },
          "workType": {
            "title": "Work type",
            "type": "array",
            "description": "Filter by work arrangement. LinkedIn no longer applies this filter to logged-out searches, and the job page does not show it, so results can include other work types.",
            "items": {
              "type": "string",
              "enum": [
                "on_site",
                "remote",
                "hybrid"
              ],
              "enumTitles": [
                "On-site",
                "Remote",
                "Hybrid"
              ]
            }
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "past_24h",
              "past_week",
              "past_month"
            ],
            "type": "string",
            "description": "Filter by when job was posted."
          },
          "datePostedSeconds": {
            "title": "Date posted (custom seconds)",
            "minimum": 1,
            "maximum": 2592000,
            "type": "integer",
            "description": "Custom posted-within window in seconds, e.g. 3600 for the last hour. Overrides Date posted. Maximum 2592000 (30 days). Ignored when a search URL is used."
          },
          "salary": {
            "title": "Minimum salary",
            "enum": [
              "40000",
              "60000",
              "80000",
              "100000",
              "120000",
              "140000",
              "160000",
              "180000",
              "200000"
            ],
            "type": "string",
            "description": "Filter by minimum salary range."
          },
          "easyApplyOnly": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Only show jobs with LinkedIn Easy Apply.",
            "default": false
          },
          "includeSimilar": {
            "title": "Include similar jobs",
            "type": "boolean",
            "description": "Fetch similar job listings for each scraped job.",
            "default": false
          },
          "maxSimilarJobs": {
            "title": "Max similar jobs per listing",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of related jobs per listing. Set to 0 for all available related jobs, up to 1000.",
            "default": 25
          },
          "proxyConfiguration": {
            "title": "Connection settings",
            "type": "object",
            "description": "Configure network routing. Apify Proxy is enabled by default; saved empty proxy arrays are ignored.",
            "default": {
              "useApifyProxy": true
            },
            "additionalProperties": true
          },
          "queries": {
            "title": "Search queries",
            "maxItems": 100,
            "type": "array",
            "description": "Enter keywords or sentence queries. Run one search per query and location. Combined with keywords.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "maxItems": 100,
            "type": "array",
            "description": "Search each location. Combined with location. Each geo ID adds another location search.",
            "items": {
              "type": "string"
            }
          },
          "companies": {
            "title": "Companies",
            "maxItems": 20,
            "type": "array",
            "description": "Company IDs, exact company names, or LinkedIn company URLs. Combined as one company filter with companyId.",
            "items": {
              "type": "string"
            }
          },
          "geoIds": {
            "title": "Location IDs",
            "maxItems": 10,
            "type": "array",
            "description": "LinkedIn location IDs. Run one search per ID and query.",
            "items": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            }
          },
          "searchUrls": {
            "title": "Search URLs",
            "maxItems": 100,
            "type": "array",
            "description": "LinkedIn jobs search URLs. Each URL uses its own filters. Combined with searchUrl and any structured searches.",
            "items": {
              "type": "string"
            }
          },
          "industryIds": {
            "title": "Industry IDs",
            "maxItems": 20,
            "type": "array",
            "description": "LinkedIn industry IDs for structured searches. LinkedIn controls filter availability.",
            "items": {
              "type": "string",
              "pattern": "^[1-9]\\d*$"
            }
          },
          "maxJobsPerSearch": {
            "title": "Jobs per search",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum new jobs from each search. 0 means up to 1000. The total maxJobs limit still applies.",
            "default": 1000
          },
          "startPage": {
            "title": "Start page",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "First search page, numbered from 1. Applies to every search, including search URLs. Pages stop at 40.",
            "default": 1
          },
          "under10Applicants": {
            "title": "Under 10 applicants",
            "type": "boolean",
            "description": "Request the LinkedIn under-10-applicants filter for structured searches.",
            "default": false
          },
          "fetchCompanyDetails": {
            "title": "Fetch company details",
            "type": "boolean",
            "description": "Fetch each public company profile once per run. Unavailable details are null. Works with search-only jobs too.",
            "default": false
          },
          "resolveLocations": {
            "title": "Resolve location IDs",
            "type": "boolean",
            "description": "Look up job and company location text in LinkedIn location suggestions. Return an ID only for one exact display-name match. Results are stored separately in enrichment.",
            "default": false
          },
          "parseCompanyAddresses": {
            "title": "Parse company addresses",
            "type": "boolean",
            "description": "Parse company address lines into separate address fields. Requires fetchCompanyDetails. Results are stored separately in enrichment.companyLocations.",
            "default": false
          },
          "measureImageDimensions": {
            "title": "Measure image dimensions",
            "type": "boolean",
            "description": "Read image headers from published LinkedIn CDN URLs to get width, height, and image type. Results are stored separately in enrichment.images.",
            "default": false
          },
          "fetchEmployerDetails": {
            "title": "Fetch employer job details",
            "type": "boolean",
            "description": "Read the public job data from the employer's hiring system for an exact external application URL or verified employer job ID. Supported systems: Greenhouse, Lever, Ashby, Workday, ADP Workforce Now, iCIMS, Oracle Recruiting Cloud, UKG Pro, Paylocity, SmartRecruiters, Workable, BambooHR, Rippling, Breezy HR, or Recruitee. Requires job details and an external application link to one of these systems. Results are stored in enrichment.employer.",
            "default": false
          },
          "userAgent": {
            "title": "User agent",
            "pattern": "^[^\\r\\n]+$",
            "minLength": 1,
            "maxLength": 1024,
            "type": "string",
            "description": "Optional User-Agent header for requests. Must contain 1 to 1024 characters and no line breaks."
          },
          "concurrency": {
            "title": "Concurrent job requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum concurrent job requests, from 1 to 10. Search pages and batch searches still run in order.",
            "default": 3
          },
          "adaptiveDelay": {
            "title": "Adjust request delays",
            "type": "boolean",
            "description": "Increase request delays after blocked or rate-limited responses, and reduce the delay after successful responses.",
            "default": true
          },
          "salaryThresholds": {
            "title": "Minimum salary thresholds",
            "maxItems": 9,
            "type": "array",
            "description": "Additional LinkedIn minimum salary filter values. Combined with salary into one filter for each structured search. LinkedIn controls how multiple values are applied.",
            "items": {
              "type": "string",
              "enum": [
                "40000",
                "60000",
                "80000",
                "100000",
                "120000",
                "140000",
                "160000",
                "180000",
                "200000"
              ],
              "enumTitles": [
                "$40,000+",
                "$60,000+",
                "$80,000+",
                "$100,000+",
                "$120,000+",
                "$140,000+",
                "$160,000+",
                "$180,000+",
                "$200,000+"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}