{
  "openapi": "3.0.1",
  "info": {
    "title": "Ashby Jobs Scraper – Job Postings with Salary Ranges",
    "description": "Job postings from Ashby job boards (jobs.ashbyhq.com) by company: title, department, team, locations with country, employment and workplace type, published salary range, full text. Many boards per run, filters, only new jobs on schedules. No personal data.",
    "version": "1.1",
    "x-build-id": "cY01GGvcdIjMwNo1n"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rowcraft~ashby-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rowcraft-ashby-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/rowcraft~ashby-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rowcraft-ashby-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/rowcraft~ashby-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rowcraft-ashby-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": {
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Ashby job-board names or addresses, one per line: \"ramp\", \"https://jobs.ashbyhq.com/openai\", or a job link (then only that job). The board name is the part after jobs.ashbyhq.com/.",
            "items": {
              "type": "string"
            }
          },
          "lists": {
            "title": "Ready-made company lists",
            "type": "array",
            "description": "Lists of companies verified on the public career-site APIs and refreshed with every release (by country of their open jobs, by industry, or every company on a system). Combine with the filters below to search across all of them in one run.",
            "items": {
              "type": "string",
              "enum": [
                "europe",
                "united-kingdom",
                "germany",
                "france",
                "spain",
                "ireland",
                "poland",
                "netherlands",
                "italy",
                "portugal",
                "switzerland",
                "sweden",
                "romania",
                "denmark",
                "nordics",
                "dach",
                "benelux",
                "remote",
                "united-states",
                "canada",
                "india",
                "mexico",
                "brazil",
                "australia",
                "singapore",
                "argentina",
                "colombia",
                "japan",
                "philippines",
                "israel",
                "south-korea",
                "united-arab-emirates",
                "saudi-arabia",
                "industry-b2b",
                "industry-healthcare",
                "industry-fintech",
                "industry-industrials",
                "industry-consumer",
                "industry-real-estate-and-construction",
                "industry-government",
                "industry-education",
                "all-ashby"
              ],
              "enumTitles": [
                "Europe (144 companies)",
                "United Kingdom (91 companies)",
                "Germany (34 companies)",
                "France (24 companies)",
                "Spain (16 companies)",
                "Ireland (18 companies)",
                "Poland (10 companies)",
                "Netherlands (9 companies)",
                "Italy (7 companies)",
                "Portugal (9 companies)",
                "Switzerland (9 companies)",
                "Sweden (6 companies)",
                "Romania (6 companies)",
                "Denmark (5 companies)",
                "Nordics (14 companies)",
                "DACH (42 companies)",
                "Benelux (10 companies)",
                "Remote jobs (356 companies)",
                "United States (489 companies)",
                "Canada (61 companies)",
                "India (35 companies)",
                "Mexico (19 companies)",
                "Brazil (21 companies)",
                "Australia (17 companies)",
                "Singapore (18 companies)",
                "Argentina (15 companies)",
                "Colombia (9 companies)",
                "Japan (13 companies)",
                "Philippines (12 companies)",
                "Israel (6 companies)",
                "South Korea (10 companies)",
                "United Arab Emirates (7 companies)",
                "Saudi Arabia (5 companies)",
                "B2B companies (233 companies)",
                "Healthcare companies (41 companies)",
                "Fintech companies (41 companies)",
                "Industrials companies (29 companies)",
                "Consumer companies (21 companies)",
                "Real Estate and Construction companies (8 companies)",
                "Government companies (6 companies)",
                "Education companies (5 companies)",
                "Every Ashby company we know (564 companies)"
              ]
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep jobs whose title contains any of these words, e.g. \"engineer\", \"sales\" (case-insensitive). Turn on the option below to search the ad text too; department names go in \"Departments or teams\".",
            "items": {
              "type": "string"
            }
          },
          "keywordsInDescription": {
            "title": "Search keywords in the ad text too",
            "type": "boolean",
            "description": "Also match the keywords in the full description (slower on systems that need a detail request).",
            "default": false
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep jobs in any of these countries, country codes, regions or cities, e.g. \"Germany\", \"DE\", \"London\", \"California\". Add \"remote\" to also keep remote jobs.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs marked remote.",
            "default": false
          },
          "departments": {
            "title": "Departments or teams",
            "type": "array",
            "description": "Keep jobs whose department or team contains any of these words.",
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "Keep only these employment types (values the systems do not publish are kept as written).",
            "items": {
              "type": "string",
              "enum": [
                "Full-time",
                "Part-time",
                "Contract",
                "Internship",
                "Temporary",
                "Apprenticeship"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Internship",
                "Temporary",
                "Apprenticeship"
              ]
            }
          },
          "postedAfter": {
            "title": "Published on or after",
            "type": "string",
            "description": "YYYY-MM-DD, or relative: \"today\", \"yesterday\", \"7 days\", \"2 weeks\"."
          },
          "withSalaryOnly": {
            "title": "Only jobs with a published salary",
            "type": "boolean",
            "description": "Keep only jobs where the employer publishes a salary or pay range.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum job ads",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many jobs in total. 0 = no limit.",
            "default": 1000
          },
          "maxItemsPerCompany": {
            "title": "Maximum job ads per company",
            "minimum": 0,
            "type": "integer",
            "description": "0 = no limit. Jobs come in the order of the company's career page.",
            "default": 0
          },
          "includeHtml": {
            "title": "Include HTML versions of the texts",
            "type": "boolean",
            "description": "Adds the description (and requirements and benefits where separated) as HTML, with contact links removed. Plain text is always included.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new rows since the last run",
            "type": "boolean",
            "description": "Remember the rows already delivered to you (in a key-value store in your Apify account) and deliver only rows that appeared since the last run with the same state key. The first run delivers everything that matches; later runs cost only the new rows. Ideal for schedules.",
            "default": false
          },
          "stateName": {
            "title": "State name",
            "type": "string",
            "description": "Name of the memory used by \"Only new rows\". Use a different name for each schedule or search (for example `stockholm-python`) so they do not share one memory.",
            "default": "default"
          },
          "notifyUrl": {
            "title": "Notify this URL when the run ends",
            "type": "string",
            "description": "A webhook address that receives one JSON POST with the number of new rows and links to the dataset: a Slack or Discord incoming webhook, a Make, n8n or Zapier catch hook, or your own endpoint. The message is also in the `text` (Slack) and `content` (Discord) fields."
          },
          "notifyWhenEmpty": {
            "title": "Notify also when there are no new rows",
            "type": "boolean",
            "description": "By default the notification is sent only when at least one row was delivered.",
            "default": false
          },
          "requestIntervalMs": {
            "title": "Delay between requests (ms)",
            "minimum": 250,
            "maximum": 10000,
            "type": "integer",
            "description": "Default 1000 ms (one request per second). Minimum 250.",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}