{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper",
    "description": "Scrape LinkedIn job listings worldwide without login: title, company, location, seniority, job function, industries, applicants, salary when posted, full description, apply link and recruiter emails from the posting.",
    "version": "0.1",
    "x-build-id": "9IXZcngawNKYrvfkR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lergassy~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lergassy-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/lergassy~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lergassy-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/lergassy~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lergassy-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",
        "required": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "🔎 Job titles or keywords",
            "type": "array",
            "description": "One search per line: <code>python developer</code>, <code>registered nurse</code>, <code>marketing manager</code>. Boolean syntax the boards support works too (<code>\"data engineer\" -senior</code> on Indeed). Required.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "📍 Location",
            "type": "string",
            "description": "City, state or country as you would type it on the board: <code>New York, NY</code>, <code>London</code>, <code>Remote</code>, <code>Germany</code>. Empty = the whole country. Should match <b>Indeed country</b> below. If it does not (a German city with country <code>us</code>), the actor notices, searches the right Indeed site instead and says so in the run status — setting the country yourself is still one request faster."
          },
          "maxJobsPerQuery": {
            "title": "💯 Jobs per keyword and source",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Cap per keyword. LinkedIn lists 10 jobs per page and shows at most about 1,000 per search; the Actor pages until this number, the last page or that ceiling.",
            "default": 100
          },
          "datePosted": {
            "title": "📅 Posted within",
            "enum": [
              "any",
              "day",
              "3days",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Indeed and LinkedIn date filter (LinkedIn has no 3-day option; it uses a week).",
            "default": "any"
          },
          "remote": {
            "title": "🏠 Workplace",
            "enum": [
              "any",
              "remote",
              "hybrid",
              "onsite"
            ],
            "type": "string",
            "description": "Remote is a board filter on Indeed and LinkedIn; hybrid and on-site are LinkedIn filters and a check on the rows elsewhere.",
            "default": "any"
          },
          "jobTypes": {
            "title": "⏱️ Job types",
            "type": "array",
            "description": "Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "parttime",
                "contract",
                "temporary",
                "internship"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship"
              ]
            }
          },
          "experience": {
            "title": "🎓 Experience level (LinkedIn)",
            "type": "array",
            "description": "LinkedIn's seniority filter. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry",
                "associate",
                "mid",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior",
                "Director",
                "Executive"
              ]
            }
          },
          "radius": {
            "title": "📏 Radius (miles)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Distance around the location.",
            "default": 25
          },
          "sortBy": {
            "title": "↕️ Sort",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Order in which the boards return jobs; the first N are taken.",
            "default": "relevance"
          },
          "postedAfter": {
            "title": "📅 Only jobs posted after",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}",
            "type": "string",
            "description": "<code>YYYY-MM-DD</code>; rows with an older posting date are dropped."
          },
          "startUrls": {
            "title": "🔗 Search URLs",
            "type": "array",
            "description": "Optional: paste LinkedIn search URLs from your browser instead of keywords.",
            "items": {
              "type": "string"
            }
          },
          "includeDescription": {
            "title": "📄 Full descriptions for LinkedIn jobs",
            "type": "boolean",
            "description": "Opens each LinkedIn job page for the description, seniority, employment type, industries, applicants and whether it is Easy Apply or an external application (one request per job). LinkedIn shows the external apply link and, on most postings, the job function only to signed-in members, so those are not included.",
            "default": true
          },
          "includeCompanyDetails": {
            "title": "🏢 Add company details (free)",
            "type": "boolean",
            "description": "For each hiring company, read its LinkedIn company page once per run and add to every job row: website and domain, industry, size, employees on LinkedIn, followers, headquarters (city, country), founded year, company type, specialties, description and tagline. Free — no extra charge. Turn off for slightly faster runs.",
            "default": true
          },
          "includeContacts": {
            "title": "📧 Extract emails and phones from postings",
            "type": "boolean",
            "description": "Recruiter and HR emails and phone numbers found in the job description, plus the company domain from its website or apply link.",
            "default": true
          },
          "enrichCompanyContacts": {
            "title": "🌐 Look up contacts on the company website ($)",
            "type": "boolean",
            "description": "For jobs with a known company domain, open the home page and a contact page to collect general emails, phones and social links (2–4 requests per company, cached within the run).",
            "default": false
          },
          "maxCompaniesToEnrich": {
            "title": "Companies to enrich per run",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Cap for the website look-up above.",
            "default": 50
          },
          "maxItems": {
            "title": "Maximum rows per run",
            "minimum": 1,
            "maximum": 500000,
            "type": "integer",
            "description": "Stop after this many rows.",
            "default": 20000
          },
          "concurrency": {
            "title": "Parallel searches",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many searches run at once.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify datacenter proxies work for all sources. Switch to Residential only if rate-limit error rows appear.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}