{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper Pro & Recruiter Contacts",
    "description": "Scrape LinkedIn jobs from search URLs, keywords, or company pages. Each row ships parsed salary, skill array, seniority tier, Easy Apply flag, and recruiter contact. Optional company enrichment with size, industry, and founded year. City splitting for high volume runs. Cookie free. Pay per row.",
    "version": "0.1",
    "x-build-id": "E7SfNY2Lamexfw8es"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapemint~linkedin-jobs-scraper-pro/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapemint-linkedin-jobs-scraper-pro",
        "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/scrapemint~linkedin-jobs-scraper-pro/runs": {
      "post": {
        "operationId": "runs-sync-scrapemint-linkedin-jobs-scraper-pro",
        "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/scrapemint~linkedin-jobs-scraper-pro/run-sync": {
      "post": {
        "operationId": "run-sync-scrapemint-linkedin-jobs-scraper-pro",
        "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 jobs search URLs",
            "type": "array",
            "description": "LinkedIn jobs search URLs from your browser. Open LinkedIn jobs in incognito, set your filters, copy the URL. Each URL runs as its own search. Example: 'https://www.linkedin.com/jobs/search/?keywords=software%20engineer&location=United%20States&f_TPR=r604800'.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords (alternative to URL input)",
            "type": "array",
            "description": "Job search terms. Each keyword runs as a separate search. Combined with locations below.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (used with keywords)",
            "type": "array",
            "description": "Locations to combine with keywords. Use the spelling LinkedIn accepts. Leave empty for worldwide.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "companyUrls": {
            "title": "Company URLs (find every open job at a firm)",
            "type": "array",
            "description": "LinkedIn company URLs. The actor pulls every active job posting at each company. Example: 'https://www.linkedin.com/company/openai/'.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxJobs": {
            "title": "Max jobs",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on jobs returned across all queries. Set to 0 for everything LinkedIn exposes (about 1000 per search).",
            "default": 25
          },
          "experienceLevel": {
            "title": "Experience level",
            "enum": [
              "",
              "internship",
              "entry",
              "associate",
              "mid-senior",
              "director",
              "executive"
            ],
            "type": "string",
            "description": "Filter by seniority. Applied when keywords mode is used. Search URLs already carry their own filters.",
            "default": ""
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "",
              "full-time",
              "part-time",
              "contract",
              "temporary",
              "volunteer",
              "internship",
              "other"
            ],
            "type": "string",
            "description": "Employment type filter. Applied when keywords mode is used.",
            "default": ""
          },
          "remoteFilter": {
            "title": "Remote filter",
            "enum": [
              "",
              "onsite",
              "remote",
              "hybrid"
            ],
            "type": "string",
            "description": "Restrict to onsite, remote, or hybrid roles.",
            "default": ""
          },
          "postedSince": {
            "title": "Posted since",
            "enum": [
              "",
              "1d",
              "1w",
              "1m"
            ],
            "type": "string",
            "description": "Only include jobs posted within this window.",
            "default": ""
          },
          "splitByCity": {
            "title": "Split search by city for high volume",
            "type": "boolean",
            "description": "When enabled, the actor splits each keyword search across the top cities of the chosen country. Use this to break past LinkedIn's roughly 1000 results per search cap.",
            "default": false
          },
          "country": {
            "title": "Country to split by",
            "enum": [
              "United States",
              "United Kingdom",
              "Canada",
              "Australia",
              "Germany",
              "India",
              "France",
              "Spain",
              "Netherlands",
              "Brazil"
            ],
            "type": "string",
            "description": "Country whose top cities are used when splitByCity is on.",
            "default": "United States"
          },
          "scrapeCompanyDetails": {
            "title": "Scrape company details",
            "type": "boolean",
            "description": "Fetch each unique company's About page to enrich rows with industry, company size, headcount, founded year, headquarters, specialties, and active job count. Pushed as a separate dataset row per company.",
            "default": false
          },
          "scrapeRecruiterContact": {
            "title": "Scrape recruiter contact",
            "type": "boolean",
            "description": "Parse the 'Meet the hiring team' block on each job detail to extract recruiter name, title, and LinkedIn profile URL. Pushed inline on the job row.",
            "default": false
          },
          "extractSkills": {
            "title": "Extract skills",
            "type": "boolean",
            "description": "Scan the description for 250+ skills across tech, business, and soft skill categories. Returns a deduped sorted array on every job row.",
            "default": true
          },
          "parseSalary": {
            "title": "Parse salary",
            "type": "boolean",
            "description": "Extract salary range, currency, and period from the description. Plausibility checks reject outliers like gift card amounts.",
            "default": true
          },
          "classifySeniority": {
            "title": "Classify seniority tier",
            "type": "boolean",
            "description": "Map the title to intern, entry, mid, senior, staff, lead, manager, director, vp, or c-suite.",
            "default": true
          },
          "detectEasyApply": {
            "title": "Detect Easy Apply jobs",
            "type": "boolean",
            "description": "Flag jobs that use LinkedIn Easy Apply vs an external apply URL. Easy Apply jobs typically receive 3 to 5 times more applicants.",
            "default": true
          },
          "dedupe": {
            "title": "Deduplicate across runs",
            "type": "boolean",
            "description": "Skip job IDs already pushed in previous runs. Turn off to refresh stale rows.",
            "default": true
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Number of pages processed in parallel. Four is the safe default.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy. Datacenter works for low volume. Residential is required above a few hundred jobs or for company enrichment.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}