{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Jobs Scraper - Salary, Apply Links, Descriptions",
    "description": "Scrape Google Jobs for any keyword and city, or paste a Google Jobs link: salary as numbers and yearly pay, remote/hybrid/on-site, contract type, city and country, benefits, posted date, description and every apply link. Only-new-jobs mode. $2.50 per 1,000 jobs on paid plans.",
    "version": "0.1",
    "x-build-id": "YEnwnDopY5CygJMM5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/om_kh~google-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-om_kh-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/om_kh~google-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-om_kh-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/om_kh~google-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-om_kh-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": "Job titles or keywords: 'data analyst', 'registered nurse', 'python developer remote' (up to 50 with locations).",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Or paste Google Jobs links",
            "type": "array",
            "description": "Paste Google or Google Jobs search links (the address bar after searching 'nurse jobs Chicago' on Google). Their search words are read and run like the queries above.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (optional)",
            "type": "array",
            "description": "Cities, states or countries: 'Chicago', 'Texas', 'London'. Each search runs in each location.",
            "items": {
              "type": "string"
            }
          },
          "radiusKm": {
            "title": "Radius around each location (km, optional)",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "Asks Google to search within this distance of each location, 1 to 300 km. Google treats it as a hint, not a strict border. Leave empty for Google's own default area."
          },
          "strictLocation": {
            "title": "Only jobs in the searched location",
            "type": "boolean",
            "description": "Google sometimes adds jobs from other places. On by default: only jobs whose location matches the city or the state/region you typed are kept (Austin, TX keeps all of Texas). Remote jobs are kept. Turn off to get everything Google shows.",
            "default": true
          },
          "maxJobsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 140,
            "type": "integer",
            "description": "1 to 140. Google shows 10 jobs per page; the scraper runs filter variants in parallel to go further.",
            "default": 50
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "today",
              "3days",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only recent postings.",
            "default": "any"
          },
          "scheduleType": {
            "title": "Job type",
            "enum": [
              "any",
              "Full-time",
              "Part-time",
              "Contractor",
              "Internship",
              "Temporary"
            ],
            "type": "string",
            "description": "Keep only this job type.",
            "default": "any"
          },
          "onlyWithSalary": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "Keep only postings that show a salary.",
            "default": false
          },
          "workArrangements": {
            "title": "On-site, hybrid or remote",
            "type": "array",
            "description": "Keep only these work arrangements. Hybrid jobs also get the office days per week when the posting says it.",
            "items": {
              "type": "string",
              "enum": [
                "REMOTE",
                "HYBRID",
                "ON_SITE",
                "UNKNOWN"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site",
                "Not stated"
              ]
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Keep only jobs in these countries: names or 2-letter codes (United States, US, Germany, DE...). Add 'unknown' to keep jobs with no country written.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Exclude title words",
            "type": "array",
            "description": "Drop jobs whose TITLE has any of these words (e.g. senior, intern, manager), even if the description mentions them.",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Drop jobs from these companies (part of the name is enough).",
            "items": {
              "type": "string"
            }
          },
          "excludeAgencies": {
            "title": "No staffing agencies",
            "type": "boolean",
            "description": "Drop jobs posted by staffing or recruitment agencies for a client.",
            "default": false
          },
          "onlyNewJobs": {
            "title": "Only new jobs since my last run",
            "type": "boolean",
            "description": "Deliver only the jobs this same search has not delivered before (remembered in your own Apify account). The first run delivers everything. Jobs already delivered are never charged again. Ideal for daily or hourly schedules.",
            "default": false
          },
          "memoryKey": {
            "title": "Memory name (optional)",
            "type": "string",
            "description": "Give the 'only new jobs' memory a name to share it between tasks or keep it when you change the search. Empty = one memory per search."
          },
          "includeDescription": {
            "title": "Include full description",
            "type": "boolean",
            "description": "Turn off for lighter rows.",
            "default": true
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code of the Google Jobs market: us, gb, ca, au, in, de, fr...",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Interface language, e.g. en.",
            "default": "en"
          },
          "googleDomain": {
            "title": "Google domain",
            "type": "string",
            "description": "Which Google site to search: google.com, google.co.uk, google.ca, google.de, google.fr, google.com.au... Use it with the matching country.",
            "default": "google.com"
          },
          "maxTotalChargeUsd": {
            "title": "Max total charge (USD)",
            "type": "number",
            "description": "Optional hard cost cap for this run."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}