{
  "openapi": "3.0.1",
  "info": {
    "title": "Built In Jobs Scraper",
    "description": "Scrape public Built In job listings by keyword, location, remote preference, category, and recency.",
    "version": "0.1",
    "x-build-id": "tOP4yMrH8OifP1IrK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fetch_cat~builtin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fetch_cat-builtin-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/fetch_cat~builtin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fetch_cat-builtin-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/fetch_cat~builtin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fetch_cat-builtin-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": {
          "connectionMode": {
            "title": "Connection",
            "enum": [
              "automatic",
              "direct"
            ],
            "type": "string",
            "description": "Automatic tries direct anonymous HTTP first. If challenged or rate-limited, it uses the existing Apify DEFAULT datacenter pool with bounded rotation, which incurs platform proxy usage but does not change the Actor's per-result price. Direct disables all proxy use and retains the anonymous browser fallback. No residential or Unblocker fallback. Local runs always use Direct."
          },
          "startUrls": {
            "title": "Start URLs",
            "maxItems": 100,
            "type": "array",
            "description": "Optional public Built In jobs/search URLs, up to 100. Nonempty URLs replace generated searches: location, category and remote preference do not alter them. Keyword and recency are added only when the URL lacks search and daysSinceUpdated respectively. Clear the prefilled URL or send an empty array to generate a search from the other fields.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Job title, company, skill or keyword, up to 200 characters. Sent as Built In's search parameter; an existing search parameter in a supplied URL takes precedence. This is a website search, not a separate local keyword filter."
          },
          "location": {
            "title": "Location slug",
            "type": "string",
            "description": "Optional location slug, such as chicago or new-york, used only when start URLs are omitted or empty. Leave empty to add no location suffix. The remote preference still applies to generated searches."
          },
          "remotePreference": {
            "title": "Remote preference",
            "enum": [
              "remote-or-hybrid",
              "remote",
              "hybrid",
              "any"
            ],
            "type": "string",
            "description": "Used only for generated searches, not supplied start URLs. Both remote-or-hybrid (the unchanged default) and remote use Built In's /jobs/remote route; hybrid uses /jobs/hybrid; any adds neither segment. The Remote or hybrid label does not mean two separate searches or a guaranteed combined result set.",
            "default": "remote-or-hybrid"
          },
          "category": {
            "title": "Category slug",
            "type": "string",
            "description": "Optional category for generated searches only; ignored when start URLs are nonempty. Supported slugs: dev-engineering, data-analytics, sales, marketing, product, design-ux, cybersecurity-it, customer-success, finance, hr, operations, legal, project-management, content and internships. Clear the prefilled start URL to use this field."
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum saved job listings across all sources: 1–5000, default 20. A search may return fewer or no records. Keep this low for a first run; optional details add work per selected listing.",
            "default": 20
          },
          "postedWithinDays": {
            "title": "Posted or updated within days",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Optional website recency filter: any integer from 1 to 30. Built In supports 1, 3, 7, 14 and 30 days; other values round up to the next supported window with a warning (for example, 5 uses 7 days and 20 uses 30 days). A supplied URL's existing daysSinceUpdated parameter is never overridden. Results are not independently date-filtered or sorted by this Actor. The form prefill of 7 is not an API default."
          },
          "includeDetails": {
            "title": "Open job detail pages",
            "type": "boolean",
            "description": "Enabled by default. Opens selected job pages for available description, posted date, title, salary, location and remote-type updates. Skills, category and company URL come from listing cards, not detail enrichment. Missing or inaccessible details leave listing data intact; a detail rate limit stops remaining detail visits. Disable for listing-only output; postedDate will be null.",
            "default": true
          },
          "resumeFromStartIndex": {
            "title": "Resume from source number",
            "minimum": 0,
            "type": "integer",
            "description": "Optional 0-based start-URL number to resume after an interrupted run. Leave empty for a new run."
          },
          "resumeFromPage": {
            "title": "Resume from page",
            "minimum": 1,
            "type": "integer",
            "description": "Optional 1-based page number for the resumed source. Leave empty for page 1."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}