{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Jobs Scraper - Salaries & Apply Links",
    "description": "Scrape Google Jobs in 23 countries: title, company, normalized salary, direct apply links, posted date, job type, remote flag, description. Filter by date, type, remote, company and job board. Daily job alerts with only-new mode. Pay per unique job.",
    "version": "0.1",
    "x-build-id": "Ikg6U7t0cUg0yBwfv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~google-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-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/scrapewise~google-jobs/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-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/scrapewise~google-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-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": {
          "queries": {
            "title": "Search terms",
            "type": "array",
            "description": "Job titles or keywords, one per line, for example software engineer, data analyst or marketing manager. Use the language of the country you search (Pflegekraft in Germany, comptable in France). Each term is searched separately, results are merged without duplicates, and every row says which term found it ('searchQuery'). Put 'remote' in 'Remote / work from home only' instead of in the term. Also accepts 'query', 'searchTerm', 'searchTerms' and 'includeKeyword'.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location (optional)",
            "type": "string",
            "description": "City, state or region to search in, for example Austin, TX or London or Toronto, ON. Leave empty to search the whole country: with 'Get more than 10 jobs per search' on, the Actor then also searches the country's largest cities to collect more jobs. Also accepts 'locationName'."
          },
          "locations": {
            "title": "More locations (optional)",
            "type": "array",
            "description": "Several locations, one per line, for example Boston, MA and Chicago, IL. Every search term is run in each location, and 'searchLocation' on each row says which one. Use it for salary comparisons across cities. Also accepts 'targetLocations'.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code (Google's gl), for example us, gb, ca, in, de, fr, jp or br. Empty means us. It sets the Google domain, the default language and the currency used to read salaries. Countries where Google shows no jobs tab (for example au, es, mx, nl) return one free JOBS_NOT_AVAILABLE row. Also accepts 'countryCode' and 'countryName' (usa, uk, germany...)."
          },
          "language": {
            "title": "Language (optional)",
            "type": "string",
            "description": "Interface language (Google's hl), for example en, de, fr or ja. Empty (recommended) uses the country's main language, which returns the most jobs outside English-speaking countries. It also sets the language of 'postedAgo' and of the remote phrase added by 'Remote only'. Also accepts 'languageCode'."
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "all",
              "today",
              "3days",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only jobs posted within this window: any time (default), last 24 hours, last 3 days, last week or last month. The posting date of every job is checked, and jobs whose date Google does not show are left out when a window is set (about half of listings have no date), so short windows return few jobs. Pair 3 days with 'Only new jobs' for a daily alert. Also accepts 'posted_within' and 'hoursOld'.",
            "default": "all"
          },
          "jobTypes": {
            "title": "Job type",
            "type": "array",
            "description": "Only these employment types: full-time, part-time, contractor or internship. Empty keeps all types. The type is added to the search and checked on every job; jobs with another type are dropped and not charged. Also accepts 'jobType' (array or comma-separated text).",
            "items": {
              "type": "string",
              "enum": [
                "FULLTIME",
                "PARTTIME",
                "CONTRACTOR",
                "INTERN"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contractor",
                "Internship"
              ]
            },
            "default": []
          },
          "remoteOnly": {
            "title": "Remote / work from home only",
            "type": "boolean",
            "description": "Adds 'work from home' to the search in the search language and keeps only jobs Google marks as remote ('isRemote' true). Jobs without the marker are dropped and not charged. Writing 'remote' in the search term instead returns almost nothing on Google Jobs. Default off. Also accepts 'workFromHome' and 'isRemote'.",
            "default": false
          },
          "companyNames": {
            "title": "Only these companies (optional)",
            "type": "array",
            "description": "Keep only jobs whose company name contains one of these, case-insensitive, one per line, for example Google or Stripe. Jobs from other companies are skipped and not charged. Useful to watch the openings of a list of target accounts.",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude companies (optional)",
            "type": "array",
            "description": "Skip jobs whose company name contains one of these, case-insensitive, one per line, for example staffing agencies you never apply through. Skipped jobs are not charged.",
            "items": {
              "type": "string"
            }
          },
          "excludeSources": {
            "title": "Exclude job boards (optional)",
            "type": "array",
            "description": "Skip jobs whose source ('via' field, the site Google found the job on) contains one of these, one per line, for example LinkedIn, ZipRecruiter or Indeed. Useful for job boards that only want postings from career sites. Skipped jobs are not charged.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of unique jobs in this run, across all search terms and locations, up to 100,000. Default 30. You pay per job delivered (US$ 3.00 per 1,000 on the Free plan), so this also caps the cost: 30 jobs cost US$ 0.09. Also accepts 'num_results' and 'maxResults'.",
            "default": 30
          },
          "maxItemsPerQuery": {
            "title": "Maximum jobs per search term (optional)",
            "minimum": 1,
            "type": "integer",
            "description": "Cap for each search term and location, so one broad term does not use the whole 'Maximum jobs'. Empty means the same as 'Maximum jobs'. With 5 terms and 'Maximum jobs' at 100, set 20 to get about 20 jobs per term."
          },
          "onlyNewJobs": {
            "title": "Only new jobs since the last run",
            "type": "boolean",
            "description": "For job alerts on a schedule. Remembers the jobs already delivered for each search (term, location, country, language and filters) in the Key-Value Store 'google-jobs-only-new' in your account and skips them on later runs: they are not delivered, not charged and do not count toward the limits. A run with nothing new ends green and costs nothing for results. Delete the store to start over. Default off.",
            "default": false
          },
          "expandSearch": {
            "title": "Get more than 10 jobs per search",
            "type": "boolean",
            "description": "On (default): Google shows at most 10 jobs per search, so the Actor repeats the search across the country's major cities (when no location is set), posting dates and job types, and removes duplicates by job id. It stops by itself when new pages bring fewer than 5 new jobs on average. Off: only Google's first 10 jobs per term and location, faster.",
            "default": true
          },
          "maxPagesPerQuery": {
            "title": "Maximum Google pages per search term",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Upper limit of Google result pages (about 10 jobs each) per term and location, up to 200. Default 25. It limits run time, not cost: you pay per job, not per page. Raise it for broad terms in big countries when you want hundreds of jobs. Also accepts 'max_pagination' and 'pagesToFetch'.",
            "default": 25
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}