{
  "openapi": "3.0.1",
  "info": {
    "title": "Jobs Board Scraper: Indeed, Reed, Adzuna, RemoteOK & More",
    "description": "Scrape job listings from Indeed, Reed, Totaljobs, CV-Library, Adzuna, RemoteOK, Arbeitnow and more across the UK, US and Europe. Export title, company, location, salary, description and apply URL. Filter by keyword and location. CSV, JSON, Excel.",
    "version": "0.11",
    "x-build-id": "WtdmvfgiLaknL1F3h"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/doggo~uk-jobs-board-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-doggo-uk-jobs-board-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/doggo~uk-jobs-board-scraper/runs": {
      "post": {
        "operationId": "runs-sync-doggo-uk-jobs-board-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/doggo~uk-jobs-board-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-doggo-uk-jobs-board-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",
        "required": [
          "keyword",
          "location"
        ],
        "properties": {
          "keyword": {
            "title": "Job Role Preset",
            "enum": [
              "software engineer",
              "data analyst",
              "data scientist",
              "web developer",
              "frontend developer",
              "backend developer",
              "fullstack developer",
              "devops engineer",
              "cloud engineer",
              "cybersecurity analyst",
              "product manager",
              "project manager",
              "UX designer",
              "business analyst",
              "marketing manager",
              "accountant",
              "nurse",
              "teacher",
              "sales executive",
              "customer service",
              "warehouse operative",
              "mechanical engineer",
              "electrical engineer",
              "civil engineer",
              "HR manager",
              "__custom__"
            ],
            "type": "string",
            "description": "Pick a common role or choose 'Custom' and type your own below",
            "default": "software engineer"
          },
          "custom_keyword": {
            "title": "Custom Keyword",
            "type": "string",
            "description": "Type your own search keyword here. Overrides the preset above when filled in."
          },
          "searchTerms": {
            "title": "Extra Search Terms (multi-search)",
            "type": "array",
            "description": "Search several roles at once. Each term is searched separately and the results are merged and deduplicated into one dataset. Leave empty to just use the keyword above. Example: [\"software engineer\", \"backend developer\", \"platform engineer\"].",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location Preset",
            "enum": [
              "London",
              "Manchester",
              "Birmingham",
              "Leeds",
              "Edinburgh",
              "Glasgow",
              "Bristol",
              "Liverpool",
              "Cardiff",
              "Belfast",
              "Cambridge",
              "Oxford",
              "Remote",
              "New York",
              "San Francisco",
              "Los Angeles",
              "Chicago",
              "Austin",
              "Seattle",
              "Washington DC",
              "Berlin",
              "Munich",
              "Paris",
              "Amsterdam",
              "Sydney",
              "Melbourne",
              "__custom__"
            ],
            "type": "string",
            "description": "Pick a common location or choose 'Custom' and type your own below",
            "default": "London"
          },
          "custom_location": {
            "title": "Custom Location",
            "type": "string",
            "description": "Type your own location here. Overrides the preset above when filled in."
          },
          "country": {
            "title": "Country / Region",
            "enum": [
              "uk",
              "us",
              "de",
              "fr",
              "nl",
              "au",
              "remote"
            ],
            "type": "string",
            "description": "Target country for job search. Determines which boards are auto-selected.",
            "default": "uk"
          },
          "max_results": {
            "title": "Max Results",
            "minimum": 100,
            "type": "integer",
            "description": "Maximum total job listings to return (spread across all boards). Minimum 100.",
            "default": 1000
          },
          "unlimited": {
            "title": "Unlimited Mode",
            "type": "boolean",
            "description": "Scrape without a results cap. Results are saved as they come in, so you keep everything even if you stop the run early. Overrides Max Results.",
            "default": false
          },
          "salary_min": {
            "title": "Minimum Salary",
            "type": "integer",
            "description": "Minimum annual salary filter (e.g. 30000, 50000, 75000). Leave empty for no filter."
          },
          "job_type": {
            "title": "Contract Type (per-board filter)",
            "enum": [
              "all",
              "permanent",
              "temporary",
              "contract",
              "part-time"
            ],
            "type": "string",
            "description": "Employment filter sent straight to the boards that support it (Reed, Indeed, Adzuna, GOV.UK Find a Job). Leave on 'All Types' to let the Job Type filter below handle it across every board.",
            "default": "all"
          },
          "jobType": {
            "title": "Job Type",
            "enum": [
              "any",
              "fulltime",
              "parttime",
              "contract",
              "internship"
            ],
            "type": "string",
            "description": "Normalized job-type filter applied across every board. Boards that expose a type are filtered on it; where they don't, the type is inferred from the title/description. Jobs whose type can't be determined are kept.",
            "default": "any"
          },
          "remoteOnly": {
            "title": "Remote Only",
            "type": "boolean",
            "description": "Keep only remote roles. Detected from the location, title and source board (remote-first boards are always remote).",
            "default": false
          },
          "postedWithinHours": {
            "title": "Posted Within (hours)",
            "type": "integer",
            "description": "Only keep jobs posted within this many hours (e.g. 24 = last day, 168 = last week). Jobs with no readable post date are kept. Leave empty for no date filter."
          },
          "radiusMiles": {
            "title": "Search Radius (miles)",
            "type": "integer",
            "description": "Widen the search around your location by this many miles. Passed to boards that support a radius (Indeed, Adzuna); ignored by boards that don't. Leave empty for each board's default."
          },
          "boards": {
            "title": "Job Boards to Scrape",
            "type": "array",
            "description": "Pick specific boards or leave empty to auto-select based on your chosen country. Cost tip: the free-API boards (RemoteOK, Arbeitnow, The Muse, Remotive, Jobicy, Adzuna, USAJobs) need no browser or proxy — a run using only these is the cheapest and can be run at 1024 MB memory.",
            "items": {
              "type": "string",
              "enum": [
                "reed",
                "totaljobs",
                "cvlibrary",
                "cwjobs",
                "indeed",
                "findajob",
                "adzuna",
                "usajobs",
                "indeed_us",
                "indeed_de",
                "indeed_fr",
                "indeed_nl",
                "indeed_au",
                "remoteok",
                "arbeitnow",
                "themuse",
                "remotive",
                "jobicy"
              ],
              "enumTitles": [
                "Reed (UK)",
                "Totaljobs (UK)",
                "CV-Library (UK)",
                "CWJobs (UK)",
                "Indeed UK",
                "GOV.UK Find a Job",
                "Adzuna (Multi-Country)",
                "USAJobs (US Gov)",
                "Indeed US",
                "Indeed Germany",
                "Indeed France",
                "Indeed Netherlands",
                "Indeed Australia",
                "RemoteOK (Global Remote)",
                "Arbeitnow (EU & Remote)",
                "The Muse (Global, free API)",
                "Remotive (Global Remote, free API)",
                "Jobicy (Global Remote, free API)"
              ]
            },
            "default": []
          },
          "deduplicate": {
            "title": "Remove Duplicates",
            "type": "boolean",
            "description": "Merge duplicate jobs that appear on multiple boards into one record citing every source. Identical listings (same board, same URL) found by more than one search term are always returned only once, even with this off.",
            "default": true
          },
          "salary_benchmark": {
            "title": "Include Salary Benchmarks",
            "type": "boolean",
            "description": "Output salary summary statistics (median, mean, p25, p75) alongside job listings",
            "default": false
          },
          "descriptionFormat": {
            "title": "Description Format",
            "enum": [
              "markdown",
              "html",
              "plaintext"
            ],
            "type": "string",
            "description": "Format of the job `description` field: Markdown (default), raw HTML, or plain text.",
            "default": "markdown"
          },
          "resolveApplyUrl": {
            "title": "Resolve Real Apply URL (slower)",
            "type": "boolean",
            "description": "Follow redirects on aggregator links to reveal the real company/ATS apply URL (Greenhouse, Lever, Workday, Ashby…) and detect the ATS more often. Off by default because it adds a network request per job — leave off for the cheapest runs.",
            "default": false
          },
          "incrementalOnly": {
            "title": "Incremental Mode (new jobs only)",
            "type": "boolean",
            "description": "For scheduled/recurring runs: remember jobs seen in previous runs of the same search and push ONLY jobs that are new since last time. The first run returns everything and starts the memory. Great for daily/weekly job alerts.",
            "default": false
          },
          "adzuna_app_id": {
            "title": "Adzuna App ID",
            "type": "string",
            "description": "Optional: Adzuna API App ID (free at https://developer.adzuna.com)"
          },
          "adzuna_app_key": {
            "title": "Adzuna App Key",
            "type": "string",
            "description": "Optional: Adzuna API App Key"
          },
          "usajobs_api_key": {
            "title": "USAJobs API Key",
            "type": "string",
            "description": "Optional: USAJobs API key (free at https://developer.usajobs.gov). Required for the USAJobs board — without it the board is skipped."
          },
          "usajobs_email": {
            "title": "USAJobs Email",
            "type": "string",
            "description": "Optional: the email address your USAJobs API key was issued to (sent as the User-Agent header on USAJobs API requests)."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}