{
  "openapi": "3.0.1",
  "info": {
    "title": "Job Board Aggregator Scraper (multi-board)",
    "description": "Job Board Aggregator Scraper (multi-board) SD - Job Board Aggregator Scraper (multi-board) is a job data tool that extracts jobs from LinkedIn, Indeed, Glassdoor, Dice, Reed, Remote OK, Himalayas, Jobicy and Arbeitnow in one run: title, company, salary, job type and description.",
    "version": "1.0",
    "x-build-id": "S4bFvdYmrZMcu72Q9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neuro-scraper~job-board-aggregator-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neuro-scraper-job-board-aggregator-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/neuro-scraper~job-board-aggregator-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neuro-scraper-job-board-aggregator-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/neuro-scraper~job-board-aggregator-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neuro-scraper-job-board-aggregator-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": {
          "keywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "Job titles or skills, one per line, e.g. \"python developer\", \"registered nurse\". Every keyword is searched on every chosen board. Remote OK uses it as a tag, Jobicy as a tag, Arbeitnow (no search on its side) matches it against title, tags and company.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, state or country as you would type it on the board, e.g. \"New York, NY\", \"London\", \"United States\". Used by LinkedIn, Indeed, Glassdoor, Dice and Reed; the remote boards (Remote OK, Himalayas, Jobicy) list remote jobs and ignore it; Arbeitnow keeps jobs whose location contains it or that are remote."
          },
          "platforms": {
            "title": "Job boards",
            "uniqueItems": true,
            "type": "array",
            "description": "Which boards to search. Default: LinkedIn, Indeed and Glassdoor.",
            "items": {
              "type": "string",
              "enum": [
                "linkedin",
                "indeed",
                "glassdoor",
                "dice",
                "reed",
                "remoteok",
                "himalayas",
                "jobicy",
                "arbeitnow"
              ],
              "enumTitles": [
                "LinkedIn",
                "Indeed",
                "Glassdoor",
                "Dice (US tech)",
                "Reed (UK)",
                "Remote OK (remote)",
                "Himalayas (remote)",
                "Jobicy (remote)",
                "Arbeitnow (Europe, scans the whole feed)"
              ]
            },
            "default": [
              "linkedin",
              "indeed",
              "glassdoor"
            ]
          },
          "maxResults": {
            "title": "Max results per board",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Jobs to collect from EACH board for EACH keyword. Each board is paged with its own next-page cursor until this number or its end (LinkedIn ~1,000, Indeed ~1,000, Dice 750 per search; Remote OK only publishes its latest ~99 jobs per tag).",
            "default": 20
          },
          "maxTotalJobs": {
            "title": "Max jobs in total (optional)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop the whole run after this many jobs. 0 = no extra limit (boards x keywords x max results per board).",
            "default": 0
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Only jobs posted in the last N days, e.g. 1, 3, 7. Sent to LinkedIn, Indeed, Glassdoor, Dice and Reed as their own date filter (the nearest window that covers it); the exact cut is also made on the posting date for every board. 0 = any time.",
            "default": 0
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "any",
              "fulltime",
              "parttime",
              "contract",
              "internship",
              "temporary"
            ],
            "type": "string",
            "description": "Sent as each board's own job-type filter where it has one (Indeed, Glassdoor, Dice, Reed, Himalayas); LinkedIn ignores it logged out, so its job pages are opened and checked. Jobs from boards that publish no job type for a job are left out.",
            "default": "any"
          },
          "isRemote": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Board remote filters (Indeed, Glassdoor, Dice, Reed) plus a check of each job's own remote flag or text. LinkedIn job pages are opened to check the description.",
            "default": false
          },
          "easyApply": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Only jobs you can apply to on the board itself (LinkedIn Easy Apply, Glassdoor and Dice easy apply, Reed easy apply). Boards without that flag are left out.",
            "default": false
          },
          "distance": {
            "title": "Search radius (miles)",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Radius around the location for Indeed (miles or km, as the country site uses) and Reed (miles, max 100). 0 = the board's default (Indeed 25).",
            "default": 0
          },
          "countryIndeed": {
            "title": "Indeed country site",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "IN",
              "IE",
              "NZ",
              "SG",
              "ZA",
              "PH",
              "MY",
              "AE",
              "PK",
              "NG"
            ],
            "type": "string",
            "description": "Which Indeed site is searched (the location should be in that country).",
            "default": "US"
          },
          "linkedinCompanyIds": {
            "title": "LinkedIn company ids",
            "type": "array",
            "description": "Only LinkedIn jobs of these companies: the numeric ids from a LinkedIn job search URL (f_C=1035,1441), one per line, e.g. \"1035\" (Microsoft).",
            "items": {
              "type": "string"
            }
          },
          "companyKeywords": {
            "title": "Company keywords",
            "type": "array",
            "description": "Keep only jobs whose company name contains one of these words, e.g. \"Google\", \"bank\" (checked on every board's company name).",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Leave out jobs whose title or company contains one of these words, e.g. \"senior\", \"recruiting\".",
            "items": {
              "type": "string"
            }
          },
          "salaryOnly": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "Leave out jobs that publish no salary.",
            "default": false
          },
          "fetchDescriptions": {
            "title": "Open job pages for full details",
            "type": "boolean",
            "description": "Opens each LinkedIn, Glassdoor, Dice and Reed job page for the full description, job type, seniority, industry, applicants, company size, revenue and website. Slower (one extra request per job). Indeed and the remote boards return full descriptions without it. Glassdoor rate-limits job pages after ~13 per IP; later Glassdoor rows then keep list fields.",
            "default": false
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "text",
              "html"
            ],
            "type": "string",
            "description": "Plain text, or the board's own HTML where it publishes one.",
            "default": "text"
          },
          "dedupeBy": {
            "title": "Remove duplicates across boards",
            "enum": [
              "companyTitleCity",
              "companyAndTitle",
              "none"
            ],
            "type": "string",
            "description": "The same job is often posted on several boards; the first one found is kept. Duplicates inside one board are always removed by the job id.",
            "default": "companyTitleCity"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Residential proxy is the default; each board gets its own session.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}