{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Search Scraper API - Filters That Hold",
    "description": "Search LinkedIn jobs by keyword, location, date, company and type. Full description, seniority, applicants, exact posted date. Seniority and job type re-checked on the posting. No login.",
    "version": "1.0",
    "x-build-id": "wOml1138rD7uTXJOJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vonsensey~linkedin-jobs-search-scraper-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vonsensey-linkedin-jobs-search-scraper-api",
        "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/vonsensey~linkedin-jobs-search-scraper-api/runs": {
      "post": {
        "operationId": "runs-sync-vonsensey-linkedin-jobs-search-scraper-api",
        "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/vonsensey~linkedin-jobs-search-scraper-api/run-sync": {
      "post": {
        "operationId": "run-sync-vonsensey-linkedin-jobs-search-scraper-api",
        "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": "LinkedIn URLs",
            "type": "array",
            "description": "Paste any public LinkedIn links, mixed: company pages, showcase pages, post share links (the /posts/... form), job postings (/jobs/view/...), Pulse articles, or a jobs search URL copied from LinkedIn with its filters. Each becomes the matching row type. Links to search results, employee lists or /feed/update/ need a LinkedIn session and are returned as free rows explaining that.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Job search: keywords",
            "type": "array",
            "description": "Job titles or terms to search for. Each keyword is searched in each location, so 3 keywords and 2 locations are 6 searches. Boolean operators LinkedIn accepts in its search box (quotes, AND, OR, NOT) are passed through as typed.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Job search: locations",
            "type": "array",
            "description": "Locations as you would type them on LinkedIn: 'United States', 'London, England, United Kingdom', 'Remote'. Crossed with keywords.",
            "items": {
              "type": "string"
            }
          },
          "datePosted": {
            "title": "Job search: posted within",
            "enum": [
              "any",
              "day",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only postings published within this window. Verified on 2026-09-02 to change the result set.",
            "default": "week"
          },
          "companies": {
            "title": "Company pages",
            "type": "array",
            "description": "Company or showcase slugs or URLs: 'microsoft', 'https://www.linkedin.com/company/apify/', a showcase URL. What you get for each is set by 'Company: what to read'.",
            "items": {
              "type": "string"
            }
          },
          "companyScope": {
            "title": "Company: what to read",
            "uniqueItems": true,
            "type": "array",
            "description": "details: one company row (exact employee and follower counts, addresses, specialties, affiliated pages, featured employees, ids of the newest posts). posts: the newest posts the company page shows publicly (about ten) as post rows. jobs: every open job the company lists, up to LinkedIn's public cap of 1,000, as job rows.",
            "items": {
              "type": "string",
              "enum": [
                "details",
                "posts",
                "jobs"
              ],
              "enumTitles": [
                "Company details",
                "Newest posts on the page",
                "Open jobs at the company"
              ]
            },
            "default": [
              "details"
            ]
          },
          "postUrls": {
            "title": "Post URLs",
            "type": "array",
            "description": "Public post share links in the /posts/<author>_...-activity-<id>-<code> form (the link LinkedIn's Share > Copy link gives you). One post row each, with the comments LinkedIn shows publicly as extra rows when the option below is on.",
            "items": {
              "type": "string"
            }
          },
          "includeComments": {
            "title": "Include the comments shown on the post",
            "type": "boolean",
            "description": "Adds one row per comment LinkedIn renders on the public post page, about ten per post, each with the commenter, their profile URL, the text, the date and the like count. The post row always carries the exact total comment count.",
            "default": false
          },
          "jobUrls": {
            "title": "Job postings by URL or id",
            "type": "array",
            "description": "Job posting links (/jobs/view/...), search links that carry currentJobId=, or bare numeric job ids. One full job row each.",
            "items": {
              "type": "string"
            }
          },
          "articleUrls": {
            "title": "Pulse article URLs",
            "type": "array",
            "description": "LinkedIn Pulse article links (/pulse/...). One article row each with the full text.",
            "items": {
              "type": "string"
            }
          },
          "experienceLevel": {
            "title": "Experience level",
            "uniqueItems": true,
            "type": "array",
            "description": "Passed to LinkedIn's search and then checked against the seniority the posting itself states; a posting that does not match is neither delivered nor billed. Needs 'Read the full posting' on.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry",
                "associate",
                "mid-senior",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            }
          },
          "jobType": {
            "title": "Job type",
            "uniqueItems": true,
            "type": "array",
            "description": "Passed to LinkedIn's search and then checked against the employment type the posting states; a posting that does not match is neither delivered nor billed. Needs 'Read the full posting' on.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            }
          },
          "workplaceType": {
            "title": "Workplace",
            "uniqueItems": true,
            "type": "array",
            "description": "Passed to LinkedIn's search as its remote / hybrid / on-site filter. LinkedIn's public job pages carry no structured workplace field, so this one cannot be re-checked on the posting; treat it as LinkedIn's own filtering.",
            "items": {
              "type": "string",
              "enum": [
                "onsite",
                "remote",
                "hybrid"
              ],
              "enumTitles": [
                "On-site",
                "Remote",
                "Hybrid"
              ]
            }
          },
          "companyFilter": {
            "title": "Only jobs at these companies",
            "type": "array",
            "description": "Company slugs, URLs or numeric LinkedIn company ids. Slugs are resolved to the id from the public company page.",
            "items": {
              "type": "string"
            }
          },
          "geoId": {
            "title": "LinkedIn geoId",
            "type": "string",
            "description": "Optional numeric region id from a LinkedIn jobs URL (geoId=...). Used together with the free-text location."
          },
          "easyApply": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Passed to LinkedIn's search as its Easy Apply filter.",
            "default": false
          },
          "under10Applicants": {
            "title": "Under 10 applicants only",
            "type": "boolean",
            "description": "Passed to LinkedIn's search. Verified on 2026-09-02 to change the result set.",
            "default": false
          },
          "titleInclude": {
            "title": "Title must contain",
            "type": "array",
            "description": "Free filter on the listing title before the posting is opened: keep a job only if its title contains every word of at least one of these phrases (case-insensitive). Skipped jobs are neither read nor billed.",
            "items": {
              "type": "string"
            }
          },
          "titleExclude": {
            "title": "Title must not contain",
            "type": "array",
            "description": "Free filter: drop a job if its title contains any of these words or phrases. Skipped jobs are neither read nor billed.",
            "items": {
              "type": "string"
            }
          },
          "excludeJobIds": {
            "title": "Skip these job ids",
            "type": "array",
            "description": "Job ids you already have. They are never opened and never billed.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerQuery": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap per keyword-and-location search. LinkedIn's public search stops at about 1,000 results; add locations or a shorter date window to go deeper.",
            "default": 25
          },
          "includeJobDetails": {
            "title": "Read the full posting",
            "type": "boolean",
            "description": "On: each job is opened and delivered in full (description, seniority, employment type, function, industries, applicants, salary when stated) as a 'job' row. Off: the listing card only (title, company, location, exact posted date, badges) as a cheaper 'job-card' row, ten per request.",
            "default": true
          },
          "includeCompany": {
            "title": "Add company pages for job results",
            "type": "boolean",
            "description": "For job searches: also deliver one company row per distinct company in the results. Charged once per company, never per job.",
            "default": false
          },
          "monitorChangesOnly": {
            "title": "Monitor: only bill what is new or changed",
            "type": "boolean",
            "description": "For scheduled runs. The Actor remembers the job ids it delivered for each search and the counts it saw on each company, post and article. On a re-run, jobs you already received are skipped and a company or post whose numbers have not moved is a free 'unchanged' row. Each executed search is still billed as work done.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on billable rows for the whole run, all types together.",
            "default": 50
          },
          "maxCostUsd": {
            "title": "Cost ceiling (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Stop the run before it spends more than this, computed from the live event prices. Leave empty for no ceiling. The free summary row always reports what the run actually spent."
          },
          "useProxy": {
            "title": "Force residential proxy",
            "type": "boolean",
            "description": "Not normally needed. Jobs, company pages, posts and articles are read without any proxy; the Actor escalates to a residential exit by itself when LinkedIn refuses a request. Turn this on only if you have been asked to.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}