Google Jobs Scraper & API - New Jobs, Salary & Apply Links
Pricing
from $2.00 / 1,000 jobs
Google Jobs Scraper & API - New Jobs, Salary & Apply Links
Google Jobs (Google for Jobs) scraper & API: job listings from LinkedIn, Indeed, Glassdoor, ZipRecruiter and career sites with real apply links, salary and full description. Only-new-jobs monitoring. $2 per 1,000 jobs.
Pricing
from $2.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Eduard Kalyta
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Google Jobs Scraper & API — new jobs, salary & direct apply links
Scrape Google Jobs (also called Google for Jobs — the job listings panel Google builds from LinkedIn, Indeed, Glassdoor, ZipRecruiter and company career sites) into clean JSON, CSV or Excel, or call it as a Google Jobs API from your code, Zapier, Make, n8n or an AI agent. Every job comes with real apply links (employer careers page / ATS, Indeed, LinkedIn…), normalized salary, full description and highlights.
Built for scheduled monitoring: only new jobs since the last run, closed-job alerts, Slack / webhook notifications. You pay only for unique jobs that have an apply link.
Why this scraper
| This Actor | |
|---|---|
| Run success | Designed for 99%+: every search is retried when Google serves a captcha or plain web results instead of jobs; runs finish before the timeout and keep everything collected |
| More than 10 results | Google shows ~10 jobs per search and has no next page. The Actor automatically runs search variants (full time, part time, contract, remote, entry level, senior, hybrid, internship) and de-duplicates |
| Real apply URLs | Google redirect links are resolved to the actual job URL. hasDirectApply, companyDomain and atsProvider (Greenhouse, Lever, Workday, Ashby, SmartRecruiters, iCIMS…) come for free |
| Salary you can sort by | salary.min, max, currency, period plus annualMinUsd / annualMaxUsd |
| Monitoring | onlyNewJobs remembers what each feed already returned; trackClosedJobs reports postings that disappeared |
| Stable schema | Fields are only ever added; every record carries schemaVersion |
| Fair billing | Duplicates, filtered-out jobs, already-known jobs, empty searches and retries are free |
Quick start
{"queries": ["registered nurse", "python developer"],"locations": ["Houston, TX", "New York, NY"],"country": "US","maxItems": 500}
Google Jobs matches on job titles: short titles ("data analyst") work better than long descriptions.
Daily monitoring in 3 steps
- Set
onlyNewJobs: trueand give the feed a name, e.g."monitorId": "nurses-houston". - Optional: add a
webhookUrl(Slack incoming webhook withwebhookFormat: "slack", or Zapier / Make / n8n with JSON). - Create a Schedule in Apify Console (e.g. every morning). Each run returns only jobs this feed has not returned before; known jobs are skipped and not charged.
Turn on trackClosedJobs to also receive records with recordType: "closed" when a posting disappears. Because Google rotates which jobs it shows for a search, a job is reported as closed only after it is missing from 2 complete runs in a row and has not been seen for closedAfterDays (default 3).
Output example
{"recordType": "job","jobId": "Iw1WSt-URMCIKrSHAAAAAA==","title": "Registered Nurse II (RN) Outpatient Infusion | BMT & Cellular Therapy","companyName": "Houston Methodist","companyDomain": "houstonmethodistcareers.org","location": "Houston, TX, United States","city": "Houston","region": "TX","remoteType": "onsite","employmentType": "FULLTIME","employmentTypes": ["FULLTIME"],"seniority": "mid","postedRaw": "7 days ago","postedAt": "2026-10-21T13:19:22.374Z","salary": null,"via": "Houston Methodist Careers","hasDirectApply": true,"primaryApplyUrl": "https://www.houstonmethodistcareers.org/job/120638/registered-nurse-ii-rn-outpatient-infusion-bmt-cellular-therapy-rn-ot","applyLinks": [{ "board": "Houston Methodist Careers", "url": "https://www.houstonmethodistcareers.org/job/120638/…", "isDirect": true, "ats": null, "resolved": true },{ "board": "Indeed", "url": "https://www.indeed.com/viewjob?jk=0d7070e21feb6f45", "isDirect": false, "ats": null, "resolved": true }],"atsProvider": null,"qualifications": ["Twelve months registered nurse experience in a healthcare environment", "…"],"responsibilities": ["…"],"benefits": [],"description": "At Houston Methodist, the Registered Nurse (RN) II position is …","tags": ["Full-time"],"isNew": true,"firstSeenAt": "2026-10-28T17:40:01.000Z","searchQuery": "registered nurse","searchLocation": "Houston, TX","searchCountry": "US","scrapedAt": "2026-10-28T17:40:01.120Z","schemaVersion": 1}
With outputFormat: "flat" salary and apply links become plain columns (salaryMin, salaryAnnualMinUsd, applyBoards, directApplyUrls…) for Excel / Google Sheets.
Every run also stores a RUN_SUMMARY record in the key-value store: searches, retries, jobs found, duplicates, new / known / closed jobs and warnings.
Filters
postedWithinHours, employmentTypes, remoteOnly, salaryOnly, directApplyOnly, excludeCompanies. Jobs removed by filters are not charged.
Use cases
- Recruiting agencies: fresh openings every morning with the hiring company, its domain and the direct apply link — a ready lead list of companies that are hiring.
- Job boards & aggregators: a daily feed of new postings per title and city, with closed-job signals to expire listings.
- Salary research: normalized annual USD ranges by title, city and seniority.
- AI agents (MCP): structured, de-duplicated jobs with a stable schema.
Countries
Works where Google shows its jobs panel. Verified on 28 Oct 2026 with 200 searches: United States, United Kingdom, Canada, India, Philippines — 200/200 searches returned jobs or Google's own "no matches" answer. Many other countries are in the list. In markets where Google does not show the jobs panel (reported for Australia and several EU countries) the Actor detects it after two searches, stops, explains it in the run status and charges nothing.
Keep language at en: parsing is verified on English pages.
Pricing
Pay per event:
- Job — a unique job with at least one apply link: $2.00 per 1,000.
- Closed job — only with
trackClosedJobs: $0.50 per 1,000.
Not charged: duplicates, filtered-out jobs, jobs already known to the feed, searches with no results, retries.
Limitations (from Google, not the Actor)
- About 10 jobs per search; volume comes from more titles, more locations and
expandSearch. - Salary is shown on roughly 40% of postings and posting date on about two thirds.
- Google rotates which jobs it shows, so consecutive runs return slightly different subsets — monitoring mode turns this into a steady stream of jobs you have not seen yet.
FAQ
Is a run ever charged when nothing was found? No. Only jobs with an apply link are charged.
Why fewer jobs than maxItems? Google has a limited pool per title and city. Add titles, nearby cities or keep expandSearch on.
Do I need proxies or an API key? No.
Changelog
- 0.1 (Oct 2026) — First release: jobs vertical parser, retries and timeout budget, search expansion, apply-link resolution with ATS and employer domain, only-new / closed-job monitoring, Slack and JSON webhooks, flat CSV output.