DEV Community

Cover image for How to Scrape Google Jobs in 2026 (Python, MCP, and a No-Code Shortcut)
Truffle Pig Data
Truffle Pig Data

Posted on

How to Scrape Google Jobs in 2026 (Python, MCP, and a No-Code Shortcut)

Google's jobs search aggregates listings from nearly every job board and career site on the web, which makes it the single best place to collect hiring data, and one of the most awkward to collect from. There is no feed, no export, and the widget fights automation. Here is the manual approach, where it falls apart, and the shortcut: the Google Jobs Scraper on Apify, which turns a search query into structured JSON listings with direct apply links.

Disclosure: the Apify links in this post are affiliate links. If you run the Actor, I may earn a referral commission at no extra cost to you.

Does Google Jobs have an API?

No. Google has never shipped a public API for reading the jobs box, and the developer products it does offer in this space are aimed at employers publishing listings, not at anyone searching them. When people say "google jobs api" they nearly always mean a scraper consumed like an API: query and location in, structured listings out.

What the Google Jobs data looks like

The Google Jobs Scraper returns one JSON row per listing: title, company, location, source platform, full description, and the apply links, plus the structured extras Google detects.

Field Example Notes
title Senior Backend Engineer As posted
company_name Acme Corp With thumbnail when available
via LinkedIn Which platform the listing surfaced from
detected_extensions { "posted_at": "2 days ago", "schedule_type": "Full-time" } Also flags like health_insurance and paid_time_off
apply_options [{ "title": "Indeed", "link": ... }] Direct apply links per platform
description We are hiring... Full text, with job_highlights broken out

Run metadata like total_jobs_found and pages_processed comes along, so batch jobs stay auditable.

Who this is for

Recruiters mining fresh postings for leads, job board builders who need a live feed to seed their index, and analysts tracking which companies are hiring for what, where.

The manual way, and where it breaks

The jobs box is a JavaScript widget nested inside a search page, so a plain HTTP request gets you nothing. You end up with a headless browser, click-through pagination, and selectors that follow Google's markup lottery. Location targeting needs the right domain and parameters, and the apply links hide behind more clicks. Every one of those pieces is maintenance, and Google changes its end of the deal often.

The faster way: run the Google Jobs Scraper

Apify Console

  1. Open the Google Jobs Scraper and click Try for free.
  2. Set query, and optionally location, google_domain, and num_results.
  3. Run it and export the listings as JSON or CSV.

REST

curl -X POST "https://api.apify.com/v2/acts/johnvc~Google-Jobs-Scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "query": "software engineer", "location": "Austin, TX", "num_results": 50 }'
Enter fullscreen mode Exit fullscreen mode

Endpoint details: the Apify API docs.

Scrape Google Jobs with Python

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("johnvc/Google-Jobs-Scraper").call(
    run_input={
        "query": "data analyst",
        "location": "United Kingdom",
        "google_domain": "google.co.uk",
        "num_results": 100,
    }
)

for job in client.dataset(run["defaultDatasetId"]).iterate_items():
    posted = (job.get("detected_extensions") or {}).get("posted_at")
    print(job["title"], job["company_name"], job["via"], posted)
Enter fullscreen mode Exit fullscreen mode

Language and country inputs cover 103 languages and 184 Google domains, so localized collection is a parameter change, not a rewrite.

Track jobs posted in the last 3 days

Freshness is most of the value in jobs data. The task Track jobs posted in the last 3 days filters to recent postings, the feed a sourcing workflow actually wants.

Pull nursing jobs in Texas with apply links

A concrete vertical example: Track nursing jobs in Texas with apply links shows a location-scoped search where apply_options carries the direct links per platform.

Run job searches from Claude via MCP

Through Apify's MCP server the Actor becomes a tool your AI assistant can call, so "find me remote backend roles posted this week" executes a real search mid-conversation. Three tasks show the pattern: remote software engineer jobs via MCP, remote customer service jobs via MCP, and checking a company's job ads in Claude Cowork. More about Claude at claude.ai.

FAQ about scraping Google Jobs

Is scraping Google Jobs with a scraper legal?

The listings are public data that employers actively want distributed, and the Actor collects only what any search visitor sees. Terms of service and local law still vary by use, so for a commercial product built on scraped data, get proper advice rather than a blog paragraph.

How much does the Google Jobs scraper cost to run?

There is no monthly rental fee; you pay for what you run against your Apify account, and num_results bounds each search up front. New accounts include free platform credit, which is enough to evaluate the output shape on your own queries.

Does the scraper return salary and experience level?

Mostly no, and you should plan around that. There is no numeric salary field and no experience-level field in the output; compensation appears only when it happens to be written inside the description text or highlights.

Can Claude run this jobs scraper over MCP?

Yes. Connect the Apify MCP server and the Actor is a callable tool; the three MCP tasks above are working configurations for Claude and Claude Cowork.

Can I schedule the scraper for a daily jobs feed?

Yes, that is the intended pattern for tracking. Save a query as a task, attach a daily schedule, and pair it with the last-3-days filter for a rolling feed of fresh postings. Start from the Google Jobs Scraper page.

More from Truffle Pig Data

Longer treatments of the same Actor: How to Scrape Google Jobs Listings on Medium, the LinkedIn guide, and the Peerlist developer guide.

Wrapping up

Hiring data is a strong signal, and Google already aggregated it for you. Run one query through the Google Jobs Scraper and see the listings land as JSON.

Top comments (0)