{
  "openapi": "3.0.1",
  "info": {
    "title": "⚡ Fast LinkedIn Jobs Scraper",
    "description": "Fast, login-free LinkedIn job search scraper. Extract enriched job listings, salary estimates, skill demand analytics, and major-matching data into JSON/CSV.",
    "version": "0.0",
    "x-build-id": "hJu3thVw2M9yjPtTP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/galih_rakasiwi~linkedin-job-market-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-galih_rakasiwi-linkedin-job-market-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/galih_rakasiwi~linkedin-job-market-api/runs": {
      "post": {
        "operationId": "runs-sync-galih_rakasiwi-linkedin-job-market-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/galih_rakasiwi~linkedin-job-market-api/run-sync": {
      "post": {
        "operationId": "run-sync-galih_rakasiwi-linkedin-job-market-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Search Mode",
            "enum": [
              "search",
              "batch_search",
              "major_search",
              "analytics"
            ],
            "type": "string",
            "description": "Choose how you want to extract LinkedIn job data.",
            "default": "search"
          },
          "keyword": {
            "title": "Search Keyword",
            "type": "string",
            "description": "Job title, skill, or boolean search. Supports AND, OR, NOT, and quoted exact phrases. Examples: 'Software Engineer', 'Python AND SQL AND Spark', '\"data engineer\" remote'.",
            "default": ""
          },
          "keywords": {
            "title": "Keywords (Batch)",
            "maxItems": 10,
            "uniqueItems": true,
            "type": "array",
            "description": "List of search queries. Each query will run independently and results are merged. Max 10 queries per run.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "majorName": {
            "title": "Academic Major Name",
            "enum": [
              "Teknik Informatika",
              "Sistem Informasi",
              "Ilmu Komputer",
              "Teknik Elektro",
              "Teknik Industri",
              "Teknik Mesin",
              "Teknik Sipil",
              "Akuntansi",
              "Manajemen",
              "Ekonomi Pembangunan",
              "Ilmu Komunikasi",
              "Desain Komunikasi Visual",
              "Desain Produk",
              "Hukum",
              "Psikologi",
              "Hubungan Internasional",
              "Kedokteran",
              "Keperawatan",
              "Farmasi",
              "Kesehatan Masyarakat",
              "Agroteknologi",
              "Teknik Lingkungan",
              "Matematika",
              "Statistika",
              "Pendidikan"
            ],
            "type": "string",
            "description": "Indonesian academic major (prodi). The actor auto-generates relevant LinkedIn search keywords from curated skill data. Requires MongoDB with seeded data.",
            "default": ""
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Geographic filter — country, city, or region. Leave empty for worldwide results.",
            "default": ""
          },
          "maxItems": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Maximum number of job postings to extract per query (max 25). LinkedIn guest API limits total results to ~50-75 across all pages.",
            "default": 10
          },
          "remoteOnly": {
            "title": "Remote Jobs Only",
            "type": "boolean",
            "description": "Show only fully remote positions.",
            "default": false
          },
          "experienceLevel": {
            "title": "Experience Level",
            "enum": [
              "",
              "internship",
              "entry",
              "associate",
              "mid",
              "senior",
              "director",
              "executive"
            ],
            "type": "string",
            "description": "Filter by career level.",
            "default": ""
          },
          "employmentType": {
            "title": "Employment Type",
            "enum": [
              "",
              "full-time",
              "part-time",
              "contract",
              "temporary",
              "internship"
            ],
            "type": "string",
            "description": "Filter by employment arrangement.",
            "default": ""
          },
          "datePosted": {
            "title": "Posted Within",
            "enum": [
              "month",
              "week",
              "24h"
            ],
            "type": "string",
            "description": "Only show jobs posted within this time period.",
            "default": "month"
          },
          "fastMode": {
            "title": "Fast Mode (skip salary/skills detail)",
            "type": "boolean",
            "description": "ON = 5-10x faster, but only id/title/company/location/link per job (no salary, skills, benefits, description). OFF (default) = full detail per job, much slower for large maxItems. Applies to Single Search, Batch Search, and Search by Major modes only.",
            "default": false
          },
          "enableAnalytics": {
            "title": "Include Analytics Summary",
            "type": "boolean",
            "description": "Push an additional analytics summary record to the dataset containing top skills, salary ranges, and stats. Useful for dashboards.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Route requests through Apify proxy to avoid IP blocking by LinkedIn. HIGHLY RECOMMENDED — residential proxies give best results.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "requestTimeoutSecs": {
            "title": "Request Timeout (seconds)",
            "minimum": 10,
            "maximum": 120,
            "type": "integer",
            "description": "HTTP request timeout in seconds. Increase for slow proxy connections.",
            "default": 30
          },
          "debugMode": {
            "title": "Debug Mode",
            "type": "boolean",
            "description": "Enable verbose logging. Useful for troubleshooting.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}