Google Jobs Scraper for Job Search, Listings and Salaries avatar

Google Jobs Scraper for Job Search, Listings and Salaries

Pricing

from $2.36 / 1,000 jobs

Go to Apify Store
Google Jobs Scraper for Job Search, Listings and Salaries

Google Jobs Scraper for Job Search, Listings and Salaries

Scrape Google Jobs in 36 supported countries for job search and job postings: titles, companies, locations, available salary figures, descriptions, highlights and direct apply links. Includes new-job monitoring. Pay per saved job, no start fee. Maintained by CleanScrape.

Pricing

from $2.36 / 1,000 jobs

Rating

0.0

(0)

Developer

CleanScrape

CleanScrape

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

4

Monthly active users

2 days ago

Last modified

Share

Google Jobs Scraper

Collect job listings from Google Jobs, the job search built into Google that gathers postings from LinkedIn, Indeed, Glassdoor, ZipRecruiter, company career sites and many local job boards. For each job you get:

  • The job: title, company, location, the site it was posted on, posted date (as text and as a number of days), job type (full-time, part-time, contractor, internship), work from home.
  • Salary as numbers: minimum, maximum, currency and period (hour, month, year), plus Google's original text.
  • The description Google supplies, and its highlights (qualifications, benefits, responsibilities) as lists. descriptionIsPreview marks a shortened description.
  • Direct apply links: every site where you can apply, such as the company's own page, LinkedIn and Indeed, with the first one in its own column.

Type job titles and locations, or paste a Google search link. Works in 36 countries. Turn on monitoring and a scheduled run returns only jobs that are new since the last run.

$2.95 per 1,000 jobs (10 to 20% less on paid Apify plans). No start fee. Jobs that are duplicates or that monitoring skips are not charged. Maintained by CleanScrape.

Watch the walkthrough

Let's use data analyst jobs as an example: search New York, Chicago and Austin, get 150 jobs in about 40 seconds, and compare what each city pays. Use your own job titles and cities for another search.

Quick start

  1. Under Job titles or keywords, type one or more titles, such as registered nurse or python developer.
  2. Under Locations, type a city, region or remote (optional; leave it empty to search the whole country).
  3. Pick the Country and click Start.

You can paste several titles or locations on separate lines, even into one entry. Each title is searched in each location. The results open in a table you can export to Excel, CSV or JSON.

Input for the API or a scheduled task:

{
"queries": ["registered nurse", "nurse practitioner"],
"locations": ["Chicago, IL", "Remote"],
"country": "us",
"maxJobsPerSearch": 100,
"postedWithin": "week"
}

How it finds more than 10 jobs

Google Jobs shows 10 jobs per search. To find more, the Actor also runs close variations of each search: only jobs posted this week, refinements such as remote, part time, senior or entry level (in the country's own language: Vollzeit and Homeoffice in Germany, télétravail in France, 正社員 in Japan), and jobs posted this month or today. Each job is saved once. The foundBy column shows which variation found it.

A search goes on only while its pages keep adding new jobs, so it can end below your maximum: with a rare title in a small town, when your searches overlap (similar titles or nearby cities find the same jobs, and each job is saved once), and in monitoring runs where most jobs were saved before. The run report says why each search ended. The maximum is a limit, not a guaranteed result count.

Runs that mostly find nothing new stop early. Every search loads at least one Google page, whether or not it finds jobs, and only new jobs are charged. When a run's searches keep finding nothing new (long lists of narrow titles in small places, or monitoring runs where almost every job was saved before), the run stops starting new searches and says so in its status. Before stopping, it checks the remaining searches with one Google page each. The jobs saved are kept, the run status says how many searches were checked, and the next run with the same searches starts with the ones not checked yet, so a scheduled task covers the whole list over a few runs. Runs whose searches find jobs are not affected.

Several searches run at once, and a slow Google answer is retried in parallel instead of waited for. Measured in our tests:

JobTime
50 nurse jobs in Chicago (the default input)31 seconds
240 jobs from 4 searches in Germany1 minute
191 jobs from 2 searches across India84 seconds
600 jobs from 20 searches (10 titles in 2 cities)2 minutes 20 seconds

Choose a ready-to-run example

Each example opens with its input filled in. Change the titles or places and run it.

ExampleWhat it does
Export registered nurse jobs in Chicago with salaries50 nurse jobs with pay as numbers, job type and apply links.
Find remote software engineer jobs in the US100 remote software jobs with full descriptions.
Compare data analyst salaries across US cities120 jobs in New York, Chicago and Austin, shown in the Salaries view.
Scrape job listings in Germany from Google Jobs160 Buchhalter and Pflegefachkraft jobs in Berlin and München.
Scrape Java developer and data analyst jobs in India120 tech jobs across India.
Find recent entry-level marketing jobs in New YorkSearch entry-level marketing listings in New York from the past week.

Use it from the API

curl -X POST "https://api.apify.com/v2/acts/cleanscrape~google-jobs-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["registered nurse"], "locations": ["Chicago, IL"], "maxJobsPerSearch": 50}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("cleanscrape/google-jobs-scraper").call(run_input={
"queries": ["registered nurse"],
"locations": ["Chicago, IL"],
"maxJobsPerSearch": 50,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], job["company"], job["salaryMin"], job["applyUrl"])

