# Google Jobs Scraper ($4/1k): Salaries & Direct Apply Links (`unitbytes/google-jobs-scraper`) Actor

Extract Google Jobs listings across 80+ countries. Get job titles, companies, logos, parsed salary ranges, remote/hybrid tags, full descriptions, qualifications, benefits, and direct employer apply links (LinkedIn, Indeed, Greenhouse, Workday, Lever). $4.00 / 1,000 jobs.

- **URL**: https://apify.com/unitbytes/google-jobs-scraper.md
- **Developed by:** [UnitBytes | Enterprise Web Data](https://apify.com/unitbytes) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 job scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 💼 Google Jobs Scraper & Hiring Signal Monitor: Salaries, Direct ATS Apply Links & Multi-Board Job API

<div align="center">

[![Available on Apify](https://img.shields.io/badge/Available_on-Apify-28B52A?style=for-the-badge\&logo=apify\&logoColor=white)](https://apify.com/unitbytes/google-jobs-scraper?fpr=939u3w\&fp_sid=gh_gjobs)
[![Speed](https://img.shields.io/badge/Speed-Results_in_Seconds-brightgreen?style=for-the-badge)](#)
[![Hiring Monitor](https://img.shields.io/badge/24%2F7_Cron-Hiring_%26_Job_Alert_Monitor-critical?style=for-the-badge)](#)
[![Pricing](https://img.shields.io/badge/Price-From_$0.004%2Fjob-orange?style=for-the-badge)](#)
[![Company Logos](https://img.shields.io/badge/Company_Logos-100%25_Working_CDN-blue?style=for-the-badge)](#)
[![Direct ATS Links](https://img.shields.io/badge/Direct_Apply-Greenhouse_%7C_Workday_%7C_Lever-purple?style=for-the-badge)](#)
[![Zero Login](https://img.shields.io/badge/Account_Required-None-blue?style=for-the-badge)](#)

**The fastest and most reliable Google Jobs (Google for Jobs) scraper & automated hiring signal monitor for B2B lead generation agencies, job board operators, recruiting teams, and AI agents. Aggregate live job postings across LinkedIn, Indeed, Glassdoor, ZipRecruiter, Greenhouse, Workday, Lever, Ashby, and direct corporate career pages in seconds — complete with normalized salaries, structured qualifications, 100% working company logos, and direct employer apply links.**

[**🚀 Try it Live on Apify**](https://apify.com/unitbytes/google-jobs-scraper?fpr=939u3w\&fp_sid=gh_gjobs) • [**⏰ Set Up Daily Hiring Alert**](https://console.apify.com/actors/NusgplBbcd4EW6Wfl/input) • [**🔓 Bypass 185-Job Cap**](#-how-to-bypass-googles-185-job-per-search-cap-collect-10005000-jobs) • [**💬 Support**](https://apify.com/unitbytes/google-jobs-scraper/issues)

</div>

***

<p align="center">
  <a href="https://console.apify.com/actors/NusgplBbcd4EW6Wfl/input" target="_blank">
    <img src="https://raw.githubusercontent.com/unitbytes-com/.github/main/assets/banners/unitbytes-google-jobs-scraper-banner.jpg" alt="Google Jobs Scraper & Hiring Signal API by UnitBytes" width="100%" />
  </a>
</p>

<p align="center">
  <a href="https://console.apify.com/actors/NusgplBbcd4EW6Wfl/input" target="_blank">
    <img src="https://raw.githubusercontent.com/unitbytes-com/.github/main/assets/try-it-for-free.svg" width="240" height="48" alt="Try it for Free">
  </a>
  <br>
  <sub>⚡ <b>1-Click Free Trial:</b> Test live job queries using Apify's $5 free monthly credit • No credit card required</sub>
</p>

***

### 📖 Overview

**Google Jobs (Google for Jobs)** is the world's largest real-time meta-aggregator of employment listings. Instead of scraping dozens of separate job boards and applicant tracking systems (ATS) one by one, a single Google Jobs query captures live postings indexed from **LinkedIn**, **Indeed**, **Glassdoor**, **ZipRecruiter**, **Monster**, **Built In**, **Wellfound**, **Greenhouse**, **Workday**, **Lever**, **Ashby**, **SmartRecruiters**, **iCIMS**, and **direct company career portals** across 80+ countries.

However, extracting structured job data from Google Jobs at scale has historically been a major challenge for engineering and recruiting teams:

- Legacy scrapers fail with `0 results` due to Google's modern verification checks or only return the first 10 results without working pagination.
- Broken or missing company logos (returning 1×1 transparent pixels or generic gray building icons instead of the real employer logo URL).
- Unparsed compensation badges (`"$165K–$210K a year"`, `"$45–$60 an hour"`) that require complex regex normalizers before loading into SQL, Clay, or Excel.
- Aggregator redirect traps instead of direct ATS application URLs (Greenhouse, Workday, Lever).
- High per-request API fees ($15–$25 per 1,000 jobs on SerpApi) that charge you even when a search returns zero jobs.

**Google Jobs Scraper by UnitBytes** eliminates every one of these bottlenecks. It streams paginated Google Jobs results **in seconds** (~30 jobs in under 10 seconds) with **transparent Pay-Per-Event billing (from `$0.004/job`, and `$0.00` for empty searches or duplicates)** — delivering clean, spreadsheet-ready and AI-ready job intelligence into Excel, CSV, Google Sheets, Clay, n8n, Make, or your database with zero login or cookie setup required.

<table>
  <tr>
    <td colspan="3" style="padding:10px 14px;background:#0284C7;color:#FFFFFF;font-size:13px;font-weight:700;border-radius:6px 6px 0 0">
      ⚡ UnitBytes · Google Search, Jobs, Trends & Local Business Intelligence Ecosystem
    </td>
  </tr>
  <tr>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FFF4ED;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">💼 <b><a href="https://apify.com/unitbytes/google-jobs-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#C2410C;text-decoration:none;font-size:13px">Google Jobs Scraper</a></b></span><br><span style="color:#EA580C;font-size:11px;font-weight:700">📍 You are here</span><br>
      <span style="color:#64748B;font-size:11px">Multi-board jobs, parsed salaries, logos & direct ATS links</span>
    </td>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">📈 <b><a href="https://apify.com/unitbytes/google-trends-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">Google Trends Scraper</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">Search Demand & Keywords</span><br>
      <span style="color:#64748B;font-size:11px">5 real-time endpoints, viral curves & geo breakdowns</span>
    </td>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">📍 <b><a href="https://apify.com/unitbytes/google-maps-reviews-tracker?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">Google Maps Tracker</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">Reputation Audit</span><br>
      <span style="color:#64748B;font-size:11px">Detect deleted, removed & edited reviews</span>
    </td>
  </tr>
  <tr>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">🗺️ <b><a href="https://apify.com/unitbytes/google-maps-contributor-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">Google Maps Contributors</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">Reviewer Profiles</span><br>
      <span style="color:#64748B;font-size:11px">Reverse lookup Local Guide badges & full review histories</span>
    </td>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">📸 <b><a href="https://apify.com/unitbytes/google-maps-photos-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">Google Maps Photos</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">High-Res Media</span><br>
      <span style="color:#64748B;font-size:11px">Original =s0 storefront images & view counts</span>
    </td>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">💬 <b><a href="https://apify.com/unitbytes/reddit-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">Reddit Scraper</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">Community Sentiment</span><br>
      <span style="color:#64748B;font-size:11px">Subreddit discussions, keyword mentions & trends</span>
    </td>
  </tr>
  <tr>
    <td colspan="3" style="padding:10px 14px;background:#1E293B;color:#FFFFFF;font-size:13px;font-weight:700">
      📦 UnitBytes · Global Marketplaces, Classifieds & B2B Sourcing Ecosystem
    </td>
  </tr>
  <tr>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">🇨🇳 <b><a href="https://apify.com/unitbytes/1688-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">1688 Factory Direct</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">China Wholesale & FBA</span><br>
      <span style="color:#64748B;font-size:11px">Direct factory prices, SKU matrices & Amazon FBA specs</span>
    </td>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">📸 <b><a href="https://apify.com/unitbytes/1688-image-search-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">1688 Reverse Image Search</a></b></span><br><span style="color:#EA580C;font-size:11px;font-weight:700">✨ Photo-to-Factory</span><br>
      <span style="color:#64748B;font-size:11px">Upload any product photo or URL to find the exact 1688 factory</span>
    </td>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">🌐 <b><a href="https://apify.com/unitbytes/alibaba-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">Alibaba Wholesale</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">Global B2B & MOQ</span><br>
      <span style="color:#64748B;font-size:11px">Verified suppliers, inspection audits & tiered pricing</span>
    </td>
  </tr>
  <tr>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">🛍️ <b><a href="https://apify.com/unitbytes/Facebook-Marketplace-Scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">FB Marketplace</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">Bypass 1k Limit</span><br>
      <span style="color:#64748B;font-size:11px">40+ data fields, vehicles, real estate & local listings</span>
    </td>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">🚗 <b><a href="https://apify.com/unitbytes/offerup-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">OfferUp Scraper</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">Local Deals & Items</span><br>
      <span style="color:#64748B;font-size:11px">Bargain finding from $0.80 per run</span>
    </td>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:33.3%">
      <span style="white-space:nowrap">📋 <b><a href="https://apify.com/unitbytes/craigslist-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">Craigslist Scraper</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">Worldwide Leads</span><br>
      <span style="color:#64748B;font-size:11px">All cities, subareas, categories & lead contacts</span>
    </td>
  </tr>
</table>

***

### 🌟 Why Recruiting, RevOps & Data Teams Choose UnitBytes

| Capability / Metric | **UnitBytes Google Jobs Scraper** | **SerpApi (Google Jobs API)** | **Other Store Scrapers** |
| :--- | :---: | :---: | :---: |
| **⚡ Extraction Speed (30 Jobs)** | **~8–10 Seconds (Multi-Page)** | ⚠️ Requires sequential paginated calls | ❌ Slow (60–180s browser overhead) or broken (`0 jobs`) |
| **💰 Price per 1,000 Jobs** | **From $4.00 ($0.004/job)** | $15.00 – $25.00 per 1K (`~$0.015–$0.025/page`) | $10.00 – $30.00 per 1K + high compute fees |
| **🔄 True Deep Pagination** | **✅ Full Multi-Page Cursor Pagination (Up to ~185/query)** | ✅ Supported (10 jobs per paid request) | ❌ Many stop at Page 1 (10 jobs) or fake queries |
| **🖼️ Company Logos (`companyLogo`)** | **✅ 100% Working `gstatic.com` Image URLs** | ⚠️ Often missing or raw thumbnails | ❌ Broken `data:image` base64 icons or 1×1 GIFs |
| **💵 Parsed Salary Numbers** | **✅ Numeric `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryInterval`** | ❌ Raw text snippet only | ⚠️ Unparsed strings |
| **📋 Structured Highlights** | **✅ Separate `qualifications`, `responsibilities`, `benefits` arrays** | ⚠️ Nested raw arrays | ❌ Merged into unstructured text |
| **🔗 Direct Employer Apply Links** | **✅ Prioritized ATS (`directApplyUrl`) + full `applyOptions`** | ⚠️ Google redirect URLs | ⚠️ Single link or broken redirects |
| **🧮 Multi-Query × Location Batching** | **✅ Built-in Cartesian Batching + `jobId` Deduplication** | ❌ Requires custom loop & dedup code | ❌ Single search per run |
| **🛡️ Empty Search & Duplicate Billing** | **✅ $0.00 (Free — Pay Only for Unique Jobs)** | ❌ Charged per API call even on 0 results | ❌ Charged for browser startup & compute time |
| **📊 Export Formats** | **Excel (.xlsx), CSV, Google Sheets, JSON, Clay, n8n** | JSON only | JSON / CSV |

<p align="center">
  <a href="https://console.apify.com/actors/NusgplBbcd4EW6Wfl/input">
    <img src="https://raw.githubusercontent.com/unitbytes-com/.github/main/assets/try-it-for-free.svg" width="240" height="48" alt="Try it for Free">
  </a>
</p>

***

### 💰 Transparent Pay-Per-Event Pricing (From `$4.00 / 1,000 Jobs`)

This Actor uses **Pay-Per-Event (PPE)** billing with automatic plan-based volume discounts so you only pay for unique, verified job listings delivered to your dataset — never for empty searches, duplicate listings, or pagination overhead.

| Apify Plan Tier | Event Name | Price per Job | Price per 1,000 Jobs | Volume Discount |
| :--- | :--- | :--- | :--- | :--- |
| **Free Plan** (`FREE`) | `job-scraped` | `$0.0100` | **`$10.00 / 1,000 jobs`** | Base rate (**500 jobs/mo free** with `$5` credit) |
| **Starter Plan** (`BRONZE`) | `job-scraped` | `$0.0050` | **`$5.00 / 1,000 jobs`** | **50% OFF** |
| **Scale Plan** (`SILVER`) | `job-scraped` | `$0.0045` | **`$4.50 / 1,000 jobs`** | **55% OFF** |
| **Business & Enterprise** (`GOLD`+) | `job-scraped` | `$0.0040` | **`$4.00 / 1,000 jobs`** | **60% OFF** |
| **Actor Run Start** | `apify-actor-start` | `$0.00005` | `$0.05 / 1,000 runs` | Minimal one-time startup event per GB RAM |
| **Empty Searches / Duplicates** | — | **`$0.00`** | **`$0.00 (Free)`** | Zero charge on 0 results or deduplicated jobs |

> 🎁 **Apify Free Tier Included (`500 Jobs / Month Free`):**
> Every Apify account receives **$5.00 in free monthly platform usage credits**, which covers **500 unique Google Jobs listings every month at $0.00 cost** on the Free Plan (or up to **1,000–1,250 jobs** per `$5` on paid plans).

***

### ✨ Key Features

- **⚡ Lightning-Fast Multi-Page Extraction:** Collect 30+ full job postings across multiple pages in ~8–10 seconds with minimal memory footprint.
- **🌐 One Scraper for Every Major Job Board & ATS:** Simultaneously capture listings indexed from **LinkedIn**, **Indeed**, **Glassdoor**, **ZipRecruiter**, **Monster**, **Built In**, **Wellfound**, **Greenhouse**, **Workday**, **Lever**, **Ashby**, **SmartRecruiters**, and corporate career portals across 80+ countries.
- **🖼️ Verified Public Company Logos (`companyLogo`):** Automatically resolves deferred employer logos to clean, public `https://encrypted-tbn0.gstatic.com/...` URLs and filters out generic placeholder icons so your job board UI, Airtable, or Clay table looks crisp.
- **💵 Normalized Compensation Intelligence:** Parses raw salary badges (`"$160K–$210K a year"`, `"$45–$60 an hour"`, `"£65,000–£85,000 a year"`) into numeric `salaryMin`, `salaryMax`, ISO `salaryCurrency` (`USD`, `EUR`, `GBP`, `CAD`, `AUD`), and standardized `salaryInterval` (`YEAR`, `HOUR`, `MONTH`, `WEEK`, `DAY`).
- **📋 Complete Descriptions & Structured Highlights:** Extracts the full, untruncated plain-text job `description` alongside structured bullet arrays for `qualifications`, `responsibilities`, and `benefits`.
- **🔗 Direct Employer & ATS Application Links:** Captures every portal link in `applyOptions` and automatically prioritizes direct ATS/employer URLs (`directApplyUrl` — e.g., `boards.greenhouse.io`, `myworkdayjobs.com`, `jobs.lever.co`) ahead of third-party aggregators.
- **🎯 Precision Native Filters:** Filter server-side by `datePosted` (`today`, `3days`, `week`, `month`), `employmentTypes` (`FULLTIME`, `PARTTIME`, `CONTRACTOR`, `INTERN`), `remoteOnly` (`true`/`false`), and 80+ country markets (`country`).
- **🧠 Cross-Search Deduplication Engine:** Batch dozens of `queries` and `locations` in a single run — overlapping jobs are automatically deduplicated by Google's unique `jobId` so you never pay twice for the same posting.

***

### 💡 Practical Business Use Cases

#### 1. 🎯 B2B Sales Intent & Hiring Signal Lead Generation (Clay / Apollo / Outbound)

When a company posts a job for a `"Snowflake Data Engineer"`, `"HubSpot Administrator"`, `"SOC 2 Compliance Manager"`, or `"VP of Sales"`, they are publicly broadcasting their tech stack, budget approval, and immediate pain points. Feed daily Google Jobs postings directly into **Clay**, **n8n**, or **Make** to trigger high-converting outbound campaigns within hours of a job going live.

#### 2. 🌐 Niche & Vertical Job Board Aggregation

Power specialized job boards (AI & Machine Learning Jobs, Remote FinTech Careers, Climate Tech Jobs, Healthcare Staffing, Web3 Engineering) with fresh daily job listings, verified employer logos, structured bullet highlights, and direct ATS application links.

#### 3. 📊 Real-Time Compensation & Salary Benchmarking

Analyze live `salaryMin`, `salaryMax`, `salaryCurrency`, and `salaryInterval` distributions across US states, European tech hubs, seniority tiers, and remote vs. on-site arrangements for HR compensation studies and market intelligence.

#### 4. 🤖 AI Recruiting Co-Pilots & Automated Candidate Matching

Connect this Actor via **MCP**, **LangChain**, **CrewAI**, or **n8n** to automatically discover newly posted roles (`datePosted: "today"`), score job `qualifications` against candidate resumes, and deliver tailored application packages.

#### 5. 🏢 Competitor Headcount & Expansion Tracking

Monitor competitor company names in `queries` to track which departments, regional offices, and R\&D initiatives your competitors are actively scaling.

***

### 🚨 24/7 Hiring Signal & Job Alert Watchdog (Automated Daily Schedules)

Turn manual job searching into an **automated 24/7 hiring intelligence pipeline** running on a background schedule.

#### ⏰ Ready-to-Use Scheduled Automation Templates

| Objective | Frequency / Cron | Target Input | Automated Action / Destination |
| :--- | :--- | :--- | :--- |
| **🔥 Daily B2B Buying Intent Radar** | Daily at 07:00 AM UTC<br>`0 7 * * *` | `queries: ["Snowflake Engineer", "HubSpot Admin", "Datadog"]`, `datePosted: "today"` | Auto-enriches hiring companies in **Clay / HubSpot / Apollo** and alerts sales reps in **Slack**. |
| **🌐 Automated Niche Job Board Sync** | Every 6 hours<br>`0 */6 * * *` | `queries: ["AI Engineer", "LLM Engineer", "MLOps"]`, `remoteOnly: true`, `datePosted: "today"` | Appends new verified jobs with logos & ATS links to **Airtable / Supabase / Webflow CMS**. |
| **💼 Executive & Competitor Hiring Watch** | Every Monday at 08:00 AM UTC<br>`0 8 * * 1` | `queries: ["VP of Engineering", "Head of AI"]`, `locations: ["San Francisco, CA", "New York, NY"]`, `datePosted: "week"` | Delivers weekly executive hiring digest to **Google Sheets** or email. |

#### 🚀 How to Set Up an Automated Daily Schedule in 3 Clicks (No Coding Required)

1. **Step 1: Save Your Search Input as a Task**
   - Open [Google Jobs Scraper on Apify Console](https://console.apify.com/actors/NusgplBbcd4EW6Wfl/input).
   - Enter your target `queries`, `locations`, and set `datePosted: "today"`, then click **Save as task** (top right).
2. **Step 2: Add a Schedule**
   - In the left sidebar of the Apify Console, go to **Schedules** ➔ click **Create schedule**.
   - Select your saved Google Jobs Task and pick your schedule (e.g., **Daily at 7:00 AM** or `0 7 * * *`).
3. **Step 3: Connect to Google Sheets, Clay, n8n, Make, or Slack**
   - In your Task settings, navigate to the **Integrations** tab:
     - **Google Sheets:** Automatically append newly posted jobs, salaries, and apply links daily.
     - **Webhook (Clay / n8n / Make / Zapier / Slack):** Trigger an instant workflow as soon as the run finishes (`RUN.SUCCEEDED`).

***

### 🔗 No-Code Integrations: Clay, n8n, Make, Zapier & Google Sheets

| Destination | Integration Method | Use Case |
| :--- | :--- | :--- |
| **Clay.com** | Apify Actor Integration / Webhook | Enrich hiring companies with decision-maker emails and trigger automated outbound sequences based on tech-stack job postings. |
| **n8n / Make / Zapier** | Apify Node / `RUN.SUCCEEDED` Webhook | Filter jobs by `salaryMin >= 150000`, summarize with OpenAI/Claude, and post instant alerts to Slack or Discord. |
| **Google Sheets** | Apify Google Sheets Integration | Maintain a live, collaborative spreadsheet of open roles, salary benchmarks, and direct ATS links. |
| **Airtable / Webflow / Supabase** | Webhook / REST API | Auto-publish fresh daily roles to your niche job board with working `companyLogo` URLs and `directApplyUrl` buttons. |

***

### 🔓 How to Bypass Google's ~185-Job Per-Search Cap (Collect 1,000–5,000+ Jobs)

Google Jobs enforces a hard upstream server-side limit of **~150 to 190 jobs** for any single `query + location` search stream. No scraper or API can retrieve beyond ~185 listings for a single query because Google Jobs caps each individual search feed at that depth.

To collect **500, 1,000, or 5,000+ unique jobs** in a single run, use this Actor's built-in **Multi-Query × Multi-Location Batching** and **Time-Window Slicing**. The scraper automatically iterates through every combination and deduplicates overlapping results by `jobId` so you never pay twice for the same job:

#### Strategy 1: Expand Role Synonyms & Seniority Levels (`queries`)

Split a broad role into specific job title variations, tech stacks, or seniority tiers:

```json
{
  "queries": [
    "Software Engineer",
    "Senior Software Engineer",
    "Backend Developer",
    "Full Stack Engineer",
    "Python Developer",
    "Go Engineer",
    "Platform Engineer",
    "Distributed Systems Engineer"
  ],
  "locations": ["United States"],
  "country": "us",
  "maxJobs": 1200
}
```

*(8 queries × ~180 jobs/query = up to **1,440 unique jobs** in one run)*

#### Strategy 2: Slice by Metro Area or State (`locations`)

Instead of searching an entire country with one location string, pass major hiring hubs in `locations`:

```json
{
  "queries": ["Data Scientist", "Machine Learning Engineer"],
  "locations": [
    "New York, NY",
    "San Francisco, CA",
    "Seattle, WA",
    "Austin, TX",
    "Boston, MA",
    "Chicago, IL",
    "Los Angeles, CA",
    "Remote"
  ],
  "country": "us",
  "maxJobs": 2000
}
```

*(2 queries × 8 locations = 16 search streams = up to **2,800+ unique jobs** in one run)*

#### Strategy 3: High-Frequency Daily Delta Runs (`datePosted: "today"`)

For continuous job board ingestion or recruiting alerts, schedule the Actor to run daily with `"datePosted": "today"` (or every 3 days with `"datePosted": "3days"`). Because daily volume per city/role stays well below the ~185-job ceiling, you capture **100% of newly published jobs** with zero pagination truncation.

***

### 🛠️ How to Use via API (Python, Node.js & cURL)

You can trigger runs directly in the [Apify Console](https://apify.com/unitbytes/google-jobs-scraper?fpr=939u3w\&fp_sid=gh_gjobs) or integrate programmatically into your Python, Node.js, or cURL pipeline.

#### 🐍 Python Example

```bash
pip install apify-client
```

```python
from apify_client import ApifyClient

## Initialize the client with your Apify API token
client = ApifyClient("YOUR_APIFY_API_TOKEN")

## Configure search parameters
run_input = {
    "queries": ["Software Engineer", "Backend Engineer"],
    "locations": ["New York, NY", "San Francisco, CA"],
    "country": "us",
    "datePosted": "week",
    "employmentTypes": ["FULLTIME"],
    "remoteOnly": False,
    "maxJobs": 100,
}

## Run the Actor and wait for completion
print("🚀 Launching Google Jobs Scraper...")
run = client.actor("unitbytes/google-jobs-scraper").call(run_input=run_input)

## Fetch scraped job postings from the dataset
dataset_items = client.dataset(run["defaultDatasetId"]).list_items().items
print(f"✅ Successfully extracted {len(dataset_items)} unique jobs from Google Jobs!")

for job in dataset_items[:3]:
    print(f"\nTitle: {job.get('title')} at {job.get('company')}")
    print(f"Location: {job.get('location')} ({job.get('workplaceType')})")
    print(f"Salary: {job.get('salary') or 'Unlisted'} (Min: {job.get('salaryMin')}, Max: {job.get('salaryMax')} {job.get('salaryCurrency')})")
    print(f"Logo: {job.get('companyLogo')}")
    print(f"Direct Apply URL: {job.get('directApplyUrl')}")
```

***

#### 🟨 JavaScript / Node.js Example

```bash
npm install apify-client
```

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({
    token: 'YOUR_APIFY_API_TOKEN',
});

const runInput = {
    queries: ['DevOps Engineer', 'Site Reliability Engineer'],
    locations: ['Remote'],
    country: 'us',
    datePosted: '3days',
    remoteOnly: true,
    maxJobs: 100,
};

console.log('🚀 Starting Google Jobs Scraper...');
const run = await client.actor('unitbytes/google-jobs-scraper').call(runInput);

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`✅ Extracted ${items.length} unique jobs!`);

items.slice(0, 3).forEach((job) => {
    console.log(`• ${job.title} at ${job.company} (${job.salary || 'N/A'}) — ${job.directApplyUrl}`);
});
```

***

#### 🌐 cURL Example

```bash
curl -X POST "https://api.apify.com/v2/acts/unitbytes~google-jobs-scraper/runs?token=YOUR_APIFY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "queries": ["Product Manager"],
    "locations": ["New York, NY"],
    "country": "us",
    "datePosted": "week",
    "maxJobs": 50
  }'
```

***

### 📤 Sample Output Data & Complete Schema

Each item in the output dataset is a flat, structured JSON object containing all **29 extracted job attributes** ready for immediate use in databases, spreadsheets, or AI agents.

#### Realistic JSON Output Example

```json
{
  "jobId": "gjobs_fplVD6NzqcGb_8U",
  "title": "Senior Backend Software Engineer",
  "company": "Stripe",
  "companyLogo": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR9_stripe_logo&s",
  "location": "New York, NY",
  "via": "via Greenhouse",
  "description": "Stripe is looking for a Senior Backend Software Engineer to help design, build, and scale our global financial infrastructure...",
  "postedAt": "1 day ago",
  "postedDate": "2026-10-18",
  "employmentType": "Full-time",
  "workplaceType": "Hybrid",
  "degreeRequirement": "Bachelor's degree",
  "salary": "$175K–$235K a year",
  "salaryMin": 175000.0,
  "salaryMax": 235000.0,
  "salaryCurrency": "USD",
  "salaryInterval": "YEAR",
  "isRemote": false,
  "benefits": [
    "Health insurance",
    "Dental insurance",
    "Vision insurance",
    "401(k) matching",
    "Paid time off"
  ],
  "qualifications": [
    "5+ years of production backend engineering experience in Java, Go, Ruby, or Python",
    "Experience designing distributed systems with strict reliability and latency requirements",
    "BS/MS in Computer Science or equivalent practical experience"
  ],
  "responsibilities": [
    "Design, build, and maintain core payment APIs serving millions of businesses globally",
    "Collaborate across product and infrastructure teams to improve latency and uptime",
    "Mentor junior engineers and lead architectural reviews"
  ],
  "extensions": [
    "1 day ago",
    "$175K–$235K a year",
    "Full-time",
    "Hybrid"
  ],
  "applyUrl": "https://boards.greenhouse.io/stripe/jobs/6192837",
  "directApplyUrl": "https://boards.greenhouse.io/stripe/jobs/6192837",
  "applyOptions": [
    {
      "title": "Apply on Greenhouse",
      "link": "https://boards.greenhouse.io/stripe/jobs/6192837"
    },
    {
      "title": "Apply on LinkedIn",
      "link": "https://www.linkedin.com/jobs/view/senior-backend-software-engineer-at-stripe-398172635"
    }
  ],
  "googleJobsUrl": "https://www.google.com/search?q=Software+Engineer+New+York,+NY&ibp=htl;jobs",
  "searchQuery": "Software Engineer",
  "searchLocation": "New York, NY",
  "country": "us",
  "scrapedAt": "2026-10-19T12:00:00+00:00"
}
```

#### Complete Output Fields Reference

| Field | Type | Description |
| :--- | :--- | :--- |
| `jobId` | `string` | Unique Google Jobs posting identifier used for cross-search deduplication. |
| `title` | `string` | Job posting title (e.g., `"Senior Backend Software Engineer"`). |
| `company` | `string` | Hiring employer / company name (e.g., `"Stripe"`). |
| `companyLogo` | `string \| null` | Public `https://encrypted-tbn0.gstatic.com/...` URL to the employer's logo image, if available. |
| `location` | `string` | Job location string as listed on Google Jobs (e.g., `"New York, NY"`, `"Anywhere"`). |
| `via` | `string` | Source job board or ATS where the listing was indexed from (e.g., `"via Greenhouse"`, `"via LinkedIn"`, `"via Indeed"`). |
| `postedAt` | `string` | Relative publication timestamp reported by Google (e.g., `"13 hours ago"`, `"2 days ago"`). |
| `postedDate` | `string \| null` | Normalized ISO 8601 publication date (`YYYY-MM-DD`, e.g., `"2026-10-18"`). |
| `employmentType` | `string \| null` | Schedule / contract classification (`"Full-time"`, `"Part-time"`, `"Contractor"`, `"Internship"`). |
| `workplaceType` | `string` | Workplace arrangement classification (`"Remote"`, `"Hybrid"`, or `"On-site"`). |
| `isRemote` | `boolean` | Work-from-home boolean flag (`true` if remote/telecommute, otherwise `false`). |
| `degreeRequirement` | `string \| null` | Extracted education or degree requirement badge, if specified (e.g., `"Bachelor's degree"`). |
| `salary` | `string \| null` | Raw formatted compensation text (e.g., `"$175K–$235K a year"`, `"$45–$60 an hour"`). |
| `salaryMin` | `number \| null` | Parsed minimum numeric salary value (e.g., `175000.0`). |
| `salaryMax` | `number \| null` | Parsed maximum numeric salary value (e.g., `235000.0`). |
| `salaryCurrency` | `string \| null` | ISO currency code parsed from the salary string (e.g., `"USD"`, `"EUR"`, `"GBP"`, `"CAD"`). |
| `salaryInterval` | `string \| null` | Compensation period (`"YEAR"`, `"MONTH"`, `"WEEK"`, `"DAY"`, `"HOUR"`). |
| `description` | `string` | Complete, untruncated plain-text job description. |
| `qualifications` | `array` (`string`) | Bullet list of required skills, experience, and qualifications extracted from Google Jobs highlights. |
| `responsibilities` | `array` (`string`) | Bullet list of core role duties and day-to-day responsibilities. |
| `benefits` | `array` (`string`) | Extracted compensation perks and benefits (e.g., `"Health insurance"`, `"401(k)"`, `"Paid time off"`). |
| `extensions` | `array` (`string`) | Raw metadata badges displayed on the Google Jobs card (posting age, salary badge, schedule, workplace type). |
| `applyUrl` | `string \| null` | Primary application URL for the job listing. |
| `directApplyUrl` | `string \| null` | Best direct employer career page or ATS link (Greenhouse, Workday, Lever, Ashby, etc.), prioritized over third-party aggregators. |
| `applyOptions` | `array` (`object`) | Complete list of all available application portals (`[{"title": "Apply on ...", "link": "https://..."}]`). |
| `googleJobsUrl` | `string` | Direct shareable URL to open the specific job inside the Google Jobs viewer. |
| `searchQuery` | `string` | Exact search query from `queries` that discovered this job. |
| `searchLocation` | `string` | Exact location string from `locations` that discovered this job. |
| `country` | `string` | Two-letter ISO country code used for the search (`"us"`, `"gb"`, `"de"`, etc.). |
| `scrapedAt` | `string` | UTC ISO 8601 timestamp indicating when the job listing was extracted. |

***

### ⚙️ Input Parameters Reference

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `queries` | `array` | `["Software Engineer"]` | Job titles, roles, skills, or company keywords to search for (e.g., `["Software Engineer", "Data Scientist", "Account Executive"]`). Supports multi-query batching in a single run with automatic cross-search deduplication. |
| `locations` | `array` | `["New York, NY"]` | Cities, states, regions, or `"Remote"` to search within (e.g., `["New York, NY", "San Francisco, CA", "London", "Berlin"]`). Runs every `queries × locations` combination. |
| `country` | `string` | `"us"` | Two-letter ISO country code for Google Jobs localization (`us`, `gb`, `ca`, `de`, `nl`, `fr`, `es`, `it`, `in`, `sg`, `ae`, `sa`, `br`, `mx`, `za`, etc.). Common aliases like `"USA"` or `"UK"` are auto-normalized. |
| `language` | `string` | `""` | Optional interface language code (`en`, `de`, `es`, `fr`). **Recommended:** leave empty so Google uses the native language of the selected `country` for maximum local listing coverage. |
| `datePosted` | `string` | `"any"` | Filter listings by publication recency: `"any"` (any time), `"today"` (past 24 hours), `"3days"` (past 3 days), `"week"` (past 7 days), or `"month"` (past 30 days). |
| `employmentTypes` | `array` | `[]` | Filter by schedule type. Accepted values: `"FULLTIME"`, `"PARTTIME"`, `"CONTRACTOR"`, `"INTERN"`. Leave empty to include all schedule types. |
| `remoteOnly` | `boolean` | `false` | When `true`, restricts results strictly to remote / work-from-home positions. |
| `maxJobs` | `integer` | `50` | Maximum number of unique job listings to collect across the entire run (`1` – `5000`). Scraping stops immediately once this budget cap is reached. |
| `resolveApplyLinks` | `boolean` | `false` | When `true`, resolves redirect links to their final destination employer or ATS URL (Greenhouse, Workday, Lever, LinkedIn, Indeed). |

***

#### 📋 Copy-and-Paste Directive for AI Coding Assistants (Cursor, Windsurf & Claude Code)

Give this direct prompt instruction to your AI assistant:

> *"Use the `unitbytes/google-jobs-scraper` Actor on Apify to extract Google Jobs listings, parsed salaries (`salaryMin`, `salaryMax`), company logos, qualifications, and direct ATS apply links (`directApplyUrl`). Example call: `client.actor('unitbytes/google-jobs-scraper').call(run_input={'queries': ['Software Engineer'], 'locations': ['New York, NY'], 'country': 'us', 'maxJobs': 50})`"*

***

#### 🔌 MCP Server Setup: Claude Code, Cursor & AI Agents

Connect this scraper directly to **Claude Code**, **Claude Desktop**, **Cursor**, or any MCP-compatible AI agent via the hosted Apify MCP server:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=actors,docs,unitbytes/google-jobs-scraper"
    }
  }
}
```

*No manual API token required in configuration if your client supports Apify OAuth sign-in. Alternatively, pass your Apify API Token in the authorization header.*

***

#### 🤖 Ask an AI Assistant About This Scraper

Open a ready-to-run prompt about Google Jobs Scraper in your favorite AI assistant:

- 💬 [ChatGPT](https://chatgpt.com/?q=Using%20the%20Google%20Jobs%20Scraper%20on%20Apify%20%28https%3A//apify.com/unitbytes/google-jobs-scraper%29%2C%20walk%20me%20through%20extracting%20daily%20job%20postings%2C%20parsed%20salaries%2C%20and%20direct%20ATS%20apply%20links%20across%20multiple%20cities.%20Show%20me%20the%20input%20JSON%20and%20Python%20code.)
- 🧠 [Claude](https://claude.ai/new?q=Using%20the%20Google%20Jobs%20Scraper%20on%20Apify%20%28https%3A//apify.com/unitbytes/google-jobs-scraper%29%2C%20walk%20me%20through%20extracting%20daily%20job%20postings%2C%20parsed%20salaries%2C%20and%20direct%20ATS%20apply%20links%20across%20multiple%20cities.%20Show%20me%20the%20input%20JSON%20and%20Python%20code.)
- 🔍 [Perplexity](https://www.perplexity.ai/search?q=Using%20the%20Google%20Jobs%20Scraper%20on%20Apify%20%28https%3A//apify.com/unitbytes/google-jobs-scraper%29%2C%20walk%20me%20through%20extracting%20daily%20job%20postings%2C%20parsed%20salaries%2C%20and%20direct%20ATS%20apply%20links%20across%20multiple%20cities.%20Show%20me%20the%20input%20JSON%20and%20Python%20code.)

***

### 🌐 The Complete UnitBytes Scraping Portfolio

Power your entire data intelligence stack with UnitBytes production-grade scrapers — engineered for maximum speed, 99.9% uptime, and the best value on the Apify Store:

#### 📍 Google Search, Jobs, Maps & Trends Intelligence

| Actor | Purpose & Superpowers | Pricing |
| :--- | :--- | :--- |
| [**Google Jobs Scraper**](https://apify.com/unitbytes/google-jobs-scraper?fpr=939u3w\&fp_sid=ecosystem) | Multi-board job postings (LinkedIn, Indeed, Glassdoor, Greenhouse, Workday), parsed salaries, logos & direct apply links | From $0.004 / job |
| [**Google Trends Scraper**](https://apify.com/unitbytes/google-trends-scraper?fpr=939u3w\&fp_sid=ecosystem) | All-in-one search demand, viral keywords, related queries & geographic breakdowns across 5 endpoints | Pay-Per-Event |
| [**Google Trends API**](https://apify.com/unitbytes/google-trends-api?fpr=939u3w\&fp_sid=ecosystem) | Programmatic search curves, real-time interest spikes & multi-year historical trend data | Pay-Per-Event |
| [**Google Maps Reviews Tracker**](https://apify.com/unitbytes/google-maps-reviews-tracker?fpr=939u3w\&fp_sid=ecosystem) | Monitor reputation changes: detect deleted, removed, or edited customer reviews | Pay-Per-Event |
| [**Google Maps Photos Scraper**](https://apify.com/unitbytes/google-maps-photos-scraper?fpr=939u3w\&fp_sid=ecosystem) | High-resolution visual storefront audits & Local Guide photo feeds | Pay-Per-Event |
| [**Google Maps Reviewer Profile Scraper**](https://apify.com/unitbytes/google-maps-contributor-scraper?fpr=939u3w\&fp_sid=ecosystem) | Contributor credibility audit, reviewer badges & full review histories | Pay-Per-Event |

#### 🇨🇳 Chinese E-Commerce, Sourcing & Social Commerce

| Actor | Purpose & Superpowers | Pricing |
| :--- | :--- | :--- |
| [**1688 Factory Direct Scraper**](https://apify.com/unitbytes/1688-scraper?fpr=939u3w\&fp_sid=ecosystem) | Direct manufacturer sourcing, true factory prices, full SKU matrices & Amazon FBA packaging specs | From $0.0015 / item |
| [**1688 Reverse Image Search (Photo-to-Factory)**](https://apify.com/unitbytes/1688-image-search-scraper?fpr=939u3w\&fp_sid=ecosystem) | Visual product search (`以图搜款 / 拍立淘`): upload any product photo or URL to find the exact 1688 factory | From $0.0015 / item |
| [**Alibaba Wholesale Scraper**](https://apify.com/unitbytes/alibaba-scraper?fpr=939u3w\&fp_sid=ecosystem) | Global B2B product catalog, MOQ brackets, volume tiers & verified factory audit reports | From $0.0015 / item |
| [**Taobao & Tmall Scraper**](https://apify.com/unitbytes/taobao-tmall-scraper?fpr=939u3w\&fp_sid=ecosystem) | China's premier consumer marketplace, retail trends, flagship brand stores & pricing | Pay-Per-Event |
| [**RedNote / Xiaohongshu Search & Trends**](https://apify.com/unitbytes/xiaohongshu-rednote-trend-scraper?fpr=939u3w\&fp_sid=ecosystem) | China's Instagram/Pinterest: viral lifestyle trends, consumer search intent & watermark-free HD media | Pay-Per-Event |
| [**RedNote / Xiaohongshu Creators & Posts**](https://apify.com/unitbytes/xiaohongshu-scraper?fpr=939u3w\&fp_sid=ecosystem) | Influencer portfolios, KOL engagement metrics, bio contact info & viral note feeds | Pay-Per-Event |
| [**RedNote / Xiaohongshu Comments Scraper**](https://apify.com/unitbytes/xiaohongshu-rednote-comments-scraper?fpr=939u3w\&fp_sid=ecosystem) | Authentic buyer feedback, customer sentiment, product reviews & full reply threads | Pay-Per-Event |
| [**Goofish / Xianyu Products & Deals**](https://apify.com/unitbytes/goofish-xianyu-search-scraper?fpr=939u3w\&fp_sid=ecosystem) | Alibaba's C2C resale market: liquidation deals, secondhand arbitrage & price comparisons | Pay-Per-Event |
| [**Goofish / Xianyu Sellers & Reputation**](https://apify.com/unitbytes/goofish-scraper?fpr=939u3w\&fp_sid=ecosystem) | Merchant due diligence, Zhima credit ratings, transaction histories & buyer feedback | Pay-Per-Event |

#### 🏷️ Global Classifieds, Resale & Community Intelligence

| Actor | Purpose & Superpowers | Pricing |
| :--- | :--- | :--- |
| [**Facebook Marketplace Scraper**](https://apify.com/unitbytes/Facebook-Marketplace-Scraper?fpr=939u3w\&fp_sid=ecosystem) | Bypass the 1,000-item limit. Extract cars, real estate, electronics & 40+ structured attributes | Ultra-fast & cheap |
| [**OfferUp Scraper**](https://apify.com/unitbytes/offerup-scraper?fpr=939u3w\&fp_sid=ecosystem) | Local pickup deals, nationwide shipping listings, vehicle specs & seller profiles | From $0.80 / run |
| [**Craigslist Worldwide Scraper**](https://apify.com/unitbytes/craigslist-scraper?fpr=939u3w\&fp_sid=ecosystem) | Worldwide cities, subareas, categories, direct contact leads & localized postings | From $0.50 / run |
| [**Reddit Posts & Search Scraper**](https://apify.com/unitbytes/reddit-scraper?fpr=939u3w\&fp_sid=ecosystem) | Subreddit discussions, keyword mentions, sentiment analysis & viral thread discovery | From $0.50 / run |

***

### ❓ Frequently Asked Questions (FAQ)

#### Do I need a Google account, proxies, or cookies to use this scraper?

**No.** The Actor works out of the box with zero configuration, zero login accounts, and zero external proxy setup required.

#### Why did a single query stop around 150–190 jobs?

Google Jobs enforces a server-side ceiling of ~150–190 listings per individual `query + location` stream. When any single search reaches Google's ceiling before your `maxJobs` cap, the Actor's terminal status message clearly reports which search stream was exhausted. To collect 500 to 5,000+ jobs in a single run, pass multiple role variations in `queries` or multiple cities in `locations` (see [How to Bypass Google's ~185-Job Per-Search Cap](#-how-to-bypass-googles-185-job-per-search-cap-collect-10005000-jobs)).

#### How does cross-search deduplication work?

When you batch multiple `queries` and `locations`, overlapping listings are automatically deduplicated in memory using Google's unique `jobId`. Each unique job is pushed to your dataset only once and billed only once.

#### Why should I leave `language` empty for non-English countries?

In markets like Germany (`de`), the Netherlands (`nl`), France (`fr`), or Spain (`es`), forcing `language: "en"` causes Google Search to filter out local-language job postings. Leaving `language` empty (`""`) lets Google serve full localized results for the target `country`.

#### What happens if my search matches 0 jobs or my budget cap is reached?

If a query returns zero matching jobs, the run finishes cleanly with exit code `0` and **`$0.00` in `job-scraped` charges**. If your Apify run spending limit (`maxTotalChargeUsd`) or `maxJobs` limit is reached mid-run, the Actor immediately halts pagination and saves all charged jobs cleanly.

***

### ⭐ Love This Scraper? Support Us with a 5-Star Review!

We work tirelessly to keep **Google Jobs Scraper** the fastest, most accurate, and best-value job intelligence tool on Apify.

- ⚡ Automated your B2B hiring intent pipeline in Clay or n8n?
- 🚀 Saved hundreds of dollars switching from expensive legacy SERP APIs?
- 💎 Loving the clean parsed salaries, working `gstatic.com` company logos, and direct ATS apply links?

Please take 10 seconds to click the **⭐ Reviews** tab at the top of the [Apify Store page](https://apify.com/unitbytes/google-jobs-scraper) and leave a 5-star rating! Your feedback helps us ship more features, keep prices low, and maintain sub-10-second scraping speeds.

***

### ⚖️ Legal, Privacy & Compliance

This Actor extracts **publicly available job postings** indexed by Google Jobs. It does **not** access private user accounts, candidate profiles, resumes, or personally identifiable information (PII). All data is collected strictly from public employer job advertisements in compliance with GDPR and CCPA data minimization principles. Users are responsible for complying with applicable local laws and terms of service when using extracted job data.

***

### 🔍 Keywords & Search Tags

`google-jobs-scraper` • `google-for-jobs-api` • `google-jobs-api` • `scrape-google-jobs` • `job-board-scraper` • `linkedin-jobs-alternative` • `indeed-scraper-alternative` • `glassdoor-jobs-scraper` • `ziprecruiter-scraper` • `greenhouse-jobs-scraper` • `workday-jobs-scraper` • `lever-jobs-scraper` • `ashby-jobs-scraper` • `b2b-hiring-signals` • `clay-hiring-intent` • `salary-benchmarking-api` • `recruitment-automation` • `ats-job-aggregator` • `remote-jobs-scraper` • `apify-actor`

***

### 💬 Support & Custom Recruiting Pipelines

Need custom job feeds, ATS enrichment pipelines, or high-volume enterprise crawls?

- 💬 **Apify Issues**: Open a ticket in the [Apify Issues Tab](https://console.apify.com/actors/NusgplBbcd4EW6Wfl/issues)
- 📧 **Direct Email**: <contact@unitbytes.com>
- 🌐 **Publisher Homepage**: <https://unitbytes.com>

<div align="center">
  <br>
  <a href="https://apify.com/unitbytes/google-jobs-scraper?fpr=939u3w&fp_sid=gh_gjobs">
    <img src="https://img.shields.io/badge/Start_Scraping_Now-Apify-28B52A?style=for-the-badge&logo=apify&logoColor=white" height="40" alt="Start Scraping Now">
  </a>
</div>

# Actor input Schema

## `queries` (type: `array`):

Job titles or keywords to search for (e.g. 'Software Engineer', 'Data Analyst', 'Product Manager'). Supports multi-query batching: enter multiple queries to scrape all of them in a single run with cross-search deduplication.

## `locations` (type: `array`):

Cities, states, or regions to search within (e.g. 'New York, NY', 'San Francisco, CA', 'London', 'Remote'). When combined with multiple queries, searches each query × location combination.

## `country` (type: `string`):

Two-letter ISO country code for Google Jobs localization across 80+ countries (e.g. 'us', 'gb', 'ca', 'de', 'nl', 'fr', 'es', 'it', 'au', 'in', 'sg', 'ae', 'sa', 'br', 'mx', 'za'). Case-insensitive; common aliases like 'USA' or 'UK' are auto-normalized.

## `language` (type: `string`):

Interface language code (e.g. 'en', 'de', 'es'). Recommended: leave empty to allow Google to use the natural language matching the country (forcing English in countries like Germany/Netherlands can return zero results).

## `datePosted` (type: `string`):

Filter jobs by publication date.

## `employmentTypes` (type: `array`):

Filter by employment schedule type. Accepted values: 'FULLTIME', 'PARTTIME', 'CONTRACTOR', 'INTERN' (leave empty for all schedule types).

## `remoteOnly` (type: `boolean`):

Filter specifically for remote, work-from-home, or telecommute positions.

## `maxJobs` (type: `integer`):

Maximum number of total unique job listings to collect across all queries and locations. Extraction stops as soon as this limit is reached.

## `resolveApplyLinks` (type: `boolean`):

When enabled, resolves redirect links to extract the final destination employer application URL (Greenhouse, Workday, Lever, Ashby, LinkedIn, Indeed, Glassdoor).

## Actor input object example

```json
{
  "queries": [
    "Software Engineer"
  ],
  "locations": [
    "New York, NY"
  ],
  "country": "us",
  "datePosted": "any",
  "employmentTypes": [],
  "remoteOnly": false,
  "maxJobs": 50,
  "resolveApplyLinks": false
}
```

# Actor output Schema

## `results` (type: `string`):

Extracted Google Jobs listings, parsed salaries, job descriptions, and direct apply links

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "Software Engineer"
    ],
    "locations": [
        "New York, NY"
    ],
    "country": "us",
    "language": "",
    "employmentTypes": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("unitbytes/google-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "queries": ["Software Engineer"],
    "locations": ["New York, NY"],
    "country": "us",
    "language": "",
    "employmentTypes": [],
}

# Run the Actor and wait for it to finish
run = client.actor("unitbytes/google-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "Software Engineer"
  ],
  "locations": [
    "New York, NY"
  ],
  "country": "us",
  "language": "",
  "employmentTypes": []
}' |
apify call unitbytes/google-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,unitbytes/google-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/NusgplBbcd4EW6Wfl/builds/sZ2TGWFVTdFRn8eFJ/openapi.json
