{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Job Scraper",
    "description": "Copying listings from Google Jobs by hand is slow, and pay is buried in text. Scrape Google Jobs in any country: title, company, location, salary as numbers, posting date, apply links and full description, with remote, date and pay filters. No duplicates.",
    "version": "1.0",
    "x-build-id": "xmnpcf5s9hq1dcoG9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawl_craft~google-job-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawl_craft-google-job-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/crawl_craft~google-job-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawl_craft-google-job-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/crawl_craft~google-job-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawl_craft-google-job-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",
        "required": [
          "urls"
        ],
        "properties": {
          "urls": {
            "title": "🔗 Google Jobs links or search phrases",
            "minItems": 1,
            "type": "array",
            "description": "One entry per line. Accepted: a Google Jobs search link copied from Google (starting with https://www.google.com/search?q=...) or a plain phrase such as 'data analyst remote', which is searched like a query. Bulk input is supported and duplicate links are skipped. Free plan: up to 10 jobs per run, with no monthly limit; paid plans have no limit.",
            "items": {
              "type": "string"
            }
          },
          "queries": {
            "title": "💼 Job titles or keywords",
            "type": "array",
            "description": "Optional extra searches, one per line (for example 'nurse' or 'react developer'). Every phrase is searched once per location and per job type below.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "📍 Locations",
            "type": "array",
            "description": "Optional cities or regions, one per line (for example 'London' or 'Austin, TX'). Each job title or keyword above is searched in every location. Leave empty to search the whole country.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerSearch": {
            "title": "📊 Max jobs per search",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop each search after this many jobs (0 = no cap). Free plan: up to 10 jobs per run in total, with no monthly limit; paid plans have no limit.",
            "default": 10
          },
          "country": {
            "title": "🌎 Country",
            "enum": [
              "dz",
              "as",
              "ai",
              "ag",
              "ar",
              "at",
              "bs",
              "bh",
              "be",
              "bz",
              "bo",
              "br",
              "ca",
              "co",
              "cr",
              "cu",
              "dk",
              "dm",
              "do",
              "ec",
              "eg",
              "sv",
              "gm",
              "de",
              "gh",
              "gr",
              "gt",
              "gy",
              "hn",
              "hk",
              "in",
              "id",
              "iq",
              "it",
              "ci",
              "jm",
              "jp",
              "jo",
              "kw",
              "ly",
              "my",
              "mu",
              "mx",
              "ma",
              "na",
              "nl",
              "ni",
              "ng",
              "om",
              "pk",
              "ps",
              "pa",
              "py",
              "pe",
              "ph",
              "pt",
              "pr",
              "qa",
              "ru",
              "rw",
              "vc",
              "sa",
              "sl",
              "sg",
              "za",
              "es",
              "lk",
              "sr",
              "ch",
              "tw",
              "th",
              "tt",
              "tn",
              "vi",
              "ug",
              "ae",
              "uk",
              "us",
              "uy",
              "ve",
              "vn",
              "zm",
              "zw"
            ],
            "type": "string",
            "description": "Country the search targets. It drives the regional results, and when no location is given the country name is used as the location. Leave empty to derive it from the Google domain (for example google.de gives de). Only countries where Google Jobs serves listings are listed."
          },
          "googleDomain": {
            "title": "🧭 Google domain",
            "enum": [
              "google.com",
              "google.co.uk",
              "google.ca",
              "google.de",
              "google.fr",
              "google.com.au",
              "google.co.jp",
              "google.ad",
              "google.ae",
              "google.al",
              "google.am",
              "google.as",
              "google.at",
              "google.az",
              "google.ba",
              "google.be",
              "google.bf",
              "google.bg",
              "google.bi",
              "google.bj",
              "google.bs",
              "google.by",
              "google.cd",
              "google.cf",
              "google.cg",
              "google.ch",
              "google.ci",
              "google.cl",
              "google.cm",
              "google.co.bw",
              "google.co.ck",
              "google.co.cr",
              "google.co.id",
              "google.co.il",
              "google.co.in",
              "google.co.ke",
              "google.co.kr",
              "google.co.ls",
              "google.co.ma",
              "google.co.mz",
              "google.co.nz",
              "google.co.th",
              "google.co.tz",
              "google.co.ug",
              "google.co.uz",
              "google.co.ve",
              "google.co.vi",
              "google.co.za",
              "google.co.zm",
              "google.co.zw",
              "google.com.af",
              "google.com.ag",
              "google.com.ai",
              "google.com.ar",
              "google.com.bd",
              "google.com.bh",
              "google.com.bn",
              "google.com.bo",
              "google.com.br",
              "google.com.bz",
              "google.com.co",
              "google.com.cu",
              "google.com.cy",
              "google.com.do",
              "google.com.ec",
              "google.com.eg",
              "google.com.et",
              "google.com.fj",
              "google.com.gh",
              "google.com.gi",
              "google.com.gt",
              "google.com.hk",
              "google.com.jm",
              "google.com.kh",
              "google.com.kw",
              "google.com.lb",
              "google.com.ly",
              "google.com.mm",
              "google.com.mt",
              "google.com.mx",
              "google.com.my",
              "google.com.na",
              "google.com.ng",
              "google.com.ni",
              "google.com.om",
              "google.com.pa",
              "google.com.pe",
              "google.com.pg",
              "google.com.ph",
              "google.com.pk",
              "google.com.pr",
              "google.com.py",
              "google.com.qa",
              "google.com.sa",
              "google.com.sb",
              "google.com.sg",
              "google.com.sl",
              "google.com.sv",
              "google.com.tj",
              "google.com.tr",
              "google.com.tw",
              "google.com.ua",
              "google.com.uy",
              "google.com.vc",
              "google.com.vn",
              "google.cv",
              "google.cz",
              "google.dj",
              "google.dk",
              "google.dm",
              "google.dz",
              "google.ee",
              "google.es",
              "google.fi",
              "google.fm",
              "google.ga",
              "google.ge",
              "google.gl",
              "google.gm",
              "google.gp",
              "google.gr",
              "google.gy",
              "google.hn",
              "google.hr",
              "google.ht",
              "google.hu",
              "google.ie",
              "google.iq",
              "google.is",
              "google.it",
              "google.je",
              "google.jo",
              "google.kg",
              "google.ki",
              "google.kz",
              "google.la",
              "google.li",
              "google.lk",
              "google.lt",
              "google.lu",
              "google.lv",
              "google.md",
              "google.mg",
              "google.mk",
              "google.ml",
              "google.mn",
              "google.ms",
              "google.mu",
              "google.mv",
              "google.mw",
              "google.ne",
              "google.nl",
              "google.no",
              "google.nr",
              "google.nu",
              "google.pl",
              "google.ps",
              "google.pt",
              "google.ro",
              "google.rs",
              "google.ru",
              "google.rw",
              "google.sc",
              "google.se",
              "google.sh",
              "google.si",
              "google.sk",
              "google.sm",
              "google.sn",
              "google.so",
              "google.sr",
              "google.td",
              "google.tg",
              "google.tk",
              "google.tl",
              "google.tm",
              "google.tn",
              "google.to",
              "google.tt",
              "google.vg",
              "google.vu",
              "google.ws"
            ],
            "type": "string",
            "description": "Google site to search. It also sets the default country when the country is empty (for example google.de gives de).",
            "default": "google.com"
          },
          "language": {
            "title": "💬 Language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ru",
              "ar",
              "bg",
              "bn",
              "ca",
              "cs",
              "da",
              "nl",
              "et",
              "fi",
              "el",
              "gu",
              "he",
              "hi",
              "hr",
              "hu",
              "id",
              "is",
              "kn",
              "lt",
              "lv",
              "mk",
              "mg",
              "ms",
              "ml",
              "mt",
              "mv",
              "mi",
              "mr",
              "mfe",
              "mo",
              "mn",
              "sr-me",
              "my",
              "ne",
              "pcm",
              "nso",
              "no",
              "nn",
              "oc",
              "or",
              "om",
              "ps",
              "fa",
              "xx-pirate",
              "pl",
              "pt-br",
              "pt-pt",
              "pa",
              "qu",
              "ro",
              "rm",
              "nyn",
              "gd",
              "sr",
              "sh",
              "st",
              "tn",
              "crs",
              "sn",
              "sd",
              "si",
              "sk",
              "sl",
              "so",
              "es-419",
              "su",
              "sw",
              "sv",
              "tg",
              "ta",
              "tt",
              "te",
              "th",
              "ti",
              "to",
              "lua",
              "tum",
              "tr",
              "tk",
              "tw",
              "ug",
              "uk",
              "ur",
              "uz",
              "vu",
              "vi",
              "cy",
              "wo",
              "xh",
              "yi",
              "yo",
              "zu"
            ],
            "type": "string",
            "description": "Optional interface language. Usually best left empty: Google then picks the language that matches the country, which many non-English markets need. Forcing English (en) can return no jobs in countries such as the Netherlands, Germany, Spain, Brazil or Japan."
          },
          "radiusKm": {
            "title": "📏 Search radius (km)",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Optional distance around each location in kilometres. Google treats it as a hint, so it may change little."
          },
          "datePosted": {
            "title": "📅 Date posted",
            "enum": [
              "any",
              "today",
              "3days",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only jobs posted within this window.",
            "default": "any"
          },
          "employmentTypes": {
            "title": "📋 Job types",
            "type": "array",
            "description": "Pick one or more. Every search is repeated once per selected type. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "FULL_TIME",
                "PART_TIME",
                "CONTRACTOR",
                "INTERN"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contractor",
                "Internship"
              ]
            }
          },
          "remoteOnly": {
            "title": "🏠 Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs that can be done remotely.",
            "default": false
          },
          "noDegreeOnly": {
            "title": "🎓 No degree required",
            "type": "boolean",
            "description": "Keep only jobs that say no degree is needed.",
            "default": false
          },
          "strictFilters": {
            "title": "🧪 Double-check the filters",
            "type": "boolean",
            "description": "Drop a job when its own data contradicts a filter you chose, for example a posting that is clearly older than the date window. Jobs with unknown values are kept.",
            "default": true
          },
          "salaryMinAnnual": {
            "title": "💵 Minimum yearly salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose top salary, converted to a year, reaches this amount. Jobs without a salary are dropped when this is set."
          },
          "requireSalary": {
            "title": "💲 Salary must be listed",
            "type": "boolean",
            "description": "Keep only jobs that show a salary (from Google or found in the description).",
            "default": false
          },
          "directApplyOnly": {
            "title": "📨 Direct apply link only",
            "type": "boolean",
            "description": "Keep only jobs that have an apply link on the employer's own site or hiring system.",
            "default": false
          },
          "maxPostedHoursAgo": {
            "title": "⏰ Posted within (hours)",
            "minimum": 0,
            "type": "number",
            "description": "Finer than the date window, for example 12 keeps only jobs posted in the last 12 hours."
          },
          "titleMustInclude": {
            "title": "🟢 Title must include",
            "type": "array",
            "description": "Keep a job only if its title contains at least one of these words (not case sensitive).",
            "items": {
              "type": "string"
            }
          },
          "titleMustExclude": {
            "title": "🚫 Title must not include",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, for example senior or staff.",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "🏭 Skip companies",
            "type": "array",
            "description": "Drop jobs from companies whose name contains any of these words, for example staffing agencies.",
            "items": {
              "type": "string"
            }
          },
          "excludeVia": {
            "title": "🙈 Skip job boards",
            "type": "array",
            "description": "Drop jobs listed through these sources, for example LinkedIn.",
            "items": {
              "type": "string"
            }
          },
          "seniorityLevels": {
            "title": "📈 Seniority levels",
            "type": "array",
            "description": "Keep only these levels, guessed from the job title. Leave empty for all levels.",
            "items": {
              "type": "string",
              "enum": [
                "INTERN",
                "ENTRY",
                "MID",
                "SENIOR",
                "LEAD",
                "PRINCIPAL",
                "EXECUTIVE"
              ],
              "enumTitles": [
                "Intern",
                "Entry level",
                "Mid level",
                "Senior",
                "Lead / manager",
                "Principal / staff",
                "Executive"
              ]
            }
          },
          "maxResultsTotal": {
            "title": "🔢 Max jobs in total",
            "minimum": 0,
            "type": "integer",
            "description": "Overall cap for the whole run, across all searches (0 = no cap). Free plan: up to 10 jobs per run, with no monthly limit; paid plans have no limit.",
            "default": 0
          },
          "maxPagesPerSearch": {
            "title": "📑 Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each search after this many result pages (0 = until Google has no more).",
            "default": 0
          },
          "maxScanned": {
            "title": "🔬 Search depth",
            "minimum": 0,
            "type": "integer",
            "description": "Safety limit: a search stops after this many jobs have been checked without finding enough matches for your filters (0 = no limit).",
            "default": 3000
          },
          "dedupeAcrossSearches": {
            "title": "🧩 Remove duplicate jobs",
            "type": "boolean",
            "description": "Return each Google job only once even when several searches find it.",
            "default": true
          },
          "fuzzyDedupe": {
            "title": "👯 Merge look-alike postings",
            "type": "boolean",
            "description": "Also treat the same title, company and city as one job when it is listed under different IDs.",
            "default": true
          },
          "skipSeenJobs": {
            "title": "🆕 Only new jobs",
            "type": "boolean",
            "description": "Skip jobs this actor already returned in an earlier run of your account. Useful for scheduled runs.",
            "default": false
          },
          "includeDescription": {
            "title": "📝 Include full description",
            "type": "boolean",
            "description": "Add the full job description text to every row.",
            "default": true
          },
          "includeHighlights": {
            "title": "✨ Include job highlights",
            "type": "boolean",
            "description": "Add the qualifications, responsibilities and benefits lists.",
            "default": true
          },
          "includeApplyOptions": {
            "title": "📬 Include apply options",
            "type": "boolean",
            "description": "Add every place the job can be applied for, with link, site and type.",
            "default": true
          },
          "includeRawExtensions": {
            "title": "🔖 Include job tags",
            "type": "boolean",
            "description": "Add the short tags Google shows next to a job (posted date, schedule, benefits) in raw and sorted form.",
            "default": true
          },
          "concurrency": {
            "title": "🚀 Parallel searches",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "How many searches run at the same time (1 to 6).",
            "default": 2
          },
          "requestDelay": {
            "title": "⏳ Pace",
            "minimum": 0,
            "maximum": 30,
            "type": "number",
            "description": "Seconds to wait between steps of each search.",
            "default": 1
          },
          "maxRetries": {
            "title": "🔁 Retries",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many attempts are made before a search gives up (1 to 10).",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy",
            "type": "object",
            "description": "Optional. Leave the default for automatic connection handling, or choose your own proxy settings.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}