What you get

One row per job (a real row from a test run; the description and lists are shortened here):

{
"jobId": "aIEjd-PJfUav6kqxAAAAAA==",
"title": "Illinois Masonic Registered Nurse Hiring Event - October 28, 2026",
"company": "Advocate Health Care",
"location": "Chicago, IL",
"via": "LinkedIn",
"postedAgo": "20 hours ago",
"postedDaysAgo": 0.83,
"postedAtEstimate": "2026-10-05T18:38:25.943Z",
"employmentType": "Full-time",
"workFromHome": null,
"salaryText": "$38.20–$57.30 an hour",
"salaryMin": 38.2,
"salaryMax": 57.3,
"salaryCurrency": "USD",
"salaryPeriod": "hour",
"qualification": null,
"benefits": null,
"description": "Please join us for an upcoming Nursing Job Fair.\n\n📅 Wednesday, October 28, 2026\n\n⏰ 9:30 a.m. – 3:00 p.m.\n\n📍 Ringel Room, Center for Education Building\n\n🏥…",
"descriptionIsPreview": false,
"highlights": {
"Qualifications": [
"Be dressed and prepared to interview",
"Must have valid IL RN license",
"…"
],
"Responsibilities": [
"Engages in unit councils, professional governance, and quality initiatives to improve care processes and apply evidence-based practices",
"Utilizes the nursing process to assess, plan, diagnose, implement, and evaluate nursing care, engaging patients and families through the continuum of care",
"…"
]
},
"applyUrl": "https://www.linkedin.com/jobs/view/illinois-masonic-registered-nurse-hiring-event-october-28-2026-at-advocate-health-care-4473668925?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic",
"applyOptions": [
{
"source": "LinkedIn",
"url": "https://www.linkedin.com/jobs/view/illinois-masonic-registered-nurse-hiring-event-october-28-2026-at-advocate-health-care-4473668925?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic"
}
],
"companyLogoUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTMBXnH7kWEM0KCou93-cJr_bDU3xAkhG43tuKz&s=0",
"googleJobsUrl": "https://www.google.com/search?ibp=htl;jobs&q=registered+nurse+Chicago%2C+IL&htidocid=aIEjd-PJfUav6kqxAAAAAA%3D%3D&hl=en&gl=us",
"searchQuery": "registered nurse",
"searchLocation": "Chicago, IL",
"country": "US",
"foundBy": "search",
"scrapedAt": "2026-10-06T14:38:26.367Z"
}

The dataset has three views: Overview, Salaries (the salary numbers side by side) and Details (descriptions, highlights and all apply links). A blank value means Google did not show it, not zero.

Countries

United States, United Kingdom, Canada, India, Germany, France, Spain, Italy, Austria, Switzerland, Denmark, Portugal, Greece, Brazil, Mexico, Argentina, Chile, Colombia, Peru, Japan, Singapore, Malaysia, the Philippines, Indonesia, Thailand, Vietnam, Hong Kong, Taiwan, Pakistan, the United Arab Emirates, Saudi Arabia, Qatar, Egypt, South Africa, Nigeria and Kenya.

This Actor does not currently support Australia, New Zealand, Ireland, the Netherlands, Belgium, Luxembourg, the Nordic countries other than Denmark, Poland, Czechia, Romania, Hungary, Türkiye, Israel or South Korea. Its supported countries are the 36 listed above. A location that names one of them, such as Helsinki, Finland, is reported at once and costs nothing.

Pick the country of your locations. A location that names its country, such as Berlin, Germany, is searched in that country whatever the Country setting.

