Google Jobs Scraper — Apply Links, Salaries & New-Job Monitor
Pricing
from $1.00 / 1,000 jobs
Google Jobs Scraper — Apply Links, Salaries & New-Job Monitor
Google Jobs listings by keyword and location in 14 countries: title, company, salary, schedule, full description, highlights and the apply link of every site carrying the posting. Keyword × location fan-out, de-duplicated, monitor mode for new jobs. Export to CSV, JSON or API.
Pricing
from $1.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Steady Scrape
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Features
Share
Google Jobs Scraper — apply links, salaries and a new-job monitor
Search Google Jobs by job title and location and get, for every posting: title, company, location, the site Google credits, salary as numbers, schedule, benefits, the full description, Google's highlights (qualifications, responsibilities, benefits) and the apply link on every site that carries the job — LinkedIn, Indeed, ZipRecruiter, the employer's own careers page.
Google Jobs aggregates LinkedIn, Indeed, Glassdoor, ZipRecruiter, Monster, Workday, Greenhouse, Lever and thousands of company career sites, so one search here stands in for a dozen scrapers.
US$0.006 per search + US$0.001 per job from 2026-11-27 (US$0.003 per search until then). A full search of 10 jobs is US$0.016. Duplicates, jobs a monitor run already delivered and searches Google did not answer cost nothing.
Read this first: 10 jobs per search, by design
Google gives the first page of a jobs search — 10 jobs — to any client that is not a signed-in browser session; the "load more" behind it answers only to that browser's cookies. This Actor does not run a browser and does not pretend otherwise. Volume comes from many narrow searches, which is also how you get better data:
keywords×locations×jobTypesmultiply into searches: 5 titles × 20 cities × 2 job types = 200 searches and up to 2,000 jobs, de-duplicated across searches (a job found twice is delivered and charged once).datePostednarrows each search to what is fresh, and monitor mode turns a daily schedule into a feed of new postings only.
Measured on 2026-11-12: 4 titles × 5 US cities × 2 job types = 40 searches → 392 unique jobs in 336 seconds (Google takes up to a minute and a half to answer a jobs search through Apify's proxy since November 2026).
If you need the 300 results of one single search, use an Actor that rents a browser farm, and expect to pay for it.
What makes it different
- Every apply link, per site. Each site that carries the posting comes with its own link. Since late October 2026
Google answers its
google.com/goto?url=…redirects with a browser check that this Actor does not pass, so most links stay as Google's address: it opens the posting in any browser, but it is not the site's own URL. The ones Google still answers are followed one step and cleaned of its tracking parameters (https://www.linkedin.com/jobs/view/…). The check is never passed: the IP it came to is not asked again, the next links are asked from another IP (a datacenter proxy session), and a link checked on three IPs stays as Google's link. - Salary you can sort by.
$100K–$127K a year,$2.1K–$2.2K a week,£22 an hour,₹9L–₹14L a yearbecomemin,max,currencyandperiod— thousands, lakhs and single rates included — next to the text as Google wrote it. - Monitor mode.
onlyNewJobsremembers every job it delivered to you and skips it next time: schedule it daily withdatePosted: "3days"and each run is only what is new. Jobs cut off by your spending limit are not remembered, so the next run delivers them. - Fan-out with one budget. Searches run ten at a time; rows and charges leave one at a time, so
maxJobsand your spending limit are exact, not approximate. - Every search leaves a trace. A search Google answers without jobs is a
no_jobsrow with its reason (the row is free; the search fee applies, because Google answered); a search Google did not answer in three attempts is a freeblockedrow and is not charged. If Google asks the search proxy for verification three times in a row, no more searches are sent and the rest are freeblockedrows saying so. A run never ends with an empty dataset and no explanation. - Fails loudly when Google changes. If a job card comes without its title or company the run stops with a clear error instead of filling your dataset with half-empty rows.
Use cases
- Job boards and aggregators: fill a niche board from Google's aggregated feed, with the apply link of your preferred source.
- Recruiting and staffing: who is hiring for which roles in which cities, daily, with the ATS or board each employer posts on.
- Sales intelligence: companies hiring for a role are companies buying for that function. Filter by title, city
and recency, and enrich from
company. - Salary and labour-market research: pay ranges by title and metro, share of remote postings, posting volume over time.
- Job alerts: a scheduled monitor run delivering only new postings to a webhook, Slack, Google Sheets, Make or n8n.
Input
{"keywords": ["software engineer", "data analyst"],"locations": ["New York", "Austin, TX", "Seattle"],"jobTypes": ["full_time", "contract"],"datePosted": "week","country": "us","onlyNewJobs": false}
| field | what it does |
|---|---|
keywords | Job titles or keywords. Each is searched in each location as "keyword jobs in location". Outside English-speaking countries, write them in the country's language (see below). |
locations | Cities, regions or countries. Empty: each keyword is searched without a place. |
queries | Searches in your own words, sent as written: empleos de marketing en Madrid. Use it for languages other than English. |
country | Two-letter code of the Google that answers. Default us. See the list below. |
datePosted | any, today (since yesterday), 3days, week, month — Google's own filter, exact. |
jobTypes | full_time, part_time, contract, internship. Each one is its own search. It steers Google's ranking; filter exactly on the scheduleType column. |
remoteOnly | Adds Google's remote filter to every search. |
onlyNewJobs | Monitor: skips jobs an earlier run of yours already delivered. |
resolveApplyLinks | Default on. Off: links stay as Google's redirect addresses. |
maxJobsPerSearch | 1–10. |
maxJobs | Ceiling for the whole run; 0 for none. |
Search in the country's language. Outside English-speaking countries, Google Jobs finds jobs for searches written
in the country's language. On 2026-11-09 software engineer found no job in Germany, France, Spain and the Netherlands, while
Softwareentwickler, développeur, desarrollador and ontwikkelaar found 10 each. Google still answers such a search,
so it is charged as a search: outside English-speaking countries, write keywords (or queries) in the country's
language. A search that finds nothing outside an English-speaking country says this in its row's reason and in the
run's status message (since build 1.0.8). English titles find jobs where English is the language of the job market:
us, gb, ca, in and the like.
Countries. Jobs came back in September 2026 for us, gb, ca, in, de, fr, es, it, br, mx, za,
sg, ae and ph, and in November for nl in Dutch. Google showed no job listings at all in au, ie and jp. In
the European Union Google shows a preview of about 400 characters instead of the full description, and no
highlights: that is what the row carries.
The page is always asked for in English, so postedText and scheduleType read the same in every country; titles and
descriptions stay in the language of the posting.
Output
One row per job:
{"status": "ok","reason": null,"search": { "query": "registered nurse jobs in Seattle full time", "keyword": "registered nurse", "location": "Seattle", "jobType": "full_time", "country": "us" },"position": 6,"jobId": "CKZ42SVlMJJ0VVvdAAAAAA==","title": "Ambulatory RN (Outpatient Clinic)","company": "VTech Solution Inc","companyLogo": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQoJvqD_A…","location": "Seattle, WA","via": "Indeed","postedText": "5 days ago","postedAt": "2026-09-15T03:02:06.821Z","scheduleType": "Full-time and Contractor","remote": false,"salary": { "text": "$2.1K–$2.2K a week", "min": 2100, "max": 2200, "currency": "$", "period": "week" },"tags": ["No degree mentioned"],"description": "Job Summary\n\nWe are seeking a dedicated and experienced Ambulatory Registered Nurse (RN) to join our outpatient care tea…","highlights": [{ "title": "Qualifications", "items": ["RN License for Washington (Required)", "…"] },{ "title": "Benefits", "items": ["No weekends, No Call, no holidays", "…"] },{ "title": "Responsibilities", "items": ["This vital role involves providing comprehensive nursing care to patients in a fast-paced outpatient setting, …", "…"] }],"applyLinks": [{ "publisher": "Indeed", "url": "https://www.indeed.com/viewjob?jk=93dde939dcf8fb55" },{ "publisher": "Glassdoor", "url": "https://www.glassdoor.com/job-listing/jv?jl=1010262990846" },{ "publisher": "SimplyHired", "url": "https://www.simplyhired.com/job/tSHCJDp9JZ9eYqRK-HVnZcQ3E5Bplzph-VLSlqGZLS4vZzN5pa8BIQ" }],"googleUrl": "https://www.google.com/search?ibp=htl;jobs&q=registered+nurse+jobs+in+Seattle+full+time&htidocid=CKZ42SVlMJJ0VVvdAAAAAA%3D%3D…","scrapedAt": "2026-09-20T03:02:06.821Z"}
| field | notes |
|---|---|
status | ok for a job; no_jobs, blocked or unreadable (a page the Actor could not read; not charged) for a search that delivered none, with the reason in words. |
search | The search that found the job first: its words, keyword, location, job type and country. |
position | 1–10, the rank Google gave the job in that search. |
jobId | Google's id of the posting, the key for de-duplication and for the monitor. |
via | The site Google credits the posting to. |
postedText, postedAt | Google's words ("3 days ago") and the instant they name, counted back from scrapedAt. null when Google prints no age. |
scheduleType | Full-time, Part-time, Contractor, Internship or a combination, as Google prints it. |
remote | true when Google lists the job under "Anywhere" or tags it "Work from home". |
salary | null when Google prints none. currency is the sign Google prints ($, £, €, ₹). |
tags | Google's other chips: benefits and "No degree mentioned". |
description | The full posting text, line breaks kept (a ~400-character preview in the EU). |
highlights | Google's summary of the posting by section; empty when Google made none. |
applyLinks | Every site that carries the posting, in Google's order; the first is the one it credits. |
googleUrl | The job on Google. |
The run also writes a SUMMARY record: searches per status, jobs, duplicates skipped, jobs the monitor skipped,
requests made, apply links left unresolved, the times Google asked for verification (verificationPages) and the times
it answered with its web results instead of its jobs list (webResultsPages: asked again once, then their box of up to
three jobs is delivered).
Cost
| run | you pay (from 2026-11-27) |
|---|---|
| 1 search, 10 jobs | US$0.016 |
| 40 searches, 389 jobs (4 titles × 5 cities × 2 job types) | US$0.63 |
| 200 searches a day on a monitor that finds 150 new jobs | US$1.35 a day |
The search fee pays for the Google SERP proxy request behind each search; it is charged only when Google answers. Set a maximum charge per run in the run options and the Actor stops exactly there.
Limits
- 10 jobs per search (see above), and at most 2,000 searches per run.
- Google's ranking decides which 10. Narrow searches (title + city + job type + date) beat broad ones.
- Outside English-speaking countries Google lists jobs for searches in the country's language; an English title there can find none and is still charged as a search.
- Job types steer the ranking rather than filter: a "contract" search can list a full-time job.
scheduleTypetells. - No company ratings, no "similar jobs", no sign-in features.
- Google changes its page without notice. The Actor is tested daily; if something breaks, open an issue and it gets fixed fast.
Is it legal?
The Actor reads public search results, the same ones any visitor sees without an account, and collects no personal data beyond what employers publish in a job posting. You are responsible for how you use the data and for complying with the terms and laws that apply to you, including GDPR when postings name a contact person.