---
title: "Search Google Jobs"
method: GET
path: "/v1/google/jobs/search"
tags: ["Google Jobs"]
---

# Search Google Jobs

`GET /v1/google/jobs/search`

Search Google Jobs.

Two data sources are available via ``mode``:

- ``mode=rpc`` (default) — Google's own Careers SPA RPC. Very fast
  (~300 ms), richly structured (title, apply URL, company,
  locations, responsibilities, qualifications, posted-at,
  experience levels). Scope limited to Google's openings.
- ``mode=serp`` — public Google Jobs SERP (aggregator).

## Query parameters

- `q` string, required — Job title / keywords / combined query.
- `location` string, nullable — City / state / region — concatenated with `q` before sending to Google.
- `gl` string — Country code (ISO 3166 alpha-2).
- `country` string, nullable — Alias for `gl`; when present overrides it.
- `hl` string — Language code.
- `language` string, nullable — Alias for `hl`; when present overrides it.
- `domain` string — Google domain for locale-specific results (`google.com`, `google.co.uk`, `google.co.in`, …).
- `job_type` 'FULLTIME' | 'PARTTIME' | 'CONTRACTOR' | 'INTERN', nullable — Employment type — translated into a `chips` filter.
- `date_posted` 'today' | '3days' | 'week' | 'month', nullable — Posted-date window — translated into a `chips` filter.
- `ltype` 'remote' | 'hybrid' | 'onsite' | 'work_from_home', nullable — Work arrangement — maps onto Google's remote/hybrid/onsite chips.
- `chips` string, nullable — Raw Google chip-filter string (comma-separated). Merged with any structured filters (`job_type`, `date_posted`, `ltype`).
- `uds` string, nullable — Opaque Google filter token harvested from a prior Jobs search URL.
- `uule` string, nullable — Google's UULE-encoded location (e.g. `w+CAIQIFJlbGF5IFN0YXRlcw==`).
- `lrad` string, nullable — Search radius around the location (Google accepts a distance in miles).
- `next_page_token` string, nullable — Opaque token from the previous response's `pagination.next`.
- `mode` 'rpc' | 'serp' — Data source. ``rpc`` (default, ~300 ms) replays Google's own ``r06xKb`` batchexecute RPC on the Google Careers portal — clean JSON, 20 roles per page, scope = Google's internal openings. ``serp`` uses the public Jobs search vertical (``udm=8``, SERP-embedded, 3rd-party aggregator) and costs more latency because Google gates it behind JS.

## Response `200`

Successful Response

- JobsSearchResponse — Response for GET /api/v1/jobs/search.
  - `jobs` JobResult[]
    - `title` string, required
    - `company_name` string, required
    - `location` string, nullable
    - `via` string, nullable — Source platform ("Talent.com", "Built In NYC", …) parsed from "via X".
    - `url` string, nullable — Canonical Google Jobs listing URL.
    - `description` string, nullable
    - `salary` JobSalary — Job salary information.
      - `min` string, nullable
      - `max` string, nullable
      - `currency` string, nullable
      - `period` string, nullable
    - `job_type` string, nullable
    - `schedule_type` string, nullable
    - `work_from_home` boolean
    - `posted_at` string, nullable
    - `thumbnail` string, nullable
    - `apply_options` JobApplyOption[]
      - `source` string, required
      - `title` string, nullable
      - `link` string, required
    - `apply_links` string[] — Flat list of apply URLs for quick access.
    - `job_highlights` JobHighlights — Structured job highlights.
      - `qualifications` string[]
      - `responsibilities` string[]
      - `benefits` string[]
    - `extensions` string[]
  - `jobs_results` JobResult[]
    - `title` string, required
    - `company_name` string, required
    - `location` string, nullable
    - `via` string, nullable — Source platform ("Talent.com", "Built In NYC", …) parsed from "via X".
    - `url` string, nullable — Canonical Google Jobs listing URL.
    - `description` string, nullable
    - `salary` JobSalary — Job salary information.
      - `min` string, nullable
      - `max` string, nullable
      - `currency` string, nullable
      - `period` string, nullable
    - `job_type` string, nullable
    - `schedule_type` string, nullable
    - `work_from_home` boolean
    - `posted_at` string, nullable
    - `thumbnail` string, nullable
    - `apply_options` JobApplyOption[]
      - `source` string, required
      - `title` string, nullable
      - `link` string, required
    - `apply_links` string[] — Flat list of apply URLs for quick access.
    - `job_highlights` JobHighlights — Structured job highlights.
      - `qualifications` string[]
      - `responsibilities` string[]
      - `benefits` string[]
    - `extensions` string[]
  - `filters` JobFilter[]
    - `name` string, required
    - `options` JobFilterOption[]
      - `label` string, required
      - `value` string, nullable
  - `pagination` Pagination, required — Pagination metadata.
    - `current` union
      - integer
      - string
    - `next` string, nullable
    - `total_results` integer, nullable
    - `total_pages` integer, nullable
    - `page_no` object

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/scrapebadger/apis/scrapebadger-account-api.md) · [All operations](https://skmtc.net/scrapebadger/apis/scrapebadger-account-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/scrapebadger/scrapebadger-account-api/revisions/4a1ef8777baf/schema)
