{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Jobs Scraper: All Boards, Apply Links & Salary",
    "description": "Jobs from every board Google aggregates (LinkedIn, Indeed, Glassdoor, ZipRecruiter, career sites) in one search: every apply link as a real URL, full description, salary per year, posted date. Past Google's 10-job limit. Only-new job alerts.",
    "version": "0.1",
    "x-build-id": "uWBW0Adlq3Pr4phVQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/s_actors~google-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-s_actors-google-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/s_actors~google-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-s_actors-google-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/s_actors~google-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-s_actors-google-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": {
          "queries": {
            "title": "🔎 Job searches",
            "type": "array",
            "description": "What a candidate would type into Google Jobs, one per line: \"software engineer\", \"registered nurse\", \"warehouse associate night shift\", \"data analyst jobs in austin tx\". You can also paste a Google Jobs URL (https://www.google.com/search?q=...&udm=8): its query, country and language are used.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "📍 Location",
            "type": "string",
            "description": "City, state or country added to every search: \"Austin, TX\", \"London\", \"Remote\". Google Jobs then shows jobs there (and remote jobs open to it). Empty = the whole country. Skipped for a search that already names the place."
          },
          "maxJobsPerQuery": {
            "title": "💯 Max jobs per search",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Google Jobs shows 10 jobs per search and stops. The Actor goes further with Google's own filters (date posted, job type, remote, no degree, seniority) and keeps only jobs it has not seen yet: typically 100-150 unique jobs for a broad search, fewer for narrow ones; for more, add searches (titles, nearby cities). You pay only for unique jobs.",
            "default": 50
          },
          "datePosted": {
            "title": "🕐 Date posted",
            "enum": [
              "anytime",
              "today",
              "3days",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Google Jobs' own \"Date posted\" filter. For daily alerts use \"Since yesterday\" with \"Only new jobs\".",
            "default": "anytime"
          },
          "employmentType": {
            "title": "💼 Job type",
            "enum": [
              "any",
              "fulltime",
              "parttime",
              "contract",
              "internship"
            ],
            "type": "string",
            "description": "Google Jobs' own \"Job type\" filter.",
            "default": "any"
          },
          "remoteOnly": {
            "title": "🏠 Remote only",
            "type": "boolean",
            "description": "Google Jobs' own \"Remote\" / \"Work from home\" filter.",
            "default": false
          },
          "onlyWithSalary": {
            "title": "💵 Only jobs with a salary",
            "type": "boolean",
            "description": "Keep only jobs where Google shows a pay range. Jobs without one are skipped and not charged.",
            "default": false
          },
          "country": {
            "title": "🌍 Country",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "nz",
              "ie",
              "in",
              "sg",
              "za",
              "ph",
              "de",
              "at",
              "ch",
              "fr",
              "be",
              "nl",
              "es",
              "pt",
              "it",
              "se",
              "dk",
              "no",
              "fi",
              "pl",
              "cz",
              "br",
              "mx",
              "ar",
              "jp",
              "kr",
              "tr",
              "ae"
            ],
            "type": "string",
            "description": "Google of this country. In EU countries Google shows only a short preview of the description (descriptionIsPreview = true); every apply link is still complete.",
            "default": "us"
          },
          "language": {
            "title": "🗣️ Language",
            "type": "string",
            "description": "Google interface language code (hl): en, de, fr, es... Empty = the country's main language."
          },
          "onlyNewJobs": {
            "title": "🔔 Only new jobs (alerts)",
            "type": "boolean",
            "description": "Return only jobs not returned by earlier runs with the same alert name. Jobs already seen are skipped and not charged. Combine with Date posted = \"Since yesterday\".",
            "default": false
          },
          "monitorName": {
            "title": "📁 Alert name",
            "type": "string",
            "description": "Seen jobs are remembered per alert name: use one name per alert (\"nurses-chicago\", \"client-a\") so they never mix.",
            "default": "default"
          },
          "maxConcurrency": {
            "title": "⚡ Parallel searches",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Searches run at once (each fetches up to 3 Google pages at a time).",
            "default": 5
          },
          "debugLog": {
            "title": "🐞 Debug log",
            "type": "boolean",
            "description": "Log every retry and save the HTML of every Google page to the run key-value store.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}