Google Jobs Scraper

Extract public Google Jobs listings by query and location. Export titles, companies, locations, source sites, dates, snippets, salaries, and apply links.

Data fields

FieldTypeDescription
querystringValue exported as query.
titlestringValue exported as title.
companystring | nullValue exported as company.
locationstring | nullValue exported as location.
sourcestring | nullValue exported as source.
postedAtstring | nullValue exported as postedAt.
descriptionSnippetstring | nullValue exported as descriptionSnippet.
salarystring | nullValue exported as salary.

Input preview

queriesJob search queries *
locationLocation
countryCountry / Google market
languageLanguage
maxItemsMaximum jobs
datePostedDate posted

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Find public job listings from Google Jobs by keyword and location, then export clean rows to Apify datasets, CSV, JSON, Excel, Google Sheets, or your own API workflow.

What does Google Jobs Scraper do?

Google Jobs Scraper searches the public Google Jobs experience for the job phrases and locations you provide. It returns structured job listing records with the title, company, location, source, posted date, salary text when visible, employment type, description snippet, and application links.

Use it when you need repeatable job-market data without manually opening Google, copying cards, and cleaning spreadsheets.

Who is it for?

  • 🧑‍💼 Recruiters tracking hiring demand across cities or job families.
  • 📈 Labor-market analysts monitoring public job-posting trends.
  • 🧲 Sales teams building account lists from companies that are actively hiring.
  • 📰 Job-board operators checking what roles are visible for target searches.
  • 🧪 Researchers collecting public job snippets for market studies.

Why use this actor?

Google Jobs is a useful discovery layer because it aggregates public job listings from many sites. This actor helps you turn that search surface into structured data with consistent field names.

What data can I extract?

Field Description
query Search phrase that produced the listing
title Job title
company Employer name when visible
location Job location or remote/hybrid text
source Publisher shown by Google Jobs
postedAt Visible posted-date or freshness label
descriptionSnippet Public snippet from the job card/detail panel
salary Salary text when Google displays it
employmentType Full-time, part-time, contract, internship, or similar label
jobUrl First normalized job/application URL
applyLinks All visible application links collected from the listing
scrapedAt Timestamp when the row was saved

Quick start

  1. Add one or more job search queries.
  2. Enter a location such as New York, NY, London, or Remote.
  3. Set a small maxItems value for your first test.
  4. Run the actor.
  5. Open the dataset and export the results.

Input example

{
  "queries": ["software engineer", "data analyst"],
  "location": "New York, NY",
  "country": "US",
  "language": "en",
  "maxItems": 20,
  "datePosted": "any",
  "employmentType": "any",
  "useProxy": true,
  "proxyGroups": ["RESIDENTIAL"]
}

Input fields

JSON key Label Description
queries Job search queries One or more job phrases to search.
location Location City, region, country, or remote-work phrase appended to each query.
country Country / Google market Two-letter country code for Google market and proxy geotargeting.
language Language Language code for visible labels.
maxItems Maximum jobs Maximum number of listings to save across all queries.
datePosted Date posted Optional visible Google Jobs date filter.
employmentType Employment type Optional visible Google Jobs employment-type filter.
useProxy Use Apify Proxy Keep enabled for the most reliable Google access.
proxyGroups Proxy groups Proxy groups to use; RESIDENTIAL is the default.

Job search queries

Add the job phrases you want to search. Examples:

  • software engineer
  • registered nurse
  • warehouse manager
  • product marketing manager

Location

Use the same style you would type into Google Jobs. Examples:

  • Austin, TX
  • Berlin, Germany
  • Remote
  • United Kingdom

Country and language

Country controls the Google market and proxy geotargeting. Language controls visible labels where Google supports it.

Maximum jobs

Use a low number for testing. Increase it once your query returns the expected kind of listings.

Optional filters

The actor can attempt visible Google Jobs filters for date posted and employment type. Availability may vary by country, language, and Google layout.

Output example

{
  "query": "software engineer",
  "title": "Software Engineer",
  "company": "Example Company",
  "location": "New York, NY",
  "source": "LinkedIn",
  "postedAt": "3 days ago",
  "descriptionSnippet": "Build and maintain production services...",
  "salary": "$120K–$160K a year",
  "employmentType": "Full-time",
  "jobUrl": "https://example.com/jobs/123",
  "applyLinks": [
    { "label": "Apply on LinkedIn", "url": "https://example.com/jobs/123" }
  ],
  "scrapedAt": "2026-06-29T08:00:00.000Z"
}

Tips for better results

  • 🎯 Use specific job titles instead of very broad terms.
  • 🗺️ Include a clear location for local hiring searches.
  • 🔁 Run multiple focused queries instead of one huge vague query.
  • 🧪 Start with maxItems 10–20 before scaling.
  • 🌐 Keep proxy enabled for the most reliable Google access.

Common use cases

Recruiting market maps

Track how many public jobs appear for target roles across several cities.

Sales prospecting

Find companies hiring for technologies or departments that match your product.

Job board monitoring

Compare job visibility for your niche across Google Jobs searches.

Labor-market research

Collect snapshots of public listing text for recurring demand analysis.

Integrations

