{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Jobs Scraper — Apply Links, Salary & Filters",
    "description": "Google Jobs postings with full description, parsed salary, schedule, job highlights and every apply link as a direct URL. Drop-in compatible with the leading Google Jobs actor. Date filter Google actually honours, multi-query fan-out, empty results reported not hidden.",
    "version": "1.0",
    "x-build-id": "6fCRFcyPpWnw42U8G"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/diopside~google-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-diopside-google-jobs",
        "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/diopside~google-jobs/runs": {
      "post": {
        "operationId": "runs-sync-diopside-google-jobs",
        "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/diopside~google-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-diopside-google-jobs",
        "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": {
          "query": {
            "title": "Job search query",
            "type": "string",
            "description": "What you would type into Google Jobs, e.g. \"software engineer\". Same field name as the leading Google Jobs actor, so existing inputs work unchanged."
          },
          "queries": {
            "title": "Extra job search queries",
            "uniqueItems": true,
            "type": "array",
            "description": "Run several queries in one run. Google serves ten jobs per query, so this (with Locations) is how you build volume. Combined with `query`; results are de-duplicated.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, state or country, e.g. \"New York, NY\". Folded into the search the way a person types it — Google Jobs ignores the `uule` location parameter."
          },
          "locations": {
            "title": "Extra locations",
            "uniqueItems": true,
            "type": "array",
            "description": "Every query is run against every location. Combined with `location`; results are de-duplicated.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country code",
            "type": "string",
            "description": "Two-letter country for the search (Google's `gl`). Google Jobs returns nothing for some countries — it is not available everywhere."
          },
          "language": {
            "title": "Language code",
            "type": "string",
            "description": "Interface language (Google's `hl`). Leave empty to let Google pick the language that matches the country — forcing `en` in a non-English market can return zero jobs."
          },
          "google_domain": {
            "title": "Google domain",
            "type": "string",
            "description": "Google domain to search, e.g. google.com, google.co.uk, google.de."
          },
          "posted_within": {
            "title": "Posted within",
            "enum": [
              "any",
              "hour",
              "today",
              "3days",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Google's date-posted filter, applied the way Google's own UI applies it (tbs=qdr). Verified: a \"today\" search returns jobs all under 24 hours old. The run warns if Google ever stops honouring it, instead of quietly handing you stale results.",
            "default": "any"
          },
          "employment_type": {
            "title": "Employment type",
            "enum": [
              "any",
              "FULLTIME",
              "PARTTIME",
              "CONTRACTOR",
              "INTERN"
            ],
            "type": "string",
            "description": "Keep only jobs with this schedule. Google's jobs vertical no longer offers an employment-type filter, so this is applied to the parsed schedule of each job and the run reports how many were dropped. Jobs where Google shows no schedule are dropped when this is set.",
            "default": "any"
          },
          "remote_only": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Remote jobs only. Google's own \"Remote\" chip is a link that adds \"remote\" to the query, so that is what this does — the results come back located \"Anywhere\".",
            "default": false
          },
          "include_lrad": {
            "title": "Use a location radius",
            "type": "boolean",
            "description": "Search within a radius of the location instead of the location itself.",
            "default": false
          },
          "lrad_value": {
            "title": "Location radius",
            "type": "string",
            "description": "Radius used when \"Use a location radius\" is on (miles in the US, kilometres elsewhere). Passed to Google as `lrad`; Google's current jobs UI exposes no radius control, so treat it as best-effort.",
            "default": "25"
          },
          "num_results": {
            "title": "Maximum jobs",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many job records. Google exposes ten jobs per query/filter combination, so a run can return at most 10 × queries × locations."
          },
          "max_delay": {
            "title": "Delay between searches (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Pause between searches. 1 second is plenty; raise it for very large fan-outs.",
            "default": 1
          },
          "max_pagination": {
            "title": "Maximum pages (compatibility)",
            "minimum": 0,
            "type": "integer",
            "description": "Accepted so inputs written for other Google Jobs actors keep working. Google's jobs vertical serves one page per search — `start=10`, `num=100` and the async \"more jobs\" endpoint all return nothing — so this value is logged and ignored. Use `queries`/`locations` for volume.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave as is. Google's /search requires JavaScript for every ordinary client and IP tier; Apify's Google SERP proxy group is the only route that returns the rendered jobs page.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "GOOGLE_SERP"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}