{
  "openapi": "3.0.1",
  "info": {
    "title": "Multi Job Board Scraper - LinkedIn, Indeed, Glassdoor & More",
    "description": "Scrape jobs from LinkedIn, Indeed, Glassdoor, Bayt, Naukri & BDJobs in one run. Get titles, companies, salaries, full descriptions, and company details as one clean dataset. No login or proxy needed.",
    "version": "1.0",
    "x-build-id": "fusEDREtj8Gudtxi8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/veeronica~multi-job-board-scraper-linkedin-indeed-glassdoor-more/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-veeronica-multi-job-board-scraper-linkedin-indeed-glassdoor-more",
        "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/veeronica~multi-job-board-scraper-linkedin-indeed-glassdoor-more/runs": {
      "post": {
        "operationId": "runs-sync-veeronica-multi-job-board-scraper-linkedin-indeed-glassdoor-more",
        "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/veeronica~multi-job-board-scraper-linkedin-indeed-glassdoor-more/run-sync": {
      "post": {
        "operationId": "run-sync-veeronica-multi-job-board-scraper-linkedin-indeed-glassdoor-more",
        "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": {
          "searchTerm": {
            "title": "Search keywords",
            "type": "string",
            "description": "The job title, skill, or company to search for — what you'd type into a job board's search box (e.g. <code>software engineer</code>, <code>registered nurse</code>, <code>product manager</code>). Use <b>Multiple search terms</b> below to run several queries in one go."
          },
          "searchTerms": {
            "title": "Multiple search terms (OR search)",
            "type": "array",
            "description": "Optional — run several queries in one run. Results from each are merged and de-duplicated, and every job records which term surfaced it (the <code>searchTerm</code> field). Example: <code>[\"AI engineer\", \"machine learning engineer\"]</code>. Max 5. Cost scales with the number of terms. Leave empty to use the single <b>Search keywords</b> above.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, state, country, or region to search in (e.g. <code>Austin, TX</code>, <code>London</code>, <code>Remote</code>). Leave empty to search broadly. For Indeed and Glassdoor, set <b>Country</b> below to match."
          },
          "sites": {
            "title": "Job boards",
            "type": "array",
            "description": "Which job boards to scrape. Note the regional ones: <b>Bayt</b> = Middle East, <b>Naukri</b> = India, <b>BDJobs</b> = Bangladesh.",
            "items": {
              "type": "string",
              "enum": [
                "linkedin",
                "indeed",
                "glassdoor",
                "bayt",
                "naukri",
                "bdjobs"
              ],
              "enumTitles": [
                "LinkedIn",
                "Indeed",
                "Glassdoor",
                "Bayt",
                "Naukri",
                "BDJobs"
              ]
            },
            "default": [
              "linkedin",
              "indeed",
              "glassdoor"
            ]
          },
          "maxResults": {
            "title": "Max results per board",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum job listings to scrape from each board, per search term (1–1000). Total ≈ this × number of boards × number of search terms.",
            "default": 20
          },
          "isRemote": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Return only jobs tagged as remote. On Indeed this can't be combined with the date filter below (the date filter takes priority).",
            "default": false
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "",
              "fulltime",
              "parttime",
              "contract",
              "internship",
              "temporary"
            ],
            "type": "string",
            "description": "Filter by employment type. Leave as <code>Any</code> to include all types. On Indeed this can't be combined with the date filter (the date filter takes priority).",
            "default": ""
          },
          "hoursOld": {
            "title": "Posted within (hours)",
            "minimum": 1,
            "type": "integer",
            "description": "Only return jobs posted within the last N hours (e.g. <code>24</code> = last day, <code>72</code> = last 3 days, <code>168</code> = last week). Leave empty for any time."
          },
          "country": {
            "title": "Country",
            "enum": [
              "ar",
              "au",
              "at",
              "bh",
              "bd",
              "be",
              "br",
              "bg",
              "ca",
              "cl",
              "cn",
              "co",
              "cr",
              "hr",
              "cy",
              "cz",
              "dk",
              "ec",
              "eg",
              "ee",
              "fi",
              "fr",
              "de",
              "gr",
              "hk",
              "hu",
              "in",
              "id",
              "ie",
              "il",
              "it",
              "jp",
              "kw",
              "lv",
              "lt",
              "lu",
              "my",
              "mt",
              "mx",
              "ma",
              "nl",
              "nz",
              "ng",
              "no",
              "om",
              "pk",
              "pa",
              "pe",
              "ph",
              "pl",
              "pt",
              "qa",
              "ro",
              "sa",
              "sg",
              "sk",
              "sl",
              "za",
              "kr",
              "es",
              "se",
              "ch",
              "tw",
              "th",
              "tr",
              "ua",
              "ae",
              "gb",
              "us",
              "uy",
              "ve",
              "vn"
            ],
            "type": "string",
            "description": "Country for Indeed and Glassdoor searches (which only operate in these countries). Other boards ignore it.",
            "default": "us"
          },
          "distance": {
            "title": "Search radius (miles)",
            "minimum": 0,
            "type": "integer",
            "description": "Radius around the location, in miles (Indeed, LinkedIn). Use <code>0</code> for the exact location only.",
            "default": 50
          },
          "offset": {
            "title": "Results offset",
            "minimum": 0,
            "type": "integer",
            "description": "Skip the first N results — useful for paging through a large result set across runs. Applies to LinkedIn, Glassdoor, and Naukri."
          },
          "easyApply": {
            "title": "Quick apply only",
            "type": "boolean",
            "description": "Only return jobs you can apply to directly on the board (Indeed, LinkedIn, Glassdoor). On Indeed this can't be combined with the date filter.",
            "default": false
          },
          "fetchExtraJobInfo": {
            "title": "Fetch extra job info",
            "type": "boolean",
            "description": "Collect richer per-job data the search results omit. LinkedIn and BDJobs open each job's detail page (an extra request per job): LinkedIn adds the full description, seniority, employment type, job function, company industry, and direct apply URL; BDJobs adds the full description and skills. Naukri keeps the full description already in its search response (no extra request). Slower and more proxy usage on the boards that open detail pages.",
            "default": false
          },
          "linkedinCompanyIds": {
            "title": "LinkedIn: target company IDs (advanced)",
            "type": "array",
            "description": "Restrict the LinkedIn search to specific companies by their numeric LinkedIn company ID (the <code>f_C</code> value in a company's job-search URL). One per line.",
            "items": {
              "type": "string"
            }
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "markdown",
              "html",
              "text"
            ],
            "type": "string",
            "description": "How to format the job description text. <code>Markdown</code> is clean and readable; <code>HTML</code> preserves original styling; <code>Plain text</code> strips all markup.",
            "default": "markdown"
          },
          "enforceAnnualSalary": {
            "title": "Normalize salaries to annual",
            "type": "boolean",
            "description": "Convert all salary figures to annual equivalents (hourly × 2080, monthly × 12, etc.) so salaries are comparable across jobs.",
            "default": false
          },
          "deduplicate": {
            "title": "Remove duplicates",
            "type": "boolean",
            "description": "Drop the same role when it appears more than once (same title, company, and city) — within a board or across boards. The first copy seen is kept.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}