{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper",
    "description": "Scrape LinkedIn job postings without an account or cookies: title, company, location, posting date, full description, seniority, employment type, industry and applicant count. Search by keyword and location, or paste LinkedIn search URLs, job URLs or job IDs. $2 per 1,000 jobs.",
    "version": "1.0",
    "x-build-id": "Jiuhg3tBZiaWf9YrP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/badr_xba~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-badr_xba-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/badr_xba~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-badr_xba-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/badr_xba~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-badr_xba-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": {
          "urls": {
            "title": "🔗 LinkedIn search URLs, job URLs or job IDs",
            "type": "array",
            "description": "Optional. Paste one item per line (several per line also work):<br>• a <b>search URL</b> copied from your browser: <code>https://www.linkedin.com/jobs/search/?keywords=nurse&location=Dubai</code><br>• a <b>job URL</b>: <code>https://www.linkedin.com/jobs/view/4413987826/</code> (the job page is opened directly)<br>• a bare <b>job ID</b>: <code>4413987826</code><br>• plain <b>keywords</b> such as <code>data analyst</code> (searched with the Location and filters below).<br>Duplicates and spaces are cleaned up. Anything that is not LinkedIn is skipped, not billed, and listed in FAILED_INPUTS. When this list has anything in it, the Keywords field below is ignored.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Job title or skill to search for: \"data analyst\", \"chef de projet\", \"nurse\", \"python developer\". Used only when no URL is pasted above."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or country as LinkedIn spells it: \"Casablanca, Morocco\", \"Dubai\", \"United States\". Leave empty to search worldwide."
          },
          "geoId": {
            "title": "LinkedIn geoId",
            "type": "string",
            "description": "Optional. The numeric place ID LinkedIn puts in its own search URL (geoId=...). More precise than a location name; overrides nothing, it is sent alongside Location."
          },
          "distance": {
            "title": "Distance (miles)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Optional. Radius around the location, in miles (LinkedIn's unit). 0-100."
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "",
              "past24h",
              "pastWeek",
              "pastMonth"
            ],
            "type": "string",
            "description": "How recent the job must be. Set this to \"Past 24 hours\" and schedule the Actor daily to collect only new postings.",
            "default": ""
          },
          "companyIds": {
            "title": "Company IDs",
            "type": "array",
            "description": "Optional. Numeric LinkedIn company IDs, to follow named employers (they appear as f_C=... in a LinkedIn search URL). Great for monitoring competitors' hiring.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "easyApply": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Keeps only jobs you can apply to without leaving LinkedIn.",
            "default": false
          },
          "under10Applicants": {
            "title": "Under 10 applicants only",
            "type": "boolean",
            "description": "Keeps only jobs with fewer than ten applicants so far — the ones worth applying to first.",
            "default": false
          },
          "experienceLevel": {
            "title": "Experience level",
            "type": "array",
            "description": "Since August 2026 LinkedIn dropped these from its search URLs. With the option below switched on, they are appended to your keywords in plain words instead. That steers the search; it does not guarantee the filter.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry level",
                "associate",
                "mid-senior level",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            },
            "default": []
          },
          "jobType": {
            "title": "Job type",
            "type": "array",
            "description": "Same treatment: turned into words inside the search.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship",
                "volunteer"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer"
              ]
            },
            "default": []
          },
          "workplaceType": {
            "title": "Workplace",
            "type": "array",
            "description": "On-site, remote or hybrid — also turned into words.",
            "items": {
              "type": "string",
              "enum": [
                "on-site",
                "remote",
                "hybrid"
              ],
              "enumTitles": [
                "On-site",
                "Remote",
                "Hybrid"
              ]
            },
            "default": []
          },
          "autoConvertToAiSearch": {
            "title": "Convert dropped filters into search words",
            "type": "boolean",
            "description": "On, the three filters above — and the same ones found in a pasted URL — are appended to the keywords in plain language. Off, they are ignored and the run says so in the log.",
            "default": true
          },
          "splitByCity": {
            "title": "Split the search by city",
            "type": "boolean",
            "description": "LinkedIn stops serving a search after about 1,000 jobs, however many match. Switch this on and the same search is run city by city across the country you pick, and duplicates are dropped on the job ID.",
            "default": false
          },
          "splitCountry": {
            "title": "Country to split by",
            "enum": [
              "AF",
              "AL",
              "DZ",
              "AD",
              "AO",
              "AG",
              "AR",
              "AM",
              "AU",
              "AT",
              "AZ",
              "BS",
              "BH",
              "BD",
              "BB",
              "BY",
              "BE",
              "BZ",
              "BJ",
              "BT",
              "BO",
              "BA",
              "BW",
              "BR",
              "BN",
              "BG",
              "BF",
              "BI",
              "CV",
              "KH",
              "CM",
              "CA",
              "CF",
              "TD",
              "CL",
              "CN",
              "CO",
              "KM",
              "CG",
              "CR",
              "HR",
              "CU",
              "CY",
              "CZ",
              "CI",
              "CD",
              "DK",
              "DJ",
              "DM",
              "DO",
              "EC",
              "EG",
              "SV",
              "GQ",
              "ER",
              "EE",
              "SZ",
              "ET",
              "FJ",
              "FI",
              "FR",
              "GA",
              "GM",
              "GE",
              "DE",
              "GH",
              "GR",
              "GD",
              "GT",
              "GN",
              "GW",
              "GY",
              "HT",
              "HN",
              "HK",
              "HU",
              "IS",
              "IN",
              "ID",
              "IR",
              "IQ",
              "IE",
              "IL",
              "IT",
              "JM",
              "JP",
              "JO",
              "KZ",
              "KE",
              "KI",
              "XK",
              "KW",
              "KG",
              "LA",
              "LV",
              "LB",
              "LS",
              "LR",
              "LY",
              "LI",
              "LT",
              "LU",
              "MG",
              "MW",
              "MY",
              "MV",
              "ML",
              "MT",
              "MH",
              "MR",
              "MU",
              "MX",
              "FM",
              "MD",
              "MC",
              "MN",
              "ME",
              "MA",
              "MZ",
              "MM",
              "NA",
              "NR",
              "NP",
              "NL",
              "NZ",
              "NI",
              "NE",
              "NG",
              "KP",
              "MK",
              "NO",
              "OM",
              "PK",
              "PW",
              "PS",
              "PA",
              "PG",
              "PY",
              "PE",
              "PH",
              "PL",
              "PT",
              "PR",
              "QA",
              "RO",
              "RU",
              "RW",
              "KN",
              "LC",
              "VC",
              "WS",
              "SM",
              "ST",
              "SA",
              "SN",
              "RS",
              "SC",
              "SL",
              "SG",
              "SK",
              "SI",
              "SB",
              "SO",
              "ZA",
              "KR",
              "SS",
              "ES",
              "LK",
              "SD",
              "SR",
              "SE",
              "CH",
              "SY",
              "TW",
              "TJ",
              "TZ",
              "TH",
              "TL",
              "TG",
              "TO",
              "TT",
              "TN",
              "TR",
              "TM",
              "TV",
              "UG",
              "UA",
              "AE",
              "GB",
              "US",
              "UY",
              "UZ",
              "VU",
              "VA",
              "VE",
              "VN",
              "YE",
              "ZM",
              "ZW"
            ],
            "type": "string",
            "description": "Which country's cities to spread the search over. Only countries with a built-in city list are offered, so the split always happens."
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of jobs saved (and billed) for the whole run. The run stops exactly at this number. 0 = no ceiling. The run also stops cleanly when your maximum cost per run is reached.",
            "default": 100
          },
          "maxItemsPerSearch": {
            "title": "Maximum jobs per search",
            "minimum": 10,
            "maximum": 1000,
            "type": "integer",
            "description": "Ceiling applied to each pasted URL and to each city of a split search. LinkedIn itself never serves more than 1,000 jobs per search.",
            "default": 1000
          },
          "scrapeJobDetails": {
            "title": "Open each job for its full details",
            "type": "boolean",
            "description": "Opens each job for its description, seniority, employment type, job function, industries, applicant count, salary block and apply link. One extra request per job, so slower. When a job page cannot be read, that job is NOT saved nor billed; it is listed in FAILED_INPUTS.",
            "default": false
          },
          "scrapeCompanyDetails": {
            "title": "Also read each company",
            "type": "boolean",
            "description": "Adds company description, website and employee count. One request per company, cached. LinkedIn refuses most company pages; the Actor stops trying after 15 refusals in a row. Job rows are saved either way.",
            "default": false
          },
          "onlyNewJobsStore": {
            "title": "Only new jobs: memory name (skip jobs saved by earlier runs)",
            "type": "string",
            "description": "Leave empty to keep every job (default). Give a name (e.g. daily-data-jobs) and run the same search on a schedule: the IDs of saved jobs are kept in a named key-value store of your account with that name, and the next runs with the same name skip those jobs, so only jobs not seen before are saved and billed. Letters, digits and hyphens; other characters become hyphens. The store keeps the last 200,000 IDs.",
            "default": ""
          },
          "maxConcurrency": {
            "title": "Requests at the same time",
            "minimum": 1,
            "maximum": 32,
            "type": "integer",
            "description": "Maximum requests in flight across searches, job pages and companies. The Actor automatically halves it and pauses when LinkedIn answers 429, then speeds up again. Lower it if you see many refusals.",
            "default": 12
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Off by default: in our runs LinkedIn throttled Apify datacenter addresses more than the default container address. Turn it on for very long runs; each refused request is retried on a new proxy session.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}