{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper",
    "description": "Scrape LinkedIn job listings by keyword, location, search URL, or job ID. Extract titles, companies, locations, posted dates, full descriptions when available, salary signals, criteria, applicant text, Easy Apply status, and job URLs. Export data, run via API, or schedule runs.",
    "version": "0.2",
    "x-build-id": "faZMRfuTfUeMUaQpC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/chronometrica~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-chronometrica-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/chronometrica~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-chronometrica-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/chronometrica~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-chronometrica-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": {
          "searchTerm": {
            "title": "Option 1: Keywords - search jobs",
            "type": "string",
            "description": "Search LinkedIn by job titles/keywords, optionally with locations."
          },
          "location": {
            "title": "Locations",
            "type": "string",
            "description": "Optional for Keywords. If filled, LinkedIn searches for Keywords AND each Location. Enter one city, region, country, or Remote per line. Leave blank for broad LinkedIn results."
          },
          "startUrls": {
            "title": "Option 2: LinkedIn search URLs - keep filters",
            "type": "array",
            "description": "Paste a LinkedIn Jobs search URL when you already configured filters in LinkedIn and want to preserve them.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "jobIds": {
            "title": "Option 3: Job IDs or job URLs - exact listings",
            "type": "array",
            "description": "Provide known LinkedIn job IDs/URLs to enrich specific listings without search discovery.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxItems": {
            "title": "Job listings to collect (shared cap)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "This cap applies to all 3 ways: Keywords, LinkedIn search URLs, and Job IDs or job URLs. If mixed, the actor stops when this many job listings are saved.",
            "default": 25
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "24h",
              "3d",
              "7d",
              "14d",
              "30d"
            ],
            "type": "string",
            "description": "Only keep jobs posted in this time window. For URLs and job IDs, this is checked when LinkedIn shows a posted date.",
            "default": "7d"
          },
          "distance": {
            "title": "Search radius",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Search distance in miles when you enter a location.",
            "default": 25
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Choose the order for keyword and location searches.",
            "default": "relevance"
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "any",
              "fulltime",
              "parttime",
              "contract",
              "temporary",
              "internship",
              "volunteer"
            ],
            "type": "string",
            "description": "Choose one job type, or keep Any.",
            "default": "any"
          },
          "workplaceType": {
            "title": "Workplace",
            "enum": [
              "any",
              "onsite",
              "remote",
              "hybrid"
            ],
            "type": "string",
            "description": "Choose on-site, remote, hybrid, or keep Any.",
            "default": "any"
          },
          "experienceLevel": {
            "title": "Experience level",
            "enum": [
              "any",
              "internship",
              "entry",
              "associate",
              "midsenior",
              "director",
              "executive"
            ],
            "type": "string",
            "description": "Choose one seniority level, or keep Any.",
            "default": "any"
          },
          "maxPagesPerSearch": {
            "title": "Page depth",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many result pages to check for each keyword/location or search URL. Increase slowly for larger runs.",
            "default": 2
          },
          "excludeCompanies": {
            "title": "Skip employers",
            "type": "string",
            "description": "Optional. Enter one employer per line. Matching jobs are skipped and counted in the run summary.",
            "default": ""
          },
          "titleMustInclude": {
            "title": "Title must include",
            "type": "string",
            "description": "Optional. Enter one word or phrase per line. A job is saved only if its title contains one of these.",
            "default": ""
          },
          "titleExclude": {
            "title": "Skip titles containing",
            "type": "string",
            "description": "Optional. Enter one word or phrase per line. Jobs with these words in the title are skipped.",
            "default": ""
          },
          "saveOnlyUniqueItems": {
            "title": "Unique jobs only (remove duplicates)",
            "type": "boolean",
            "description": "Save each LinkedIn job only once, even if it appears from more than one keyword, URL, or ID. Keep this on for normal runs.",
            "default": true
          },
          "balanceKeywordCoverage": {
            "title": "Balance keyword coverage",
            "type": "boolean",
            "description": "Give each keyword and location a turn before going deeper. Useful when you enter more than one keyword or location.",
            "default": true
          },
          "fetchJobDetails": {
            "title": "Full descriptions and details",
            "type": "boolean",
            "description": "Keep on to collect full descriptions, criteria, applicant text, and Easy Apply signals when LinkedIn shows them.",
            "default": true
          },
          "requestDelayMillis": {
            "title": "Delay between requests",
            "minimum": 500,
            "maximum": 60000,
            "type": "integer",
            "description": "Wait time between LinkedIn requests. Values below 500 ms are raised automatically.",
            "default": 500
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}