Google Jobs Scraper — Apply Links, Salaries & New-Job Monitor avatar

Google Jobs Scraper — Apply Links, Salaries & New-Job Monitor

Pricing

from $1.00 / 1,000 jobs

Go to Apify Store
Google Jobs Scraper — Apply Links, Salaries & New-Job Monitor

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 real 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

Steady Scrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 real apply link on every site that carries the job — LinkedIn, Indeed, ZipRecruiter, the employer's own careers page — not Google's redirect.

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.003 per search + US$0.001 per job. A full search of 10 jobs is US$0.013. 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 × jobTypes multiply 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).
  • datePosted narrows each search to what is fresh, and monitor mode turns a daily schedule into a feed of new postings only.

Measured on 2026-09-20: 4 titles × 5 US cities × 2 job types = 40 searches → 389 unique jobs, 2,006 apply links, in 161 seconds.

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

  • Real apply links. Google hides every apply link behind google.com/goto?url=…. Each one is followed one step and cleaned of Google's tracking parameters, so you get https://www.indeed.com/viewjob?jk=93dde939dcf8fb55. 2,005 of 2,006 links resolved in the run above; a link Google does not answer keeps Google's address, which still works.
  • Salary you can sort by. $100K–$127K a year, $2.1K–$2.2K a week, £22 an hour, ₹9L–₹14L a year become min, max, currency and period — thousands, lakhs and single rates included — next to the text as Google wrote it.
  • Monitor mode. onlyNewJobs remembers every job it delivered to you and skips it next time: schedule it daily with datePosted: "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 maxJobs and your spending limit are exact, not approximate.
  • Every search leaves a trace. A search without jobs is a free no_jobs row; a search Google did not answer in three attempts is a free blocked row and is not charged. 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
}
fieldwhat it does
keywordsJob titles or keywords. Each is searched in each location as "keyword jobs in location".
locationsCities, regions or countries. Empty: each keyword is searched without a place.
queriesSearches in your own words, sent as written: empleos de marketing en Madrid. Use it for languages other than English.
countryTwo-letter code of the Google that answers. Default us. See the list below.
datePostedany, today (since yesterday), 3days, week, month — Google's own filter, exact.
jobTypesfull_time, part_time, contract, internship. Each one is its own search. It steers Google's ranking; filter exactly on the scheduleType column.
remoteOnlyAdds Google's remote filter to every search.
onlyNewJobsMonitor: skips jobs an earlier run of yours already delivered.
resolveApplyLinksDefault on. Off: links stay as Google's redirect addresses.
maxJobsPerSearch1–10.
maxJobsCeiling for the whole run; 0 for none.

Countries. Jobs came back on 2026-09-20 for us, gb, ca, in, de, fr, es, it, br, mx, za, sg, ae and ph. Google shows no job listings at all in au, nl, 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"
}
fieldnotes
statusok for a job; no_jobs or blocked for a search that delivered none, with the reason in words.
searchThe search that found the job first: its words, keyword, location, job type and country.
position1–10, the rank Google gave the job in that search.
jobIdGoogle's id of the posting, the key for de-duplication and for the monitor.
viaThe site Google credits the posting to.
postedText, postedAtGoogle's words ("3 days ago") and the instant they name, counted back from scrapedAt. null when Google prints no age.
scheduleTypeFull-time, Part-time, Contractor, Internship or a combination, as Google prints it.
remotetrue when Google lists the job under "Anywhere" or tags it "Work from home".
salarynull when Google prints none. currency is the sign Google prints ($, £, €, ₹).
tagsGoogle's other chips: benefits and "No degree mentioned".
descriptionThe full posting text, line breaks kept (a ~400-character preview in the EU).
highlightsGoogle's summary of the posting by section; empty when Google made none.
applyLinksEvery site that carries the posting, in Google's order; the first is the one it credits.
googleUrlThe job on Google.

The run also writes a SUMMARY record: searches per status, jobs, duplicates skipped, jobs the monitor skipped, requests made and apply links left unresolved.

Cost

runyou pay
1 search, 10 jobsUS$0.013
40 searches, 389 jobs (4 titles × 5 cities × 2 job types)US$0.51
200 searches a day on a monitor that finds 150 new jobsUS$0.75 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.
  • Job types steer the ranking rather than filter: a "contract" search can list a full-time job. scheduleType tells.
  • 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.

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.