{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper & Search API: Apply Links, No Reposts",
    "description": "Search an hourly index of public LinkedIn jobs. Drop reposts and agencies, or find hard-to-fill roles as hiring leads for staffing agencies. Filter by remote/hybrid, experience, salary, visa, industry and company size. Every job has an apply link, the employer's own where we find it. No login.",
    "version": "1.0",
    "x-build-id": "J5VBjOhJHGeKVL1ES"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sharplinelabs~linkedin-jobs-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sharplinelabs-linkedin-jobs-search",
        "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/sharplinelabs~linkedin-jobs-search/runs": {
      "post": {
        "operationId": "runs-sync-sharplinelabs-linkedin-jobs-search",
        "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/sharplinelabs~linkedin-jobs-search/run-sync": {
      "post": {
        "operationId": "run-sync-sharplinelabs-linkedin-jobs-search",
        "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": {
          "timeRange": {
            "title": "Time range",
            "enum": [
              "1h",
              "24h",
              "7d",
              "30d",
              "3m"
            ],
            "type": "string",
            "description": "Jobs that appeared on LinkedIn in this window. Our index starts on 2026-10-24, so longer ranges open on the dates shown (picking one early ends the run with a message and no charge).",
            "default": "24h"
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Default: United States. Add more countries, or clear the list to search every indexed country. The United Kingdom is GB.",
            "items": {
              "type": "string",
              "enum": [
                "AF",
                "AL",
                "DZ",
                "AD",
                "AO",
                "AI",
                "AG",
                "AR",
                "AM",
                "AW",
                "AU",
                "AT",
                "AZ",
                "BS",
                "BH",
                "BD",
                "BB",
                "BY",
                "BE",
                "BZ",
                "BJ",
                "BM",
                "BT",
                "BO",
                "BA",
                "BW",
                "BR",
                "IO",
                "VG",
                "BN",
                "BG",
                "BF",
                "BI",
                "KH",
                "CM",
                "CA",
                "CV",
                "BQ",
                "KY",
                "CF",
                "TD",
                "CL",
                "CN",
                "CX",
                "CC",
                "CO",
                "KM",
                "CK",
                "CR",
                "HR",
                "CW",
                "CY",
                "CZ",
                "CI",
                "CD",
                "DK",
                "DJ",
                "DM",
                "DO",
                "EC",
                "EG",
                "SV",
                "GQ",
                "ER",
                "EE",
                "SZ",
                "ET",
                "FK",
                "FO",
                "FJ",
                "FI",
                "FR",
                "GF",
                "PF",
                "TF",
                "GA",
                "GM",
                "GE",
                "DE",
                "GH",
                "GI",
                "GR",
                "GL",
                "GD",
                "GP",
                "GU",
                "GT",
                "GG",
                "GN",
                "GW",
                "GY",
                "HT",
                "HN",
                "HK",
                "HU",
                "IS",
                "IN",
                "ID",
                "IQ",
                "IE",
                "IM",
                "IL",
                "IT",
                "JM",
                "JP",
                "JE",
                "JO",
                "KZ",
                "KE",
                "KI",
                "XK",
                "KW",
                "KG",
                "LA",
                "LV",
                "LB",
                "LS",
                "LR",
                "LY",
                "LI",
                "LT",
                "LU",
                "MO",
                "MG",
                "MW",
                "MY",
                "MV",
                "ML",
                "MT",
                "MH",
                "MQ",
                "MR",
                "MU",
                "YT",
                "MX",
                "FM",
                "MD",
                "MC",
                "MN",
                "ME",
                "MS",
                "MA",
                "MZ",
                "MM",
                "NA",
                "NR",
                "NP",
                "NL",
                "NC",
                "NZ",
                "NI",
                "NE",
                "NG",
                "NU",
                "NF",
                "MK",
                "MP",
                "NO",
                "OM",
                "PK",
                "PW",
                "PS",
                "PA",
                "PG",
                "PY",
                "PE",
                "PH",
                "PN",
                "PL",
                "PT",
                "PR",
                "QA",
                "CG",
                "RO",
                "RU",
                "RW",
                "RE",
                "BL",
                "SH",
                "KN",
                "LC",
                "MF",
                "PM",
                "VC",
                "WS",
                "SM",
                "SA",
                "SN",
                "RS",
                "SC",
                "SL",
                "SG",
                "SX",
                "SK",
                "SI",
                "SB",
                "SO",
                "ZA",
                "GS",
                "KR",
                "SS",
                "ES",
                "LK",
                "SD",
                "SR",
                "SJ",
                "SE",
                "CH",
                "ST",
                "TW",
                "TJ",
                "TZ",
                "TH",
                "TL",
                "TG",
                "TK",
                "TO",
                "TT",
                "TN",
                "TM",
                "TC",
                "TV",
                "TR",
                "VI",
                "UG",
                "UA",
                "AE",
                "GB",
                "US",
                "UY",
                "UZ",
                "VU",
                "VA",
                "VE",
                "VN",
                "WF",
                "EH",
                "YE",
                "ZM",
                "ZW",
                "AX"
              ],
              "enumTitles": [
                "Afghanistan (AF)",
                "Albania (AL)",
                "Algeria (DZ)",
                "Andorra (AD)",
                "Angola (AO)",
                "Anguilla (AI)",
                "Antigua and Barbuda (AG)",
                "Argentina (AR)",
                "Armenia (AM)",
                "Aruba (AW)",
                "Australia (AU)",
                "Austria (AT)",
                "Azerbaijan (AZ)",
                "Bahamas (BS)",
                "Bahrain (BH)",
                "Bangladesh (BD)",
                "Barbados (BB)",
                "Belarus (BY)",
                "Belgium (BE)",
                "Belize (BZ)",
                "Benin (BJ)",
                "Bermuda (BM)",
                "Bhutan (BT)",
                "Bolivia (BO)",
                "Bosnia and Herzegovina (BA)",
                "Botswana (BW)",
                "Brazil (BR)",
                "British Indian Ocean Territory (IO)",
                "British Virgin Islands (VG)",
                "Brunei (BN)",
                "Bulgaria (BG)",
                "Burkina Faso (BF)",
                "Burundi (BI)",
                "Cambodia (KH)",
                "Cameroon (CM)",
                "Canada (CA)",
                "Cape Verde (CV)",
                "Caribbean Netherlands (BQ)",
                "Cayman Islands (KY)",
                "Central African Republic (CF)",
                "Chad (TD)",
                "Chile (CL)",
                "China (CN)",
                "Christmas Island (CX)",
                "Cocos (Keeling) Islands (CC)",
                "Colombia (CO)",
                "Comoros (KM)",
                "Cook Islands (CK)",
                "Costa Rica (CR)",
                "Croatia (HR)",
                "Curaçao (CW)",
                "Cyprus (CY)",
                "Czechia (CZ)",
                "Côte d'Ivoire (CI)",
                "Democratic Republic of the Congo (CD)",
                "Denmark (DK)",
                "Djibouti (DJ)",
                "Dominica (DM)",
                "Dominican Republic (DO)",
                "Ecuador (EC)",
                "Egypt (EG)",
                "El Salvador (SV)",
                "Equatorial Guinea (GQ)",
                "Eritrea (ER)",
                "Estonia (EE)",
                "Eswatini (SZ)",
                "Ethiopia (ET)",
                "Falkland Islands (FK)",
                "Faroe Islands (FO)",
                "Fiji (FJ)",
                "Finland (FI)",
                "France (FR)",
                "French Guiana (GF)",
                "French Polynesia (PF)",
                "French Southern Territories (TF)",
                "Gabon (GA)",
                "Gambia (GM)",
                "Georgia (GE)",
                "Germany (DE)",
                "Ghana (GH)",
                "Gibraltar (GI)",
                "Greece (GR)",
                "Greenland (GL)",
                "Grenada (GD)",
                "Guadeloupe (GP)",
                "Guam (GU)",
                "Guatemala (GT)",
                "Guernsey (GG)",
                "Guinea (GN)",
                "Guinea-Bissau (GW)",
                "Guyana (GY)",
                "Haiti (HT)",
                "Honduras (HN)",
                "Hong Kong (HK)",
                "Hungary (HU)",
                "Iceland (IS)",
                "India (IN)",
                "Indonesia (ID)",
                "Iraq (IQ)",
                "Ireland (IE)",
                "Isle of Man (IM)",
                "Israel (IL)",
                "Italy (IT)",
                "Jamaica (JM)",
                "Japan (JP)",
                "Jersey (JE)",
                "Jordan (JO)",
                "Kazakhstan (KZ)",
                "Kenya (KE)",
                "Kiribati (KI)",
                "Kosovo (XK)",
                "Kuwait (KW)",
                "Kyrgyzstan (KG)",
                "Laos (LA)",
                "Latvia (LV)",
                "Lebanon (LB)",
                "Lesotho (LS)",
                "Liberia (LR)",
                "Libya (LY)",
                "Liechtenstein (LI)",
                "Lithuania (LT)",
                "Luxembourg (LU)",
                "Macao (MO)",
                "Madagascar (MG)",
                "Malawi (MW)",
                "Malaysia (MY)",
                "Maldives (MV)",
                "Mali (ML)",
                "Malta (MT)",
                "Marshall Islands (MH)",
                "Martinique (MQ)",
                "Mauritania (MR)",
                "Mauritius (MU)",
                "Mayotte (YT)",
                "Mexico (MX)",
                "Micronesia (FM)",
                "Moldova (MD)",
                "Monaco (MC)",
                "Mongolia (MN)",
                "Montenegro (ME)",
                "Montserrat (MS)",
                "Morocco (MA)",
                "Mozambique (MZ)",
                "Myanmar (MM)",
                "Namibia (NA)",
                "Nauru (NR)",
                "Nepal (NP)",
                "Netherlands (NL)",
                "New Caledonia (NC)",
                "New Zealand (NZ)",
                "Nicaragua (NI)",
                "Niger (NE)",
                "Nigeria (NG)",
                "Niue (NU)",
                "Norfolk Island (NF)",
                "North Macedonia (MK)",
                "Northern Mariana Islands (MP)",
                "Norway (NO)",
                "Oman (OM)",
                "Pakistan (PK)",
                "Palau (PW)",
                "Palestine (PS)",
                "Panama (PA)",
                "Papua New Guinea (PG)",
                "Paraguay (PY)",
                "Peru (PE)",
                "Philippines (PH)",
                "Pitcairn Islands (PN)",
                "Poland (PL)",
                "Portugal (PT)",
                "Puerto Rico (PR)",
                "Qatar (QA)",
                "Republic of the Congo (CG)",
                "Romania (RO)",
                "Russia (RU)",
                "Rwanda (RW)",
                "Réunion (RE)",
                "Saint Barthélemy (BL)",
                "Saint Helena (SH)",
                "Saint Kitts and Nevis (KN)",
                "Saint Lucia (LC)",
                "Saint Martin (MF)",
                "Saint Pierre and Miquelon (PM)",
                "Saint Vincent and the Grenadines (VC)",
                "Samoa (WS)",
                "San Marino (SM)",
                "Saudi Arabia (SA)",
                "Senegal (SN)",
                "Serbia (RS)",
                "Seychelles (SC)",
                "Sierra Leone (SL)",
                "Singapore (SG)",
                "Sint Maarten (SX)",
                "Slovakia (SK)",
                "Slovenia (SI)",
                "Solomon Islands (SB)",
                "Somalia (SO)",
                "South Africa (ZA)",
                "South Georgia and the South Sandwich Islands (GS)",
                "South Korea (KR)",
                "South Sudan (SS)",
                "Spain (ES)",
                "Sri Lanka (LK)",
                "Sudan (SD)",
                "Suriname (SR)",
                "Svalbard and Jan Mayen (SJ)",
                "Sweden (SE)",
                "Switzerland (CH)",
                "São Tomé and Príncipe (ST)",
                "Taiwan (TW)",
                "Tajikistan (TJ)",
                "Tanzania (TZ)",
                "Thailand (TH)",
                "Timor-Leste (TL)",
                "Togo (TG)",
                "Tokelau (TK)",
                "Tonga (TO)",
                "Trinidad and Tobago (TT)",
                "Tunisia (TN)",
                "Turkmenistan (TM)",
                "Turks and Caicos Islands (TC)",
                "Tuvalu (TV)",
                "Türkiye (TR)",
                "U.S. Virgin Islands (VI)",
                "Uganda (UG)",
                "Ukraine (UA)",
                "United Arab Emirates (AE)",
                "United Kingdom (GB)",
                "United States (US)",
                "Uruguay (UY)",
                "Uzbekistan (UZ)",
                "Vanuatu (VU)",
                "Vatican City (VA)",
                "Venezuela (VE)",
                "Vietnam (VN)",
                "Wallis and Futuna (WF)",
                "Western Sahara (EH)",
                "Yemen (YE)",
                "Zambia (ZM)",
                "Zimbabwe (ZW)",
                "Åland Islands (AX)"
              ]
            },
            "default": [
              "US"
            ]
          },
          "titleSearch": {
            "title": "Job titles",
            "type": "array",
            "description": "One title per line; a job matching any line is kept. <code>data engineer</code> matches that phrase: Senior Data Engineer yes, Data Center Engineer no. Advanced (any line): <code>python AND django</code> both words anywhere · <code>dev*</code> starts with · <code>^Senior</code> title starts with · <code>=Data Engineer</code> whole title · <code>NOT intern</code> · <code>(a OR b)</code> · <code>/regex/</code>. AND / OR / NOT in capitals; case and accents ignored.",
            "items": {
              "type": "string"
            }
          },
          "titleExclusionSearch": {
            "title": "Exclude titles",
            "type": "array",
            "description": "Drop jobs whose title matches any line, e.g. <code>intern</code>, <code>senior</code>, <code>sales</code>. Same rules as Job titles.",
            "items": {
              "type": "string"
            }
          },
          "locationSearch": {
            "title": "Locations",
            "type": "array",
            "description": "Keep jobs whose location matches any line, e.g. <code>New York</code>, <code>California</code>, <code>Remote</code>. Same rules as Job titles. Leave empty for the whole country.",
            "items": {
              "type": "string"
            }
          },
          "workplace": {
            "title": "Workplace",
            "type": "array",
            "description": "Remote, hybrid or on-site, read from the location, LinkedIn's tag and the description. Many posts don't say: those are Unknown.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "on-site",
                "unknown"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site",
                "Unknown (not stated)"
              ]
            }
          },
          "seniority": {
            "title": "Experience level",
            "type": "array",
            "description": "LinkedIn's seniority level for the job.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry level",
                "associate",
                "mid-senior level",
                "director",
                "executive",
                "not applicable"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive",
                "Not applicable"
              ]
            }
          },
          "employmentType": {
            "title": "Employment type",
            "type": "array",
            "description": "LinkedIn's employment type.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            }
          },
          "excludeAgencies": {
            "title": "Exclude recruitment agencies",
            "type": "boolean",
            "description": "Drop jobs posted by staffing firms, recruiters, job boards and gig platforms: our list of large agencies, company names (Staffing, Recruiting, Talent...), LinkedIn's Staffing industry, and third-party wording such as \"our client\", C2C or W2. Each job carries is_agency and agency_reason either way.",
            "default": false
          },
          "excludeReposts": {
            "title": "Exclude reposts",
            "type": "boolean",
            "description": "LinkedIn shows a re-listed job as just posted. We spot reposts by the LinkedIn job ID, which grows over time: a job whose ID already existed 2+ days before it appeared is a repost (often half of the 'new' jobs). Turn off to include them; each job carries is_repost.",
            "default": true
          },
          "applyLinks": {
            "title": "Apply links",
            "enum": [
              "complete",
              "basic",
              "verified"
            ],
            "type": "string",
            "description": "Every job gets an apply_url. We first look for the employer's own job page on its careers site. In Complete mode, jobs we could not match are looked up with the partner actor bebity/linkedin-jobs-scraper, which runs on YOUR Apify account at its own price ($1.00-1.50 per 1,000 jobs; free-plan credit works) plus $0.0002 per link it fills (apply_source = partner). If the partner is unavailable on your plan or fails, the run still finishes. A job with no employer link falls back to its LinkedIn page (apply_source = linkedin).",
            "default": "complete"
          },
          "limit": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop after this many jobs (newest first).",
            "default": 20
          },
          "hardToFill": {
            "title": "Hard-to-fill roles",
            "enum": [
              "any",
              "only"
            ],
            "type": "string",
            "description": "A hard-to-fill role is a job LinkedIn shows as new while its job ID is 30+ days old: the employer re-listed the same opening because it is still unfilled. Useful for recruitment and staffing agencies looking for clients. 'Only' keeps reposts automatically. Every job carries job_age_days and hard_to_fill; the HIRING_LEADS record groups the run's jobs by employer.",
            "default": "any"
          },
          "companySearch": {
            "title": "Companies",
            "type": "array",
            "description": "Keep only these companies (one per line; same rules as Job titles; <code>=Meta</code> = exactly that name).",
            "items": {
              "type": "string"
            }
          },
          "companyExclusionSearch": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Drop these companies (one per line).",
            "items": {
              "type": "string"
            }
          },
          "locationExclusionSearch": {
            "title": "Exclude locations",
            "type": "array",
            "description": "Drop jobs whose location matches any line.",
            "items": {
              "type": "string"
            }
          },
          "descriptionSearch": {
            "title": "Description must mention",
            "type": "array",
            "description": "Keep jobs whose description matches any line, e.g. <code>\"visa sponsorship\"</code> or <code>python AND aws</code>. Same rules as Job titles.",
            "items": {
              "type": "string"
            }
          },
          "descriptionExclusionSearch": {
            "title": "Description must not mention",
            "type": "array",
            "description": "Drop jobs whose description matches any line, e.g. <code>\"security clearance\"</code>.",
            "items": {
              "type": "string"
            }
          },
          "minSalary": {
            "title": "Minimum salary (per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs whose top of the pay range, converted to a year (hour x 2080, day x 260, week x 52, month x 12), is at least this, in the currency below. Pay comes from LinkedIn's salary box or a pay range in the description. When set, jobs with no stated pay or pay in another currency are dropped."
          },
          "salaryCurrency": {
            "title": "Salary currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "CHF",
              "INR",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "NZD",
              "SGD",
              "JPY",
              "BRL",
              "MXN",
              "ZAR",
              "AED"
            ],
            "type": "string",
            "description": "Currency of the minimum salary. Used only with Minimum salary; amounts are not converted between currencies.",
            "default": "USD"
          },
          "experienceYears": {
            "title": "Years of experience required",
            "type": "array",
            "description": "The minimum years the description asks for (\"3+ years\", \"at least 5 years\", \"5-7 years of experience\"). Add Not stated to keep jobs that don't say.",
            "items": {
              "type": "string",
              "enum": [
                "0-2",
                "3-5",
                "6-10",
                "10+",
                "unknown"
              ],
              "enumTitles": [
                "0-2 years",
                "3-5 years",
                "6-10 years",
                "10+ years",
                "Not stated"
              ]
            }
          },
          "visaSponsorship": {
            "title": "Visa sponsorship",
            "enum": [
              "any",
              "yes",
              "not_no"
            ],
            "type": "string",
            "description": "Read from the description: \"visa sponsorship available\" is yes; \"unable to sponsor\", \"without sponsorship\" or \"U.S. citizenship required\" is no. Most posts say neither.",
            "default": "any"
          },
          "industries": {
            "title": "Industries",
            "type": "array",
            "description": "Keep jobs whose LinkedIn industry matches any line (same rules as Job titles), e.g. <code>\"software development\"</code>. Jobs without an industry are dropped.",
            "items": {
              "type": "string"
            }
          },
          "industryExclusion": {
            "title": "Exclude industries",
            "type": "array",
            "description": "Drop jobs whose LinkedIn industry matches any line, e.g. <code>\"staffing and recruiting\"</code>.",
            "items": {
              "type": "string"
            }
          },
          "workArrangement": {
            "title": "Work arrangement (detailed)",
            "type": "array",
            "description": "Finer than Workplace: separates fully remote jobs from remote-with-office ones. Read from LinkedIn's label and the description.",
            "items": {
              "type": "string",
              "enum": [
                "on_site",
                "hybrid",
                "remote_ok",
                "remote_only",
                "unknown"
              ],
              "enumTitles": [
                "On-site",
                "Hybrid",
                "Remote OK (remote, office possible)",
                "Remote only (no office)",
                "Unknown"
              ]
            }
          },
          "categories": {
            "title": "Job category",
            "type": "array",
            "description": "Keep jobs in these categories (same 33 categories as Fantastic.jobs), mainly from the job title.",
            "items": {
              "type": "string",
              "enum": [
                "Technology",
                "Healthcare",
                "Management & Leadership",
                "Finance & Accounting",
                "Human Resources",
                "Sales",
                "Marketing",
                "Customer Service & Support",
                "Education",
                "Legal",
                "Engineering",
                "Science & Research",
                "Trades",
                "Construction",
                "Manufacturing",
                "Logistics",
                "Creative & Media",
                "Hospitality",
                "Environmental & Sustainability",
                "Retail",
                "Data & Analytics",
                "Software",
                "Energy",
                "Agriculture",
                "Social Services",
                "Administrative",
                "Government & Public Sector",
                "Art & Design",
                "Food & Beverage",
                "Transportation",
                "Consulting",
                "Sports & Recreation",
                "Security & Safety"
              ]
            }
          },
          "categoryExclusion": {
            "title": "Exclude job categories",
            "type": "array",
            "description": "Drop jobs in any of these categories.",
            "items": {
              "type": "string",
              "enum": [
                "Technology",
                "Healthcare",
                "Management & Leadership",
                "Finance & Accounting",
                "Human Resources",
                "Sales",
                "Marketing",
                "Customer Service & Support",
                "Education",
                "Legal",
                "Engineering",
                "Science & Research",
                "Trades",
                "Construction",
                "Manufacturing",
                "Logistics",
                "Creative & Media",
                "Hospitality",
                "Environmental & Sustainability",
                "Retail",
                "Data & Analytics",
                "Software",
                "Energy",
                "Agriculture",
                "Social Services",
                "Administrative",
                "Government & Public Sector",
                "Art & Design",
                "Food & Beverage",
                "Transportation",
                "Consulting",
                "Sports & Recreation",
                "Security & Safety"
              ]
            }
          },
          "languages": {
            "title": "Description language",
            "type": "array",
            "description": "Keep jobs whose description is written in these languages (detected from the text).",
            "items": {
              "type": "string",
              "enum": [
                "en",
                "fr",
                "de",
                "es",
                "nl",
                "it",
                "pt",
                "pl",
                "sv",
                "da",
                "no",
                "fi",
                "cs",
                "ro",
                "tr",
                "ja",
                "zh",
                "ko",
                "ar",
                "ru"
              ],
              "enumTitles": [
                "English",
                "French",
                "German",
                "Spanish",
                "Dutch",
                "Italian",
                "Portuguese",
                "Polish",
                "Swedish",
                "Danish",
                "Norwegian",
                "Finnish",
                "Czech",
                "Romanian",
                "Turkish",
                "Japanese",
                "Chinese",
                "Korean",
                "Arabic",
                "Russian"
              ]
            }
          },
          "companySize": {
            "title": "Company size",
            "type": "array",
            "description": "Keep jobs from companies of these sizes (LinkedIn's company page). Jobs whose company page can't be read are kept.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2-10",
                "11-50",
                "51-200",
                "201-500",
                "501-1000",
                "1001-5000",
                "5001-10000",
                "10001+"
              ],
              "enumTitles": [
                "1 employees",
                "2-10 employees",
                "11-50 employees",
                "51-200 employees",
                "201-500 employees",
                "501-1000 employees",
                "1001-5000 employees",
                "5001-10000 employees",
                "10001+ employees"
              ]
            }
          },
          "hasSalary": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "Keep jobs with a salary block on LinkedIn or a currency amount in the description.",
            "default": false
          },
          "maxApplicants": {
            "title": "Max applicants",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs with at most this many applicants (LinkedIn's count)."
          },
          "easyApply": {
            "title": "Easy Apply",
            "enum": [
              "any",
              "only",
              "exclude"
            ],
            "type": "string",
            "description": "LinkedIn Easy Apply jobs: keep all, only them, or none of them.",
            "default": "any"
          },
          "ats": {
            "title": "Applicant tracking system",
            "type": "array",
            "description": "Keep only jobs whose employer apply link is on these systems.",
            "items": {
              "type": "string",
              "enum": [
                "workday",
                "successfactors",
                "oracle_orc",
                "icims",
                "phenom",
                "greenhouse",
                "lever",
                "ashby",
                "smartrecruiters",
                "eightfold",
                "ukg",
                "dayforce",
                "paylocity",
                "adp_wfn",
                "taleo_tbe",
                "jobvite",
                "teamtailor",
                "workable",
                "bamboohr",
                "paradox",
                "radancy",
                "jibe",
                "breezy",
                "pinpoint",
                "applicantstack",
                "zoho",
                "amazon"
              ],
              "enumTitles": [
                "Workday",
                "SAP SuccessFactors",
                "Oracle Recruiting Cloud",
                "iCIMS",
                "Phenom",
                "Greenhouse",
                "Lever",
                "Ashby",
                "SmartRecruiters",
                "Eightfold",
                "UKG",
                "Dayforce",
                "Paylocity",
                "ADP Workforce Now",
                "Taleo",
                "Jobvite",
                "Teamtailor",
                "Workable",
                "BambooHR",
                "Paradox",
                "Radancy",
                "Jibe",
                "Breezy HR",
                "Pinpoint",
                "ApplicantStack",
                "Zoho Recruit",
                "Amazon Jobs"
              ]
            }
          },
          "hardToFillDays": {
            "title": "Hard-to-fill: minimum age (days)",
            "minimum": 3,
            "maximum": 365,
            "type": "integer",
            "description": "How old a re-listed job's ID must be to count as hard to fill. Ages come from the job ID (exact to the day for recent IDs, a few weeks for IDs from before Oct 2026).",
            "default": 30
          },
          "includeDetails": {
            "title": "Include job details",
            "type": "boolean",
            "description": "Open each job page: description, seniority, employment type, industries, applicants, salary, recruiter. Off = index fields only (cheaper event).",
            "default": true
          },
          "descriptionMaxChars": {
            "title": "Description max characters",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "0 (default) = the full description (description_text + description_html). Only set a number if you must save tokens: each job then gets description_snippet, the first N characters, instead of the full text. The description is what an AI needs most to judge a job, so we don't recommend cutting it.",
            "default": 0
          },
          "aiFormat": {
            "title": "AI-friendly export",
            "enum": [
              "none",
              "yaml",
              "markdown",
              "toon"
            ],
            "type": "string",
            "description": "Also save all delivered jobs as ONE compact record (key JOBS_AI in the run's key-value store, linked from OUTPUT.ai_export_url) for LLM prompts: title, company, location, date, workplace, seniority, type, salary, links and the full description (cut only if you set descriptionMaxChars). TOON and CSV-style rows use about 12-15% fewer tokens than JSON for the same content. No extra charge.",
            "default": "none"
          },
          "includeCompanyDetails": {
            "title": "Include company details",
            "type": "boolean",
            "description": "Read each company's public LinkedIn page once per run: size, employees, industry, website, headquarters, type, founded, followers. No extra charge; turn off for faster runs.",
            "default": true
          },
          "compatibility": {
            "title": "Field names",
            "enum": [
              "none",
              "fantastic"
            ],
            "type": "string",
            "description": "For scripts written against fantastic-jobs/advanced-linkedin-job-search-api: adds copies of our fields under their column names.",
            "default": "none"
          },
          "onlyNewSinceLastRun": {
            "title": "Only new since last run",
            "type": "boolean",
            "description": "Skip jobs this same search already delivered (tracked in your key-value store 'lij-search-state'). Made for schedules.",
            "default": false
          },
          "maxJobsToCheck": {
            "title": "Max jobs to check",
            "minimum": 1,
            "type": "integer",
            "description": "Most job pages to open in one run. Also caps the candidates kept after the text filters at 5x this number (newest first).",
            "default": 2000
          },
          "partnerMaxJobs": {
            "title": "Partner lookup: max jobs per run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Most jobs sent to the partner lookup in one run (Apply links = Complete), newest first. Also caps what the partner run may charge you: jobs x $0.0015 x 1.25 + $0.001.",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}