{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Database API — Advanced Search + Decision Makers",
    "description": "Search 50M+ LinkedIn job postings with database-grade filters: boolean title and description search, exclusions, employer size, industry, seniority, salary, applicants, expired jobs. Each job: full text, company card, recruiter; add the employer's hiring pace and decision makers. $0.80/1,000.",
    "version": "0.1",
    "x-build-id": "QrQzxW3gkjtUiBcIV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/b2bsearch~linkedin-job-search-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-b2bsearch-linkedin-job-search-api",
        "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/b2bsearch~linkedin-job-search-api/runs": {
      "post": {
        "operationId": "runs-sync-b2bsearch-linkedin-job-search-api",
        "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/b2bsearch~linkedin-job-search-api/run-sync": {
      "post": {
        "operationId": "run-sync-b2bsearch-linkedin-job-search-api",
        "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": {
          "titleSearch": {
            "title": "Title search",
            "maxItems": 10,
            "type": "array",
            "description": "Job titles to search for, one per line; a job whose title contains any line is kept. Whole words, any case. A line may use boolean search: AND, OR, NOT, \"exact phrase\", parentheses (for example: (backend OR platform) engineer NOT intern). Up to 10 lines. Example values: software engineer, data engineer.",
            "items": {
              "type": "string"
            }
          },
          "locationSearch": {
            "title": "Location search",
            "type": "array",
            "description": "Where the job is: countries by name or two-letter code (United States, Germany, gb, UK), US states (California), cities (Berlin; Austin, Texas). Any of them; no exact \"City, State, Country\" format to get right. A search needs a country here or an employer in Employer slugs. Up to 60.",
            "items": {
              "type": "string"
            }
          },
          "limit": {
            "title": "Max jobs",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "How many jobs to deliver in this run (default 100; 0 = up to 10,000). This is your spend cap: $0.80 per 1,000 jobs delivered. Free Apify plan: up to 100.",
            "default": 100
          },
          "previewOnly": {
            "title": "Preview only: count and breakdown, free",
            "type": "boolean",
            "description": "Returns how many jobs match and their breakdown by country, seniority, employment type, industry, top employers, titles and cities. No job rows, no charge. Run it first to size a search or measure a market, then turn it off to get the jobs.",
            "default": false
          },
          "compact": {
            "title": "Compact rows (for AI agents)",
            "type": "boolean",
            "description": "Returns a short row: every plain column, long text (the description) cut to 300 characters, nested blocks left out. Made for AI agents and LLM pipelines with a context limit. Same price. Off by default.",
            "default": false
          },
          "timeRange": {
            "title": "Time range",
            "enum": [
              "24h",
              "7d",
              "30d",
              "90d",
              "6m"
            ],
            "type": "string",
            "description": "Jobs posted within this window, counted from the start of the run (default 7 days; 6m = everything the database holds, 180 days). The database is reloaded after each data update; every row says what date the data runs to. For a daily feed schedule the Actor with 24h.",
            "default": "7d"
          },
          "titleExclusionSearch": {
            "title": "Title exclusions",
            "type": "array",
            "description": "Words or phrases the title must not contain, one per line (intern, \"staff engineer\"). Up to 10.",
            "items": {
              "type": "string"
            }
          },
          "descriptionSearch": {
            "title": "Description search",
            "type": "array",
            "description": "Words or phrases the job description must contain, one per line; any line matches. Put the role in Title search and the technology here (kubernetes, SAP, HubSpot). Needs an employer in Employer slugs, or a country with a time range of at most 30 days: the texts are read for the postings the other filters leave. Up to 10.",
            "items": {
              "type": "string"
            }
          },
          "descriptionExclusionSearch": {
            "title": "Description exclusions",
            "type": "array",
            "description": "Words or phrases the description must not contain. Only together with Description search. Up to 10.",
            "items": {
              "type": "string"
            }
          },
          "locationExclusionSearch": {
            "title": "Location exclusions",
            "type": "array",
            "description": "Whole countries to leave out, by name or two-letter code. Cities and states cannot be excluded.",
            "items": {
              "type": "string"
            }
          },
          "organizationSlugFilter": {
            "title": "Employer slugs",
            "maxItems": 100,
            "type": "array",
            "description": "Exact employers: the company page slug (tesla-motors), a company page URL, a website domain (stripe.com) or a numeric id. An employer list alone is a complete search, with Title search empty you get all of its postings. Up to 100.",
            "items": {
              "type": "string"
            }
          },
          "organizationSearch": {
            "title": "Employer name search",
            "type": "array",
            "description": "Employer names, matched as part of the recorded company name (Google matches Google Cloud). Several companies share a name, so use Employer slugs for an exact employer. Up to 20.",
            "items": {
              "type": "string"
            }
          },
          "organizationSlugExclusionFilter": {
            "title": "Employer exclusions",
            "type": "array",
            "description": "Employers to leave out: page slug, company page URL, website domain or numeric id. Up to 100.",
            "items": {
              "type": "string"
            }
          },
          "organizationEmployeesGte": {
            "title": "Employer size: at least",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs at employers with at least this many employees on record. Employers with no headcount on record are skipped free."
          },
          "organizationEmployeesLte": {
            "title": "Employer size: at most",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs at employers with at most this many employees on record."
          },
          "organizationSizeFilter": {
            "title": "Employer size buckets",
            "uniqueItems": true,
            "type": "array",
            "description": "Employer headcount buckets, any of them. Combined with the two size numbers above into one floor and one ceiling.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2-10",
                "11-50",
                "51-200",
                "201-500",
                "501-1000",
                "1001-5000",
                "5001-10000",
                "10001+"
              ],
              "enumTitles": [
                "1",
                "2-10",
                "11-50",
                "51-200",
                "201-500",
                "501-1,000",
                "1,001-5,000",
                "5,001-10,000",
                "10,001+"
              ]
            }
          },
          "removeAgency": {
            "title": "Leave out agencies and job boards",
            "type": "boolean",
            "description": "Drops postings by staffing and recruiting firms and job-board aggregators (by the posting's industry and by the employer's own card), and employers with far more postings than employees (at least 200 open, or 100 posted in 30 days, and more than two per employee). Off by default.",
            "default": false
          },
          "seniorityFilter": {
            "title": "Seniority",
            "uniqueItems": true,
            "type": "array",
            "description": "Seniority levels as the posting states them. Any of them.",
            "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"
              ]
            }
          },
          "employmentTypeFilter": {
            "title": "Employment type",
            "uniqueItems": true,
            "type": "array",
            "description": "Employment types, any of them. aiEmploymentTypeFilter is accepted as the same field.",
            "items": {
              "type": "string",
              "enum": [
                "FULL_TIME",
                "PART_TIME",
                "CONTRACTOR",
                "TEMPORARY",
                "INTERN",
                "VOLUNTEER",
                "OTHER"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            }
          },
          "industryFilter": {
            "title": "Industries",
            "type": "array",
            "description": "Industries of the posting, by name (Software Development, Financial Services) or numeric id. An industry covers its sub-industries. Up to 30.",
            "items": {
              "type": "string"
            }
          },
          "industryExclusionFilter": {
            "title": "Industry exclusions",
            "type": "array",
            "description": "Industries to leave out, by name or numeric id. Up to 30.",
            "items": {
              "type": "string"
            }
          },
          "hasSalary": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "Keep only postings that state a salary (about one in seven overall; half in the Netherlands, two in five in China).",
            "default": false
          },
          "salaryMin": {
            "title": "Salary at least (per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep postings whose stated yearly pay reaches this amount, in the salary currency. Postings without a stated salary never match."
          },
          "salaryCurrency": {
            "title": "Salary currency",
            "type": "string",
            "description": "Three-letter code the salary floor is in (default USD). A posting is compared in its own currency.",
            "default": "USD"
          },
          "maxApplicants": {
            "title": "Applicants at most",
            "enum": [
              "25",
              "50",
              "75",
              "100",
              "125",
              "150",
              "175",
              "200"
            ],
            "type": "string",
            "description": "Keep postings in the applicant buckets up to this ceiling. The data keeps applicant counts in buckets of 25; \"Under 25\" is the closest answer to \"few applicants\"."
          },
          "aiExperienceLevelFilter": {
            "title": "Years of experience required",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep postings whose stated required experience falls in these ranges, as the posting states it (about one posting in five states one; the others never match). Adjacent ranges are joined.",
            "items": {
              "type": "string",
              "enum": [
                "0-2",
                "2-5",
                "5-10",
                "10+"
              ],
              "enumTitles": [
                "0-2 years",
                "2-5 years",
                "5-10 years",
                "10+ years"
              ]
            }
          },
          "recruiterOnly": {
            "title": "Only jobs that name a recruiter",
            "type": "boolean",
            "description": "Keep postings that name the recruiter or hiring manager (about one in nine; 28% in India, 17% in the UK, 7% in the US). Free; the recruiter card is on every such row.",
            "default": false
          },
          "datePostedAfter": {
            "title": "Posted on or after",
            "type": "string",
            "description": "Only jobs posted on or after this date (YYYY-MM-DD or a full timestamp). With a time range too, the later bound wins. Set it to your last run for a sync."
          },
          "status": {
            "title": "Status",
            "enum": [
              "active",
              "expired",
              "any"
            ],
            "type": "string",
            "description": "Active postings (default), expired ones (closed or past their valid-through date), or any. Expired with \"Expired on or after\" is the feed of what closed since a date, in the same Actor.",
            "default": "active"
          },
          "expiredAfter": {
            "title": "Expired on or after",
            "type": "string",
            "description": "With status expired or any: only postings that closed on or after this date (YYYY-MM-DD)."
          },
          "recruiter": {
            "title": "Recruiter / hiring manager",
            "enum": [
              "card",
              "profile",
              "none"
            ],
            "type": "string",
            "description": "\"card\" (default, free): name, headline and profile URL of the recruiter when the posting names one. \"profile\": their full career profile, $3.20 per 1,000 jobs that carry one. \"none\": leave the recruiter out.",
            "default": "card"
          },
          "employerHiring": {
            "title": "Add the employer's hiring pace (free)",
            "type": "boolean",
            "description": "Adds the employer's hiring signal to each job row, free: open postings now, postings in the last 7, 30 and 90 days, the date of its latest posting and its top titles of the last 30 days (employerOpenJobs, employerJobs7d/30d/90d, employerLastPostedAt, employerTopTitles30d). Tells a company scaling a team from one that posted once.",
            "default": false
          },
          "decisionMakers": {
            "title": "Add the employer's decision makers",
            "type": "boolean",
            "description": "After each job, adds the founders, C-level, VPs and directors of its employer as separate rows (each employer once per run): name, title, seniority, headline, profile URL, location, and the email on record when the contact tier is on. $3.20 per 1,000 people delivered; employers with nobody on record are free.",
            "default": false
          },
          "decisionMakerRoles": {
            "title": "Decision maker roles",
            "uniqueItems": true,
            "type": "array",
            "description": "Which levels count as a decision maker. Rows are ordered founder + CEO first, then other founders and CEOs, the rest of the C-level, VPs, directors. Default: all four.",
            "items": {
              "type": "string",
              "enum": [
                "founder",
                "cxo",
                "vp",
                "director"
              ],
              "enumTitles": [
                "Founders and owners",
                "C-level",
                "VPs",
                "Directors"
              ]
            }
          },
          "decisionMakersPerCompany": {
            "title": "Decision makers per employer",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "How many people to add per employer, in rank order (default 3, maximum 25). Your spend cap per employer: $0.0032 per person.",
            "default": 3
          },
          "decisionMakerTitleKeywords": {
            "title": "Decision maker title keywords",
            "type": "array",
            "description": "Keep only decision makers whose job title contains any of these words, for example sales, engineering, talent (3-64 characters each, up to 10).",
            "items": {
              "type": "string"
            }
          },
          "descriptionType": {
            "title": "Description format",
            "enum": [
              "text",
              "html",
              "both",
              "none"
            ],
            "type": "string",
            "description": "What the description columns carry: plain text (default), HTML, both, or none for small rows. Same price.",
            "default": "text"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}