{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper - Professional Job Listings",
    "description": "Scrapes public job listings from LinkedIn's job board. Filter by location, job type, experience level, and remote options. Extract company info, job descriptions, and application links. No login required.",
    "version": "3.2",
    "x-build-id": "9RkxDUAeUA5rcPcG1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/santamaria-automations~linkedin-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-santamaria-automations-linkedin-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/santamaria-automations~linkedin-scraper/runs": {
      "post": {
        "operationId": "runs-sync-santamaria-automations-linkedin-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/santamaria-automations~linkedin-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-santamaria-automations-linkedin-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": {
          "startUrls": {
            "title": "Start URLs (LinkedIn search URLs)",
            "type": "array",
            "description": "Paste LinkedIn job search URLs directly from your browser. The actor paginates from each URL and extracts all matching jobs. Example: https://www.linkedin.com/jobs/search/?keywords=Engineer&location=Germany",
            "items": {
              "type": "string"
            }
          },
          "directUrls": {
            "title": "Direct Job URLs",
            "type": "array",
            "description": "List of LinkedIn job URLs to check directly (skips search). Use this for 'still alive' checks or re-scraping specific jobs. Example: https://www.linkedin.com/jobs/view/1234567890",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search Keywords",
            "type": "array",
            "description": "One or more search keywords. Each keyword runs as a separate search. Results are deduplicated across queries.",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "Search Query (single, legacy)",
            "type": "string",
            "description": "Single search keyword (backward compatible). Use 'searchQueries' for multiple keywords.",
            "default": ""
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region, or country to search in (e.g., 'Zurich', 'Switzerland', 'San Francisco Bay Area')",
            "default": ""
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Alternative to location - specify just the country (e.g., 'Switzerland', 'Germany', 'United States')",
            "default": ""
          },
          "postedWithinDays": {
            "title": "Posted Within Days",
            "minimum": 0,
            "type": "integer",
            "description": "Only return jobs posted within the last N days. Uses LinkedIn's f_TPR URL filter with the formula r<days*86400> seconds, giving per-day precision. LinkedIn's UI shows discrete options (1, 7, 30 days) but the URL parameter accepts any integer. Set 0 (default) for no date filter. Preferred over datePosted for scheduled/programmatic use.",
            "default": 0
          },
          "datePosted": {
            "title": "Date Posted (Optional legacy: prefer postedWithinDays)",
            "enum": [
              "any",
              "past-24h",
              "past-week",
              "past-month"
            ],
            "type": "string",
            "description": "Optional legacy: prefer postedWithinDays. Filter by when the job was posted.",
            "default": "any"
          },
          "sortBy": {
            "title": "Sort Order",
            "enum": [
              "newest",
              "relevance"
            ],
            "type": "string",
            "description": "NOTE: LinkedIn currently has no sort URL parameter on the public job search page. They removed the sort filter surface in a 2026 redesign (their UI shows 'we're working on bringing back the filters'). This input is kept for fleet-standard compatibility. The actor accepts and logs the value but does not send it to LinkedIn. Set to 'newest' as a forward-compatible default; sorting will be wired automatically when LinkedIn restores the filter.",
            "default": "newest"
          },
          "jobType": {
            "title": "Job Type",
            "enum": [
              "",
              "full-time",
              "part-time",
              "contract",
              "temporary",
              "internship"
            ],
            "type": "string",
            "description": "Filter by employment type",
            "default": ""
          },
          "experienceLevel": {
            "title": "Experience Level",
            "enum": [
              "",
              "entry",
              "associate",
              "mid-senior",
              "director",
              "executive"
            ],
            "type": "string",
            "description": "Filter by required experience level",
            "default": ""
          },
          "remoteFilter": {
            "title": "Remote/On-site",
            "enum": [
              "",
              "remote",
              "on-site",
              "hybrid"
            ],
            "type": "string",
            "description": "Filter by workplace type",
            "default": ""
          },
          "easyApplyOnly": {
            "title": "Easy Apply Only",
            "type": "boolean",
            "description": "Only return jobs with LinkedIn's Easy Apply feature, which lets candidates apply without leaving LinkedIn. Maps to the f_AL=true URL filter. Useful for high-volume outreach or when you want to track one-click application availability.",
            "default": false
          },
          "earlyApplicantOnly": {
            "title": "Early Applicant Only (fewer than 10 applications)",
            "type": "boolean",
            "description": "Only return jobs with fewer than 10 applications so far (LinkedIn's 'Be among the first applicants' filter). Maps to the f_EA=true URL filter. Useful for candidates who want to stand out by applying early. Combine with postedWithinDays=1 for the freshest low-competition listings.",
            "default": false
          },
          "maxResultsPerQuery": {
            "title": "Max Results per Query",
            "minimum": 1,
            "type": "integer",
            "description": "Per-keyword cap. Total possible results = maxResultsPerQuery x number of searchQueries (deduplicated). Example: 100 x 8 queries = up to 800 results.",
            "default": 100
          },
          "maxResults": {
            "title": "Max Total Results",
            "minimum": 0,
            "type": "integer",
            "description": "Total cap across all queries. Set to 0 for unlimited (each query limited by maxResultsPerQuery).",
            "default": 0
          },
          "titleFilter": {
            "title": "Title Filter (comma-separated)",
            "type": "string",
            "description": "Comma-separated title terms (case-insensitive substring OR-match). Filters SERP results by job title before detail fetch. Empty disables the filter. Example: 'Software Engineer, Data Scientist, ML Engineer'. Saves job-detail-result costs by skipping non-matching titles.",
            "default": ""
          },
          "easyApply": {
            "title": "Easy Apply Only (legacy field name)",
            "type": "boolean",
            "description": "Deprecated: use easyApplyOnly instead. Kept for backward compatibility with existing integrations.",
            "default": false
          },
          "includeJobDetails": {
            "title": "Include Job Details (slower, richer)",
            "type": "boolean",
            "description": "OFF by default so first-time runs complete in under a minute. Turn ON to fetch each job's detail page and add the full description, employment type, seniority level, industry, company website, employee count, hiring manager name/title/profile, and more. Adds roughly 1 HTTP request per job (~2-4x slower).",
            "default": false
          },
          "includeCompanyDetails": {
            "title": "Include Company Details (slower, richer)",
            "type": "boolean",
            "description": "OFF by default. Turn ON to enrich each job with the employer's company profile: type, founded year, headquarters, follower count, specialties, funding rounds, featured employees, and latest company updates. One HTTP request per unique company (deduplicated across the run). Requires Include Job Details to also be ON.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}