{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper (No Login)",
    "description": "Scrape public LinkedIn job postings by keyword and location: title, company, posted date, job type, remote flag and URL, with an optional relevance score to drop off-target jobs. No cookies, no login, no browser. Export CSV or JSON, run via API, schedule runs or integrate with other tools.",
    "version": "1.0",
    "x-build-id": "PENJyvbzXHofAXzCM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/leadharbor~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-leadharbor-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/leadharbor~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-leadharbor-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/leadharbor~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-leadharbor-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Job search terms, one per line, e.g. \"nurse\", \"software engineer\". Give keywords, search URLs, or both.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Location to search, e.g. a city or country as you'd type it into LinkedIn's jobs search box.",
            "default": "United Arab Emirates"
          },
          "maxJobsPerKeyword": {
            "title": "Max jobs per keyword",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many job postings to collect per keyword (25 per page, paginates until this cap or an empty page).",
            "default": 100
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "any",
              "day",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Restrict to postings within this window.",
            "default": "any"
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "any",
              "fulltime",
              "parttime",
              "contract",
              "internship"
            ],
            "type": "string",
            "description": "Restrict to this employment type.",
            "default": "any"
          },
          "remote": {
            "title": "Workplace type",
            "enum": [
              "any",
              "onsite",
              "remote",
              "hybrid"
            ],
            "type": "string",
            "description": "Restrict to on-site, remote, or hybrid postings.",
            "default": "any"
          },
          "fetchDetails": {
            "title": "Fetch job details",
            "type": "boolean",
            "description": "For each unique job, also fetch its full description, seniority level, employment type, job function, industries and applicant count. Slower and costs an extra charge per job.",
            "default": false
          },
          "notionConnector": {
            "title": "Notion connector (optional)",
            "type": "string",
            "description": "Send the job postings into your own Notion. Authorize Notion once in Apify Console > Settings > API & Integrations > MCP connectors, then pick it here. This Actor never sees your Notion login."
          },
          "notionParentPage": {
            "title": "Notion page to create the table in",
            "type": "string",
            "description": "Link of a Notion page. The first run creates a table inside it and fills it."
          },
          "notionDataSourceId": {
            "title": "Existing Notion table ID (optional)",
            "type": "string",
            "description": "To keep adding to the same table, paste the table ID printed in the log (also saved in the run's NOTION_RESULT record) by the first run."
          },
          "scoreRelevance": {
            "title": "Score relevance (optional, uses Jev by TypeSafe)",
            "type": "boolean",
            "description": "Adds a relevance score from 0 to 1 per job: is it a role someone searching this keyword wants? Job titles and company names of the public postings, plus your search keyword, are sent to TypeSafe (api.typesafe.ai) when this is on. Default off.",
            "default": false
          },
          "onlyRelevant": {
            "title": "Drop off-target jobs",
            "type": "boolean",
            "description": "Needs Score relevance. Removes jobs scoring under the threshold; removed jobs are not charged. Jobs that could not be scored are kept.",
            "default": false
          },
          "relevanceThreshold": {
            "title": "Relevance threshold",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "0 to 1. Jobs under this score count as off-target. 0.6 is a starting point tuned on a small set of titles.",
            "default": 0.6
          },
          "searchUrls": {
            "title": "LinkedIn search URLs (optional)",
            "type": "array",
            "description": "Paste LinkedIn jobs search URLs. Keywords, location and the filters in the URL (date, job type, workplace, experience, distance, geoId) are used for that search. Anything that is not a linkedin.com jobs search URL is skipped with a log warning.",
            "items": {
              "type": "string"
            }
          },
          "titleInclude": {
            "title": "Title must include (any of)",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words or phrases (not case sensitive). Jobs removed here are not charged.",
            "items": {
              "type": "string"
            }
          },
          "titleExclude": {
            "title": "Title must not include",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words or phrases (not case sensitive), for example intern or sales. Jobs removed here are not charged.",
            "items": {
              "type": "string"
            }
          },
          "experienceLevel": {
            "title": "Experience level",
            "type": "array",
            "description": "Restrict to these LinkedIn experience levels. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry",
                "associate",
                "midsenior",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}