{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper & Employer Company Details",
    "description": "LinkedIn Jobs Scraper collects job postings from LinkedIn, capturing titles, companies, locations, descriptions, and posting dates. Configure keywords, regions, and filters to gather clean, structured job-market data for research, analytics, recruiting, or automation workflows efficiently insights",
    "version": "0.1",
    "x-build-id": "vSNCp8ucyPMv57uUr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/simpleapi~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-simpleapi-linkedin-jobs-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/simpleapi~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-simpleapi-linkedin-jobs-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/simpleapi~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-simpleapi-linkedin-jobs-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "addEmployerProfile": {
            "title": "🏢 Add employer company details",
            "type": "boolean",
            "description": "Fetch each employer's public LinkedIn company page and add the firmographic columns (followers, employees, industry, size band, HQ, founded year, website, specialties, org ID) to every job row. Also writes one row per unique employer to a separate company dataset.\n\nTurn OFF for a pure job-listing scrape with no extra requests. Default is ON.",
            "default": true
          },
          "employerSizeMin": {
            "title": "📏 Minimum employees on LinkedIn",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose employer has AT LEAST this many employees on LinkedIn. Example: 500 drops startups and keeps mid-market and enterprise.\n\nNeeds employer details ON. Leave empty for no minimum. A job whose employer size could not be read is KEPT, never silently dropped — its status column says why."
          },
          "employerSizeMax": {
            "title": "📐 Maximum employees on LinkedIn",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose employer has AT MOST this many employees on LinkedIn. Example: minimum 51 plus maximum 500 targets small-to-mid companies only.\n\nNeeds employer details ON. Leave empty for no maximum."
          },
          "followSimilarJobs": {
            "title": "🔗 Also scrape similar jobs",
            "type": "boolean",
            "description": "After the search, open each job's page and queue the related jobs LinkedIn recommends beside it. Results stay within your Maximum jobs budget and are deduplicated against the search results.\n\nDefault is OFF — turn it on when you want breadth beyond your keywords.",
            "default": false
          },
          "similarJobsPerSeed": {
            "title": "🔢 Similar jobs per listing",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "How many related jobs to take from each seed listing. LinkedIn shows about 37 per page, so higher values simply take everything available.\n\nExample: 20 seed jobs times 10 equals up to 200 extra jobs, still capped by Maximum jobs. Default is 10.",
            "default": 10
          },
          "companyInput": {
            "title": "🏭 Employers to target",
            "type": "array",
            "description": "Limit the scrape to specific companies. Each row accepts any of:\n• Name — Google\n• Company URL — https://www.linkedin.com/company/google/\n• Numeric ID — 1441\n\nLeave empty to search all employers by keyword instead. 📋 Add as many rows as you need.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "💼 Role keywords",
            "type": "string",
            "description": "The job title or skill to search for — Software Engineer, Data Analyst, Product Manager. Leave empty to pull everything the other filters allow.",
            "default": "Software Engineer"
          },
          "location": {
            "title": "🌍 Where the jobs are",
            "type": "string",
            "description": "Any location LinkedIn understands: United States, London, Berlin, Ontario. Pair with the Region ID below for consistent country-level results.",
            "default": "United States"
          },
          "maxJobs": {
            "title": "🎯 Maximum jobs",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many jobs to collect in this run, including any added by similar-jobs expansion.\n\n⚠️ LinkedIn's public search hard-stops at roughly 1,000 results per query — past that it returns an error, so 1,000 is the real ceiling for one search. Use similar-jobs expansion or several runs to go wider. Default is 20.",
            "default": 20
          },
          "publishedAt": {
            "title": "📅 Date posted",
            "enum": [
              "",
              "r86400",
              "r604800",
              "r2592000"
            ],
            "type": "string",
            "description": "Only return jobs posted inside this window.",
            "default": ""
          },
          "workType": {
            "title": "🏠 On-site / Remote",
            "enum": [
              "",
              "1",
              "2",
              "3"
            ],
            "type": "string",
            "description": "Restrict by work arrangement.",
            "default": ""
          },
          "contractType": {
            "title": "📋 Employment type",
            "enum": [
              "",
              "F",
              "P",
              "C",
              "T",
              "I",
              "V"
            ],
            "type": "string",
            "description": "Restrict by contract type.",
            "default": ""
          },
          "experienceLevel": {
            "title": "📈 Seniority",
            "enum": [
              "",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6"
            ],
            "type": "string",
            "description": "Restrict by the experience level LinkedIn assigned to the listing.",
            "default": ""
          },
          "geoId": {
            "title": "🌐 Region ID (geoId)",
            "type": "string",
            "description": "LinkedIn's numeric region ID, sent alongside your Location for consistent country-level results. Pick a country below, or leave empty to let LinkedIn infer the region from Location alone.\n\n🏙️ For a city or any other region: run the search on LinkedIn, then copy the geoId number out of the URL bar and paste it here. Custom values are accepted.",
            "default": ""
          },
          "sortOrder": {
            "title": "📊 Sort order (not honoured by LinkedIn)",
            "enum": [
              "",
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "⚠️ Kept only so older input files keep working. LinkedIn's public job endpoint IGNORES sorting entirely — verified by comparing result sets, which come back byte-identical with and without a sort. Whatever you pick, results arrive in LinkedIn's own order and the actor logs that no sort was applied.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "🛡️ Apify Proxy",
            "type": "object",
            "description": "Enable Apify Proxy and choose proxy groups if LinkedIn throttles or blocks you. Off by default."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}