Outside English-speaking countries, type the title in the local language (Buchhalter, not accountant, in Germany): Google matches the words against postings written in that language. Field names and labels such as "Full-time" are always in English; titles and descriptions stay in the language they were posted in.

Monitoring: only new jobs

Turn on Only jobs not saved before, save the input as a task and schedule it (daily, for example). Each run returns only jobs that earlier runs did not save, and the skipped jobs are not charged. A search stops once Google's pages mostly show jobs saved before, so each run checks the top results of every search instead of paging through jobs you already have. A search Google had no jobs for is checked with one phrasing on the next runs and with every phrasing again weekly, and a search starts with the phrasing that found jobs last time. When adding "jobs" to a title ("nurse jobs Leeds") has found nothing for that title, the other places skip that phrasing for a week.

Runs with the same searches share one history automatically. To keep the history when you change the searches, give it a Watch name, such as Nurse jobs Chicago. Jobs are remembered for 90 days, in a key-value store in your own Apify account. Two runs with the same watch cannot overlap.

Pricing

You pay per job saved: $2.95 per 1,000 jobs. Paid Apify plans pay less: $2.655 (Bronze), $2.5075 (Silver) or $2.36 (Gold and higher) per 1,000. There is no start fee, and outside monitoring runs you pay nothing for searches that find no jobs. Some examples:

RunJobsCost
One search, default settings50$0.15
10 titles in 2 cities, 30 each600$1.77
One broad search at the maximum300$0.89

Set Maximum cost per run under Run options to cap a run; the Actor stops cleanly just below it.

From November 22, 2026: monitoring checks. A run with Only jobs not saved before checks every search on every run, and each check loads a Google page even when nothing is new. From November 22, 2026, each search checked in such a run costs $6 per 1,000 searches ($5.40 Bronze, $5.10 Silver, $4.80 Gold and higher), charged once per search per run and only after Google answered it. For example, a daily check of 100 searches costs $0.60 a day plus the new jobs. Job prices and runs without monitoring don't change.

Run report

Each run saves a readable summary (Output tab > Run summary) and the same as JSON (SUMMARY): every search with its outcome, jobs saved and any note, such as a search that Google had no jobs for, or one that ended below the maximum because further pages repeated jobs already saved.

Use it from an AI agent

This Actor works as a tool in Claude, Cursor and other AI assistants that support MCP, through Apify's MCP server. Add this server and sign in with your Apify account when asked:

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

Then ask in plain words, for example: "Find registered nurse jobs in Chicago posted this week and list the ones that show a salary." The assistant runs the Actor in your Apify account and reads the results. The price per result is the same as in Console.

Common questions

Is there an official Google Jobs API?

No. Google has no public API for Google Jobs search results. Google's Cloud Talent Solution is a different product for searching your own job postings. This Actor reads the public Google Jobs results.

Why do I get fewer jobs than I asked for?

Google shows 10 jobs per search page, and the Actor finds more through variations of the search. When the variations stop finding new jobs, the search ends. That happens with rare titles, small places and strict filters, and when searches overlap: similar titles or nearby cities find the same jobs, which are saved once, for the first search that found them. The run report gives the reason for each search. A run whose searches mostly find nothing new also stops early (see How it finds more than 10 jobs). Try a broader title, a nearby bigger city, or more distinct titles.

How do I get only new jobs every day?

Turn on Only jobs not saved before, save the input as a task, then add a schedule to it (Schedules > Create new). Each run then returns only new jobs.

Can I search remote jobs?

Yes. Type remote as the location, or leave the location empty and add remote to the title. Jobs Google marks as remote have workFromHome: true.

How do I export Google Jobs to Excel or CSV?

Open the run's Output or Storage tab and click Export. Pick Excel, CSV or JSON.

Are salaries converted?

No. Each salary keeps its currency (salaryCurrency) and period (salaryPeriod), as numbers you can sort and filter. Salary availability varies; a missing salary means Google did not supply one for that listing.

The Actor collects job listings that Google shows publicly, without logging in. Job listings are published to be found. Check the rules that apply to how you use the data, especially for personal data in descriptions, and follow the terms of the sites you apply through.

More tools from CleanScrape

Support

Questions, a missing field or a search that does not work as expected: open an issue on the Actor's Issues tab or write to contact.cleanscrape@gmail.com.

Happy with the results? A quick review on the Store page would help me a lot. If something’s off, tell me in the Issues tab and I’ll fix it. – Niko / CleanScrape

This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by Google.