{
  "openapi": "3.0.1",
  "info": {
    "title": "🚀 Google Jobs Scraper",
    "description": null,
    "version": "0.1",
    "x-build-id": "vhkBRgokzoY5kB4oI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~google-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-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/scraper-engine~google-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-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/scraper-engine~google-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-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": {
          "startUrls": {
            "title": "🌐 Google Jobs URLs (Bulk supported)",
            "type": "array",
            "description": "Paste one or more Google Jobs search URLs. You can mix multiple URLs to scrape several queries / locations in a single run. Leave empty if you prefer to build the query from the keyword + location fields below.",
            "items": {
              "type": "string"
            }
          },
          "includeKeyword": {
            "title": "🔍 Include keywords",
            "type": "string",
            "description": "Comma-separated keywords used to build a Google Jobs query (e.g. \"software engineer, python\"). Also used to filter results client-side. Ignored when 'Google Jobs URLs' is provided."
          },
          "locationName": {
            "title": "📍 Location",
            "type": "string",
            "description": "City, region or country name to focus the search on (e.g. \"New York, NY\", \"London\", \"India\")."
          },
          "countryName": {
            "title": "🌎 Country",
            "enum": [
              "United States",
              "United Kingdom",
              "Canada",
              "Australia",
              "New Zealand",
              "Ireland",
              "Germany",
              "France",
              "Spain",
              "Italy",
              "Portugal",
              "Netherlands",
              "Belgium",
              "Luxembourg",
              "Switzerland",
              "Austria",
              "Sweden",
              "Norway",
              "Denmark",
              "Finland",
              "Iceland",
              "Poland",
              "Czech Republic",
              "Slovakia",
              "Hungary",
              "Romania",
              "Bulgaria",
              "Greece",
              "Croatia",
              "Slovenia",
              "Serbia",
              "Ukraine",
              "Russia",
              "Turkey",
              "India",
              "Pakistan",
              "Bangladesh",
              "Sri Lanka",
              "Nepal",
              "China",
              "Hong Kong",
              "Taiwan",
              "Japan",
              "South Korea",
              "Singapore",
              "Malaysia",
              "Indonesia",
              "Thailand",
              "Vietnam",
              "Philippines",
              "United Arab Emirates",
              "Saudi Arabia",
              "Qatar",
              "Kuwait",
              "Bahrain",
              "Oman",
              "Israel",
              "Jordan",
              "Lebanon",
              "Egypt",
              "Iraq",
              "Iran",
              "South Africa",
              "Nigeria",
              "Kenya",
              "Ghana",
              "Morocco",
              "Tunisia",
              "Algeria",
              "Ethiopia",
              "Brazil",
              "Mexico",
              "Argentina",
              "Chile",
              "Colombia",
              "Peru",
              "Venezuela",
              "Uruguay",
              "Costa Rica",
              "Panama",
              "Dominican Republic",
              "Ecuador",
              "Kazakhstan",
              "Uzbekistan",
              "Azerbaijan",
              "Georgia",
              "Armenia"
            ],
            "type": "string",
            "description": "Country used to set Google's geo (`gl`) parameter. Affects which regional results Google returns.",
            "default": "United States"
          },
          "companyName": {
            "title": "🏢 Filter by company",
            "type": "string",
            "description": "Optional. Only keep jobs whose company name contains this string (case-insensitive)."
          },
          "jobType": {
            "title": "💼 Job type",
            "enum": [
              "",
              "FULLTIME",
              "PARTTIME",
              "CONTRACTOR",
              "INTERN"
            ],
            "type": "string",
            "description": "Filter results by employment type.",
            "default": ""
          },
          "datePosted": {
            "title": "📅 Date posted",
            "enum": [
              "all",
              "today",
              "3days",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Filter results by how recently the job was posted.",
            "default": "all"
          },
          "pagesToFetch": {
            "title": "📄 Pages to fetch (per query)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Optional. How many pages of results to walk per URL/query (each page returns ~10 jobs). Leave empty to auto-derive from Max results: ceil(maxItems / 10). When both are set, this value wins."
          },
          "maxItems": {
            "title": "🎁 Maximum results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on total job rows pushed to the dataset across all URLs/queries. Note: Google's `/async/callback:550` endpoint caps a single query at ~100 results (the `start>=100` ceiling), and many queries exhaust earlier. To reach larger totals, provide multiple URLs/queries (e.g. different locations or keyword variations) in the Source URLs list.",
            "default": 10
          },
          "includeUnfilteredResults": {
            "title": "🧪 Include incomplete rows",
            "type": "boolean",
            "description": "If on, also push jobs missing a title or company. Off by default for cleaner output.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy configuration",
            "type": "object",
            "description": "Optional custom proxy URLs. The scraper always uses Apify RESIDENTIAL as the fallback (up to 3 retries). If you provide custom proxy URLs here, those are tried first (up to 3 retries) and then it falls back to RESIDENTIAL.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}