{
  "openapi": "3.0.1",
  "info": {
    "title": "Totaljobs.com Scraper - UK Job Listings & Salaries",
    "description": "[💰 $0.25 / 1K] Extract UK job adverts from Totaljobs.com — employer, location, advertised salary, posting and expiry dates, full description, industry and GPS coordinates. Filter by keyword, location, radius, job type, salary or employer type, or paste a search URL. Export to JSON, CSV or Excel.",
    "version": "1.0",
    "x-build-id": "YoRcyx3fcHapOAdQh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~totaljobs-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-totaljobs-com-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/solidcode~totaljobs-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-totaljobs-com-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/solidcode~totaljobs-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-totaljobs-com-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": {
          "searchUrls": {
            "title": "Search URLs",
            "type": "array",
            "description": "Totaljobs.com search result URLs. Set your filters on Totaljobs.com, then paste the address bar URL here. Overrides the individual filters below when provided.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchLocation": {
            "title": "Where to search",
            "type": "string",
            "description": "UK town, city, county or region, e.g. london, manchester, inverness. Measured live: \"london\" returns 21,766 in-area jobs, \"manchester\" 4,123, \"inverness\" 314, and each one comes back verbatim in the server's own applied-criteria echo. A place the site does not recognise is NOT redirected to a wider search -- it returns an empty result set (0 jobs), so a run that collects nothing means the place name was not recognised.",
            "default": "london"
          },
          "searchKeyword": {
            "title": "Job title or keyword",
            "type": "string",
            "description": "Job title, skill or keyword, e.g. software engineer, nursing, warehouse. Leave blank to collect every job in the location. Measured live: blank returns 21,766 London jobs, \"software engineer\" returns 886 and every job on page 1 is a software engineering role.",
            "default": ""
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "",
              "permanent",
              "contract",
              "temporary",
              "part-time",
              "work-from-home"
            ],
            "type": "string",
            "description": "Only collect jobs of this type. Measured live for London: any 21,766 / permanent 14,315 / contract 2,485 / temporary 1,006 / part time 2,043 / work from home 3,260 in-area jobs.",
            "default": ""
          },
          "minSalary": {
            "title": "Minimum salary (per year)",
            "enum": [
              "",
              "10000",
              "20000",
              "30000",
              "40000",
              "50000",
              "60000",
              "70000",
              "80000",
              "90000",
              "100000"
            ],
            "type": "string",
            "description": "Only collect jobs paying at least this much a year. Totaljobs matches on the salary band the employer filed, so jobs whose advert text just says \"Competitive\" are still included when their filed band clears the bar. Measured live for London: no minimum 21,766 / £30,000 17,539 / £50,000 6,310 / £100,000 1,755 in-area jobs.",
            "default": ""
          },
          "employerType": {
            "title": "Who is advertising",
            "enum": [
              "0",
              "2",
              "1"
            ],
            "type": "string",
            "description": "Collect only jobs posted directly by the employer, or only jobs posted by recruitment agencies. Measured live for London: every advertiser 21,766 / direct employers 12,980 / agencies 5,537 in-area jobs.",
            "default": "0"
          },
          "radius": {
            "title": "Search radius",
            "enum": [
              "0",
              "5",
              "10",
              "20",
              "30"
            ],
            "type": "string",
            "description": "How far around the location to look. Measured live for Inverness: 10 miles returns 314 in-area jobs and 30 miles returns 400, and the two runs return completely different jobs once you are past the first few pages (0 of 25 shared on page 13, and only the 30-mile run brings back the surrounding Scottish towns). Only these five distances work -- any other number is rejected by the site.",
            "default": "10"
          },
          "sortBy": {
            "title": "Sort jobs by",
            "enum": [
              "2",
              "1",
              "5"
            ],
            "type": "string",
            "description": "The order jobs are collected in. This is what decides which jobs you get when you set a Max results limit, so \"Newest first\" is the default. Measured live: all three change the jobs on page 1, and \"Newest first\" returns only jobs posted the same day.",
            "default": "2"
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum jobs per search URL (0 = collect everything each search returns). Totaljobs.com pages through at most 36,298 jobs per search, so use several narrower searches to collect more.",
            "default": 100
          },
          "enrichDetails": {
            "title": "Include full details",
            "type": "boolean",
            "description": "Add 15 extra fields per job. Adds one request per job and is billed at the higher rate.",
            "default": false
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many requests to run in parallel. Lower this if you see failures.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings for the run.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "GB"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}