{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Easy Apply Jobs Scraper, Verified",
    "description": "Find LinkedIn Easy Apply jobs with no login and no cookies. Every job is checked on its own public LinkedIn page and ships the evidence: the apply control seen and its raw marker. Get title, company, location, salary, seniority, job type and full description. Pay only for confirmed Easy Apply jobs.",
    "version": "0.1",
    "x-build-id": "HN6Slh0OS6vYhvaAO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~linkedin-easy-apply-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-linkedin-easy-apply-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/automation_craft~linkedin-easy-apply-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-linkedin-easy-apply-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/automation_craft~linkedin-easy-apply-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-linkedin-easy-apply-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": "Keywords",
            "type": "array",
            "description": "Job titles or skills to search for, one per line, for example `data analyst`. Every keyword is searched in every location. LinkedIn's own Easy Apply filter is always on.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Places as you would type them on LinkedIn, one per line, for example `United States`, `London, England, United Kingdom` or `Bengaluru`.",
            "items": {
              "type": "string"
            }
          },
          "geoIds": {
            "title": "LinkedIn geo ids (optional)",
            "type": "array",
            "description": "Numeric LinkedIn geo ids, taken from the geoId= part of a LinkedIn jobs URL (for example `103644278` is the United States). Use them when a place name is ambiguous.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "LinkedIn jobs search URLs (optional)",
            "type": "array",
            "description": "Paste LinkedIn jobs search URLs. Their keywords, location, geoId, date posted, company and under 10 applicants filters are used, and the Easy Apply filter is added. Filters LinkedIn ignores for logged-out visitors (workplace type, job type, experience) are dropped and reported.",
            "items": {
              "type": "string"
            }
          },
          "jobUrls": {
            "title": "Job URLs to check (optional)",
            "type": "array",
            "description": "LinkedIn job URLs or job ids to check one by one. Easy Apply jobs are delivered as full job rows. Every other URL gets a free check row that says why (external apply, closed, not found).",
            "items": {
              "type": "string"
            }
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "anytime",
              "pastMonth",
              "pastWeek",
              "past24Hours"
            ],
            "type": "string",
            "description": "Posting window, passed to LinkedIn. Every job also carries LinkedIn's own posted date, so you can verify it."
          },
          "postedWithinHours": {
            "title": "Posted within the last N hours (optional)",
            "minimum": 1,
            "maximum": 720,
            "type": "integer",
            "description": "A custom window in hours, for example `2` for jobs posted in the last two hours. Overrides Date posted. Minimum 1, maximum 720."
          },
          "companyIds": {
            "title": "Company ids (optional)",
            "type": "array",
            "description": "Only jobs at these companies. Numeric LinkedIn company ids, found in the f_C= part of a LinkedIn jobs URL, or paste that URL. Delivered jobs also carry companyId.",
            "items": {
              "type": "string"
            }
          },
          "distanceMiles": {
            "title": "Distance from the location",
            "enum": [
              "5",
              "10",
              "25",
              "50",
              "100"
            ],
            "type": "string",
            "description": "Search radius around each location, in miles, as LinkedIn's own distance filter. Leave empty for LinkedIn's default."
          },
          "under10Applicants": {
            "title": "Under 10 applicants only",
            "type": "boolean",
            "description": "Only jobs LinkedIn marks as having fewer than 10 applicants."
          },
          "experienceLevels": {
            "title": "Experience level",
            "type": "array",
            "description": "Keep only jobs whose Seniority level on the job page is one of these. Checked on each job page; jobs that do not match are free.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entryLevel",
                "associate",
                "midSenior",
                "director",
                "executive",
                "notApplicable"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive",
                "Not Applicable"
              ]
            }
          },
          "jobTypes": {
            "title": "Job type",
            "type": "array",
            "description": "Keep only jobs whose Employment type on the job page is one of these. Checked on each job page; jobs that do not match are free.",
            "items": {
              "type": "string",
              "enum": [
                "fullTime",
                "partTime",
                "contract",
                "temporary",
                "internship",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            }
          },
          "titleMatch": {
            "title": "Title match",
            "enum": [
              "linkedin",
              "allWords",
              "anyWord",
              "exactPhrase"
            ],
            "type": "string",
            "description": "LinkedIn matches keywords loosely and fills thin searches with unrelated jobs. Choose how strictly the job title must match your keywords. Jobs that do not match are dropped before their page is opened, free."
          },
          "excludeTitleWords": {
            "title": "Exclude titles containing",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, for example `senior` or `intern`. Free.",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Drop jobs from companies whose name contains any of these, for example staffing agencies. Free.",
            "items": {
              "type": "string"
            }
          },
          "maxJobs": {
            "title": "Max Easy Apply jobs",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most confirmed Easy Apply jobs to deliver and charge in this run, across all searches. Honoured exactly."
          },
          "maxJobsPerSearch": {
            "title": "Max jobs per search (optional)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "The most jobs from any one keyword and place pair, so one broad search cannot use up the whole run. 0 or empty means no per search limit."
          },
          "splitWhenCapped": {
            "title": "Go past LinkedIn's 1,000 result cap",
            "type": "boolean",
            "description": "LinkedIn stops every public search at 1,000 results. When a search reaches that cap, repeat it with narrower posting windows (30 days, 21 days, 14 days and so on) until a window fits under the cap. Duplicates are free and the run summary says which window was covered completely.",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Add the job description as HTML next to the plain text version. Makes rows larger."
          },
          "includeJobPoster": {
            "title": "Include the job poster",
            "type": "boolean",
            "description": "Off by default: the job poster card stays out of the dataset. Turn on to add the name, headline and public profile link of the person LinkedIn shows as the job poster, when LinkedIn shows one.",
            "default": false
          },
          "includeRejected": {
            "title": "Include free check rows for rejected jobs",
            "type": "boolean",
            "description": "Also output a small free row for every job that was checked and rejected (external apply, closed, filtered), with the reason and the evidence. Useful for auditing the classification."
          },
          "memoryName": {
            "title": "Memory name (only new jobs)",
            "type": "string",
            "description": "Give a name, for example `weekly-data-analyst`, and every job delivered under it is remembered. Later runs with the same name skip those jobs free, so a scheduled run pays only for new Easy Apply jobs. The memory belongs to this Actor and your account."
          },
          "resetMemory": {
            "title": "Reset the memory",
            "type": "boolean",
            "description": "Forget every job remembered under the memory name before this run."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The Actor uses the Apify datacenter proxy, which LinkedIn's public job pages accept, and retries a refused request on a fresh session. Other Apify proxy groups are not needed and are replaced by the datacenter proxy. You can pass your own proxy URLs instead."
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many job pages are checked at the same time. The default of 4 is gentle on LinkedIn and fast enough for most runs."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}