{
  "openapi": "3.0.1",
  "info": {
    "title": "Ashby Jobs API - Search 615 Boards, No Company List",
    "description": "Query an index of 615 verified Ashby boards — 14,884 open roles — with no company list of your own. Ashby publishes structured pay, so salary ranges come through on most postings. Filter by title, location, remote and posting date. Deduped for scheduled runs.",
    "version": "1.0",
    "x-build-id": "s946PYALdi186Qq1J"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/deadwood_data_solutions~ashby-jobs-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-deadwood_data_solutions-ashby-jobs-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/deadwood_data_solutions~ashby-jobs-api/runs": {
      "post": {
        "operationId": "runs-sync-deadwood_data_solutions-ashby-jobs-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/deadwood_data_solutions~ashby-jobs-api/run-sync": {
      "post": {
        "operationId": "run-sync-deadwood_data_solutions-ashby-jobs-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",
        "properties": {
          "presetLists": {
            "title": "Company bundles - no company list needed",
            "type": "array",
            "description": "Curated, verified company bundles. Pick one and run: every slug was checked against the live board on 2026-08-24, so you do not have to research any yourself. Combine with your own entries below if you want both.",
            "items": {
              "type": "string",
              "enum": [
                "top-tech",
                "ai-ml",
                "devtools",
                "yc-backed",
                "fintech",
                "remote-first"
              ],
              "enumTitles": [
                "Top tech (19 companies)",
                "AI & machine learning (41 companies)",
                "Developer tools (33 companies)",
                "YC-backed (32 companies)",
                "Fintech (23 companies)",
                "Remote-first (20 companies)"
              ]
            }
          },
          "searchIndex": {
            "title": "Search every board we know - no company list at all",
            "type": "boolean",
            "description": "Ignore company lists entirely and query our index of 615 verified ashby boards (14,884 open roles at last check, 2026-08-24). Combine with the title, location and remote filters below to pull, say, every remote senior backend role posted this week. Boards are fetched most-active first, up to \"Maximum boards to search\".",
            "default": false
          },
          "maxBoards": {
            "title": "Maximum boards to search",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Only used when the index search above is on. Each board is one request, so a higher number means a longer run. 200 covers the most active boards in the index."
          },
          "companies": {
            "title": "Ashby job-board names",
            "type": "array",
            "description": "One or more Ashby job-board names — the slug in jobs.ashbyhq.com/<name> (e.g. Ramp).",
            "items": {
              "type": "string"
            }
          },
          "maxPerCompany": {
            "title": "Maximum jobs per company",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many jobs from each board, so one large employer cannot fill the whole result. Recommended with bundles. Leave empty for no per-company cap."
          },
          "titleIncludes": {
            "title": "Title keywords (any match)",
            "type": "array",
            "description": "Keep only jobs whose title contains one of these (case-insensitive). Leave empty for all titles. E.g. engineer, product, sales.",
            "items": {
              "type": "string"
            }
          },
          "locationIncludes": {
            "title": "Location keywords (any match)",
            "type": "array",
            "description": "Keep only jobs whose location contains one of these (case-insensitive). Leave empty for all locations. E.g. new york, london, remote.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote roles only",
            "type": "boolean",
            "description": "Keep only jobs flagged remote (or whose location mentions remote).",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only postings published in the last N days. 7 gives you this week’s roles. Postings on boards that publish no date are left out, because they cannot be shown to be recent. Leave empty for no date limit."
          },
          "includeDescription": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "Include each posting's plain-text job description. Larger records.",
            "default": false
          },
          "includeSalary": {
            "title": "Read pay into the salary fields",
            "type": "boolean",
            "description": "Ashby publishes structured pay on most postings. This reads it into salaryMin / salaryMax / salaryCurrency / salaryInterval, falling back to the posting body when a board does not. No extra requests either way.",
            "default": true
          },
          "maxItems": {
            "title": "Maximum records to return",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many normalized records have been pushed. Leave blank for no limit."
          },
          "onlyNewSinceLastRun": {
            "title": "Only return jobs not seen in a previous run",
            "type": "boolean",
            "description": "Recommended for scheduled runs. Uses persisted state to skip postings already returned earlier, so a recurring schedule only charges for genuinely new jobs.",
            "default": true
          },
          "syncEnabled": {
            "title": "Sync new records to a connected app (optional)",
            "type": "boolean",
            "description": "Send each new record to a connected destination (Notion, HubSpot, Airtable, Supabase, or any Apify MCP connector) in addition to the dataset. Free — this never triggers a billable event. A sync failure never blocks or fails the run.",
            "default": false
          },
          "syncDestination": {
            "title": "Sync destination connector",
            "type": "string",
            "description": "Connect the app under Integrations in Apify Console first, then pick it here. Required only if 'Sync new records' is on."
          },
          "syncWriteTool": {
            "title": "Sync destination tool to call per record",
            "type": "string",
            "description": "Name of the destination's MCP tool that creates one record, e.g. 'create_page' for Notion, 'insert' for Supabase. Run the dataset-sync-connector Actor in 'list-tools' mode against the same destination if you don't know it."
          },
          "syncFieldMap": {
            "title": "Sync field mapping",
            "type": "object",
            "description": "Maps destination argument names to this Actor's output field names, e.g. {\"title\": \"legalName\", \"phone\": \"phone\"}. Leave empty to pass each record through unchanged."
          },
          "syncExtraArgs": {
            "title": "Sync constant arguments",
            "type": "object",
            "description": "Fixed arguments merged into every sync write call, e.g. {\"database_id\": \"abc123\"} for Notion."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}