{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper, Bulk & Company Data — No Login, $1.5/1k",
    "description": "LinkedIn Jobs Scraper: search LinkedIn jobs by keywords × locations in bulk, paste search URLs or company names, get full descriptions, salary numbers, applicants and optional company profiles. No login or cookies. MCP-ready for AI agents. $1.5 per 1,000 records.",
    "version": "1.0",
    "x-build-id": "KGdrhL1yjVLLxnGyF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/outstanding_vegetable~linkedin-jobs-guest-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-outstanding_vegetable-linkedin-jobs-guest-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/outstanding_vegetable~linkedin-jobs-guest-scraper/runs": {
      "post": {
        "operationId": "runs-sync-outstanding_vegetable-linkedin-jobs-guest-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/outstanding_vegetable~linkedin-jobs-guest-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-outstanding_vegetable-linkedin-jobs-guest-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": {
          "searchUrls": {
            "title": "LinkedIn search URLs",
            "type": "array",
            "description": "Paste job search URLs from linkedin.com/jobs/search (set any filters on the site first; every URL parameter is kept). Single job URLs (linkedin.com/jobs/view/...) also work. Leave empty to search by keywords below.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Job title, skill or company, e.g. python developer, product manager, nurse. Use 'Keywords (bulk)' for several."
          },
          "keywordsList": {
            "title": "Keywords (bulk)",
            "type": "array",
            "description": "Several job titles or skills. Every keyword is searched in every location below (keyword × location = one search each).",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or country as you would type it on LinkedIn, e.g. 'Austin, Texas', 'London', 'Germany', 'United States'. Empty = worldwide."
          },
          "locations": {
            "title": "Locations (bulk)",
            "type": "array",
            "description": "Several locations; each one is crossed with every keyword.",
            "items": {
              "type": "string"
            }
          },
          "listUrl": {
            "title": "Import keywords / URLs from a list",
            "type": "string",
            "description": "Public Google Sheet, CSV or text file URL, one entry per row (first column). Rows can be keywords, LinkedIn search/job URLs or LinkedIn company URLs."
          },
          "geoId": {
            "title": "LinkedIn geoId",
            "type": "string",
            "description": "Precise location id from a LinkedIn search URL (geoId=...), e.g. 103644278 for the United States. Used when Location is empty, or together with it."
          },
          "distance": {
            "title": "Distance (miles)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Search radius around the location. Empty = LinkedIn default."
          },
          "splitByLocation": {
            "title": "Split country into regions (beat the 1,000 cap)",
            "type": "boolean",
            "description": "LinkedIn serves at most 1,000 jobs per search. When a location is a country, run one search per US state / major city instead and merge the results without duplicates. Supported: US (51 states), CA, GB, IE, DE, FR, NL, BE, CH, AT, ES, IT, PT, SE, NO, DK, FI, PL, IN, AU, NZ, SG, AE, BR, MX, ZA.",
            "default": false
          },
          "splitCountry": {
            "title": "Country to split (when Location is empty)",
            "enum": [
              "US",
              "CA",
              "GB",
              "IE",
              "DE",
              "FR",
              "NL",
              "BE",
              "CH",
              "AT",
              "ES",
              "IT",
              "PT",
              "SE",
              "NO",
              "DK",
              "FI",
              "PL",
              "IN",
              "AU",
              "NZ",
              "SG",
              "AE",
              "BR",
              "MX",
              "ZA"
            ],
            "type": "string",
            "description": "Country used by 'Split country' when no location is given."
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "day",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only jobs posted in this window.",
            "default": "any"
          },
          "workplace": {
            "title": "Workplace",
            "type": "array",
            "description": "On-site, remote, hybrid. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "onsite",
                "remote",
                "hybrid"
              ],
              "enumTitles": [
                "On-site",
                "Remote",
                "Hybrid"
              ]
            },
            "default": []
          },
          "jobType": {
            "title": "Job type",
            "type": "array",
            "description": "Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "parttime",
                "contract",
                "temporary",
                "internship",
                "volunteer"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer"
              ]
            },
            "default": []
          },
          "experience": {
            "title": "Experience level",
            "type": "array",
            "description": "Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry",
                "associate",
                "mid-senior",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            },
            "default": []
          },
          "companyNames": {
            "title": "Companies (names or LinkedIn company URLs)",
            "type": "array",
            "description": "Only jobs at these companies, e.g. Stripe, https://www.linkedin.com/company/openai. Names are resolved to LinkedIn company ids through the company page. With no keywords, returns all jobs at these companies.",
            "items": {
              "type": "string"
            }
          },
          "companyIds": {
            "title": "Company ids",
            "type": "array",
            "description": "LinkedIn numeric company ids (f_C= in a search URL), e.g. 1441 for Google.",
            "items": {
              "type": "string"
            }
          },
          "easyApply": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Only jobs that use LinkedIn Easy Apply.",
            "default": false
          },
          "under10Applicants": {
            "title": "Under 10 applicants",
            "type": "boolean",
            "description": "Sends LinkedIn's 'under 10 applicants' filter (f_JIYN). LinkedIn's public search does not always apply it; check the applicants field.",
            "default": false
          },
          "titleInclude": {
            "title": "Title must contain",
            "type": "array",
            "description": "Keep a job only if its title contains all words of at least one of these phrases (case-insensitive, any order), e.g. 'senior python'.",
            "items": {
              "type": "string"
            }
          },
          "titleExclude": {
            "title": "Title must not contain",
            "type": "array",
            "description": "Drop a job if its title contains all words of any of these phrases, e.g. 'intern', 'staff'.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "relevance",
              "recent"
            ],
            "type": "string",
            "description": "Relevance or most recent.",
            "default": "relevance"
          },
          "fetchDetails": {
            "title": "Fetch full job details",
            "type": "boolean",
            "description": "Open each job for the full description, seniority, employment type, job function, industries, applicant count, salary, apply type, benefits, the job poster (when shown) and a live check. One extra request per job.",
            "default": true
          },
          "enrichCompany": {
            "title": "Add company profile (paid add-on)",
            "type": "boolean",
            "description": "Adds the hiring company's description, website, employee count and range, headquarters and address, industry, type, founded year, specialties and followers. Fetched and billed once per company per run, not per job.",
            "default": false
          },
          "maxItems": {
            "title": "Max jobs (total)",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Total jobs across all searches.",
            "default": 10
          },
          "limitPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap per keyword × location search (or per URL). Empty = up to LinkedIn's 1,000."
          },
          "onlyNew": {
            "title": "Only new jobs (monitor)",
            "type": "boolean",
            "description": "Skip jobs returned by earlier runs with the same Monitor id. Schedule the actor and get only fresh postings each run.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor id",
            "type": "string",
            "description": "Name of the job memory used by 'Only new jobs'. Use a different id per search you schedule."
          },
          "skipJobIds": {
            "title": "Skip job ids",
            "type": "array",
            "description": "Job ids you already have; they are not returned or billed.",
            "items": {
              "type": "string"
            }
          },
          "concurrency": {
            "title": "Parallel job requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Job detail pages fetched in parallel.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential proxy is required.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}