You can connect the dataset to:

  • Google Sheets for lightweight monitoring.
  • Make or Zapier for alerts when new listings appear.
  • A CRM enrichment workflow for hiring-signal prospecting.
  • A data warehouse for longer-term job-market trend analysis.
  • Apify webhooks for post-run automation.

API usage

The examples below show Node.js, Python, and cURL ways to run the actor.

API usage with Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/google-jobs-scraper').call({
  queries: ['software engineer'],
  location: 'New York, NY',
  maxItems: 20,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/google-jobs-scraper').call(run_input={
    'queries': ['software engineer'],
    'location': 'New York, NY',
    'maxItems': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~google-jobs-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"queries":["software engineer"],"location":"New York, NY","maxItems":20}'

MCP usage

Use the Apify MCP server to run this actor from Claude Code, Claude Desktop, or another MCP-compatible agent.

MCP URL pattern:

https://mcp.apify.com/?tools=fetch_cat/google-jobs-scraper

Add it in Claude Code:

claude mcp add apify-google-jobs "https://mcp.apify.com/?tools=fetch_cat/google-jobs-scraper"

Claude Desktop JSON config example:

{
  "mcpServers": {
    "apify-google-jobs": {
      "url": "https://mcp.apify.com/?tools=fetch_cat/google-jobs-scraper"
    }
  }
}

Example prompts:

  • “Run Google Jobs Scraper for data analyst jobs in Chicago and summarize the companies.”
  • “Find 20 remote product manager roles and export the dataset fields.”
  • “Compare software engineer listings in Austin and Denver.”

Scheduling

Schedule recurring runs to monitor the same query weekly or daily. Keep maxItems aligned with how many rows you need for each snapshot.

Data freshness

Google Jobs results change frequently. Each run captures the public results visible during that run. Use scrapedAt to separate snapshots.

Limits and caveats

Google may vary the visible layout by country, language, query, and traffic conditions. Some listings may not show salary, employment type, or direct application links. Fields that are not visible are returned as null or an empty list.

Proxy guidance

Google can rate-limit automated access. The actor supports Apify Proxy and defaults to a reliable proxy setup. For small tests, keep the prefilled settings. For larger production runs, use conservative limits and schedule runs instead of sending very large batches at once.

Troubleshooting

Why did my run return fewer jobs than requested?

Google may show fewer public jobs for a query/location combination, or the page may expose fewer unique listings than your limit. Try a broader query or a different location.

Why are salary or employment type missing?

Those fields are only returned when Google displays them publicly for the listing.

Why did Google block the run?

Reduce request volume, keep proxy enabled, and try a smaller batch. Google anti-bot behavior can vary by region and time.

Legality and responsible use

This actor is intended for public job-listing information. Make sure your use case complies with applicable laws, platform terms, privacy rules, and internal policies. Do not use extracted data for spam, discrimination, or prohibited employment decisions.

Version notes

v0.1 focuses on public Google Jobs listing rows by query and location. Future versions may add stronger filter coverage, richer detail extraction, and additional output normalization after reliability testing.

Support

If a run fails or a query returns unexpected data, share enough detail to reproduce it:

  • the Apify run URL,
  • the exact input JSON,
  • the expected output,
  • the actual output you received,
  • and a reproducible public URL or Google Jobs query/location example.

Field glossary

source is the site label shown by Google Jobs, often a job board or employer career site. applyLinks contains visible outbound links associated with a listing. descriptionSnippet is not guaranteed to be the full job description.

Best practices

Run targeted searches, deduplicate downstream by title/company/location, and store recurring snapshots if you need trends over time.

Export formats

Apify datasets can be exported as JSON, CSV, Excel, XML, RSS, and HTML table views from the run page or API.

Automation patterns

  • Daily alert for new remote jobs matching a niche keyword.
  • Weekly city-by-city hiring report.
  • CRM enrichment based on companies hiring for target roles.
  • Competitive hiring watch for specific job families.

Privacy note

The actor does not require your Google account and does not scrape private account-only data.

Final checklist for users

  • Choose focused queries.
  • Set a clear location.
  • Keep the first run small.
  • Review the dataset sample.
  • Scale gradually.

Privacy and data handling

This Actor only requests the permissions needed to run the input you provide. It uses your input (such as URLs, search terms, identifiers, filters, and limits) only to fetch the requested public data from the relevant source site or API for this Actor, then writes results to your Apify dataset/key-value store.

Data may pass through Apify platform services and Apify Proxy during the run, and requests are sent only to the target site or public data provider required for this Actor's results. FetchCat does not send your inputs or outputs to advertising networks, data brokers, or model-training services, and does not retain run data outside Apify storage after the run except when you explicitly share run details for transient support debugging.

You are responsible for using this Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs. Review the output before storing, sharing, or combining it with other data.

Common questions

Questions and answers reused from the canonical actor README.

Can I use this actor as a Google Jobs API?

Yes. Run it through the Apify API, SDKs, webhooks, or MCP server and export the resulting dataset as JSON, CSV, Excel, or through an integration.

Does it require a Google account?

No. The actor is designed for public Google Jobs results and does not need your Google login.

Can I schedule recurring monitoring?

Yes. Use Apify schedules to run the same query and location daily or weekly, then compare rows by title, company, location, and scrapedAt.