{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper",
    "description": "Scrape LinkedIn job listings by keyword, location or saved search URL, with no login and no account. Every row carries title, company_name, location, salary_min, salary_max, applicants_count, posted_at and full company detail. Export JSON, CSV or Excel.",
    "version": "2.0",
    "x-build-id": "9jShNd236OO5pZcxT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/herus13~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-herus13-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/herus13~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-herus13-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/herus13~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-herus13-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": {
          "search_queries": {
            "title": "Search Queries",
            "type": "array",
            "description": "Job-title keywords to search on LinkedIn, one per entry. Each keyword is searched separately and the results are merged and de-duplicated by job ID. Examples: `python developer`, `data scientist`, `product manager`. Provide at least one of `search_queries` or `search_urls`; leave empty to collect only the URLs you paste.",
            "items": {
              "type": "string"
            }
          },
          "search_urls": {
            "title": "Search URLs",
            "type": "array",
            "description": "Ready-made LinkedIn job-search URLs, one per entry: paste a saved search, or set the filters you want on LinkedIn and paste the resulting address. Provide at least one of `search_urls` or `search_queries`; leave empty to search by keyword only.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Where to search: a city, a region, a country, or `Remote`. Examples: `New York`, `London, UK`, `United States`. Leave empty to search worldwide. A `geo_id`, when you set one, overrides this text."
          },
          "geo_id": {
            "title": "Geo ID (Advanced)",
            "type": "string",
            "description": "LinkedIn's own numeric ID for a place, for exact targeting; it overrides the `location` text. Examples: `103644278` is the United States, `102095887` is California. Find one by running the search on LinkedIn and copying the `geoId` value out of the address bar. Leave empty unless a place name is too ambiguous to match."
          },
          "job_type": {
            "title": "Job Type",
            "enum": [
              "",
              "full-time",
              "part-time",
              "contract",
              "temporary",
              "volunteer",
              "internship"
            ],
            "type": "string",
            "description": "Employment type a listing must advertise. Values: `full-time`, `part-time`, `contract`, `temporary`, `volunteer`, `internship`. Leave empty for any type.",
            "default": ""
          },
          "experience_level": {
            "title": "Experience Level",
            "enum": [
              "",
              "internship",
              "entry",
              "associate",
              "mid-senior",
              "director",
              "executive"
            ],
            "type": "string",
            "description": "Seniority the listing asks for. Values: `internship`, `entry`, `associate`, `mid-senior`, `director`, `executive`. Leave empty for any level.",
            "default": ""
          },
          "workplace_type": {
            "title": "Workplace Type",
            "enum": [
              "",
              "on-site",
              "remote",
              "hybrid"
            ],
            "type": "string",
            "description": "Where the work happens. Values: `on-site` at the employer's premises, `remote` fully remote, `hybrid` part office part home. Leave empty for any arrangement.",
            "default": ""
          },
          "date_posted": {
            "title": "Date Posted",
            "enum": [
              "",
              "24h",
              "week",
              "month"
            ],
            "type": "string",
            "description": "How recent a posting must be. Values: `24h` the last day, `week` the last seven days, `month` the last thirty days. Leave empty for any date. Pair `24h` with a daily schedule to collect only what is new.",
            "default": ""
          },
          "salary_range": {
            "title": "Minimum Salary",
            "enum": [
              "",
              "40k+",
              "60k+",
              "80k+",
              "100k+",
              "120k+"
            ],
            "type": "string",
            "description": "Lowest yearly pay in US dollars a listing must advertise. Values: `40k+`, `60k+`, `80k+`, `100k+`, `120k+`. Leave empty for any salary, which also keeps the many listings that publish no pay at all.",
            "default": ""
          },
          "sort_by": {
            "title": "Sort By",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Order the results come back in. Values: `relevance` best match first, `date` newest first. Default relevance. Pair `date` with a small `max_results` to take only the freshest postings.",
            "default": "relevance"
          },
          "enrich_company": {
            "title": "Enrich Company Data",
            "type": "boolean",
            "description": "Also collect the employer's own LinkedIn page for every job, adding `company_website`, `company_size`, `company_industry`, `company_type`, `company_headquarters`, `company_founded` and the logo. Default `true`. Set it to `false` for a quicker listing-only run; the per-result price is the same with it on or off.",
            "default": true
          },
          "enrich_poster": {
            "title": "Enrich Job Poster",
            "type": "boolean",
            "description": "Also collect the person who posted the job, as `poster_name`, `poster_title` and `poster_profile_url`, wherever LinkedIn publishes them. Default `true`. Set it to `false` when the listing and the company are all you need.",
            "default": true
          },
          "auto_split": {
            "title": "Auto-Split Large Searches",
            "type": "boolean",
            "description": "LinkedIn stops a single search at about 1000 results. Leave this on and each search is repeated split across date, job type, experience level and workplace, so a broad search returns far more than the cap, de-duplicated by job ID. Default `true`.",
            "default": true
          },
          "split_by": {
            "title": "Split Dimension",
            "enum": [
              "",
              "date_posted",
              "job_type",
              "workplace_type"
            ],
            "type": "string",
            "description": "Which dimension a split search is divided along. Values: `date_posted`, `job_type`, `workplace_type`. Leave empty to have `auto_split` pick the dimension for you. It has no effect while `auto_split` is off.",
            "default": ""
          },
          "max_results": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Most job listings returned across every search combined. Default 10, minimum 1, maximum 10000. The default is a quick, cheap first run — raise it for real collection. Above about 100 results also raise the run timeout under Run options: 100 results takes roughly two minutes and 500 roughly fifteen.",
            "default": 10
          },
          "max_concurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many requests may be in flight at the same time. Default 10, minimum 1, maximum 30. A higher number finishes a large run sooner.",
            "default": 10
          },
          "max_requests_per_minute": {
            "title": "Max Requests Per Minute",
            "minimum": 10,
            "maximum": 120,
            "type": "integer",
            "description": "Ceiling on how many requests a run may send each minute. Default 120, minimum 10, maximum 120. Lowering it stretches a run out in proportion, and a low ceiling is the usual reason a large run reaches its timeout.",
            "default": 120
          },
          "cache_provider": {
            "title": "Cache Provider",
            "enum": [
              "memory",
              "file",
              "apify"
            ],
            "type": "string",
            "description": "Where company and poster detail is kept during a run, so the same company is not looked up twice. Values: `memory` for the current run only, `file` to keep it on disk when you run the package yourself, `apify` to keep it across runs in the key-value store. Default memory.",
            "default": "memory"
          },
          "request_delay": {
            "title": "Request Delay (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Seconds to wait between requests, to spread a long run out over time. Default 0, minimum 0, which runs at full speed inside the ceiling set by `max_requests_per_minute`.",
            "default": 0
          },
          "proxyUrls": {
            "title": "Your own proxy URLs (optional)",
            "type": "array",
            "description": "Leave empty: the run uses the residential proxy this actor ships with, included in the price of the run. To route the run through your own provider instead, add one gateway URL per entry, for example `http://user:pass@host:port` — works with any provider that issues URLs (DataImpulse, Bright Data, Oxylabs, Smartproxy, or your own). When set, these are used exactly as entered and nothing else is.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}