Google Jobs Scraper - Job Search Results by Query & Location
Pricing
from $3.40 / 1,000 job results
Google Jobs Scraper - Job Search Results by Query & Location
Search Google Jobs by keyword and location and get structured job results, source boards and apply links. Bulk query/location searches, deduplicated output, pay per job result.
Pricing
from $3.40 / 1,000 job results
Rating
0.0
(0)
Developer
Saulius Saulenas
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Google Jobs Scraper — Job Search Results by Query & Location
Search Google Jobs by keyword and location and get structured job results, source boards and apply links.
Give it a list of job titles and a list of cities. It runs every combination against the Google Jobs tab and returns clean, deduplicated rows — title, company, location, salary when Google shows it, the source job board, and direct apply links to LinkedIn, Indeed, Lever, Workday and company ATS pages.
What you get per job
{"jobId": "U_04ajnAmBmBGSuSAAAAAA==","title": "Software Engineer I - Backend","company": "Booking.com","location": "London","salary": null,"source": "Booking.com Careers","applyLinks": [{ "url": "https://jobs.booking.com/booking/jobs/30069?utm_campaign=google_jobs_apply", "domain": "booking.com" },{ "url": "https://uk.linkedin.com/jobs/view/software-engineer-i-backend-at-booking-com-4455282813", "domain": "linkedin.com" }],"postedAt": "7 days ago","employmentType": "Full-time","descriptionSnippet": "As a Backend Software Engineer you will work on ...","googleJobsUrl": "https://www.google.com/search?q=software+engineer+London&udm=8","query": "software engineer","searchLocation": "London"}
salary is null whenever Google does not display a salary chip — roughly 6 in 10 jobs. It is
never inferred from the description text, even when the description mentions a figure.
The same applies to every other field: missing means null, not guessed.
Input
{"queries": ["software engineer", "data analyst"],"locations": ["London", "Manchester"],"countryCode": "gb","maxResultsPerSearch": 10,"maxTotalResults": 1000}
That runs 4 searches (2 queries × 2 locations) and returns up to 40 unique jobs.
| Field | Type | Default | Notes |
|---|---|---|---|
queries | string[] | [] | Job keywords. Combined with every location. |
locations | string[] | [] | Cities/regions. Empty = search without a location. |
searches | object[] | [] | Explicit pairs instead of the grid; each may set its own countryCode. |
countryCode | string | "us" | Selects the Google domain and locale. |
languageCode | string | "en" | Passed to Google as hl. |
maxResultsPerSearch | int | 10 | Google caps the Jobs tab at 10 per query (see limits). |
maxTotalResults | int | 1000 | Hard cap on unique results for the run. |
retryOnEmpty | bool | true | One retry when a search returns no jobs. |
Explicit pairs, with per-search country
{"searches": [{ "query": "chef", "location": "Edinburgh", "countryCode": "gb" },{ "query": "barista", "location": "Seattle", "countryCode": "us" },{ "query": "welder", "location": "Calgary", "countryCode": "ca" }]}
API
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~google-jobs-scraper/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{"queries": ["registered nurse"],"locations": ["Leeds", "Bristol"],"countryCode": "gb"}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('YOUR_USERNAME/google-jobs-scraper').call({queries: ['truck driver'],locations: ['Dallas', 'Houston'],countryCode: 'us',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Pricing
Pay per result.
| Event | Price |
|---|---|
job_result — one unique, valid job row | $0.004 |
apify-actor-start — Apify's standard start event, charged once per gigabyte of the run's memory (1 GB by default) | $0.00005 |
Those are the Free-plan prices. Apify's paid plans get the standard Store discount off every
result — Bronze 5 %, Silver 10 %, Gold and above 15 % — so job_result costs $0.0038, $0.0036 or
$0.0034 on those plans. Actor start stays $0.00005 on every plan.
You are charged only for unique job results actually delivered. Duplicates across searches, searches that return nothing, and failed searches are never charged.
Limits you should know before buying
These are properties of Google's Jobs tab, measured — not guesses.
- 10 results per query, no pagination. Google's Jobs tab serves ten jobs and offers no
working next-page mechanism.
start=,num=,ijn=and filter chips were all tested and none returns an eleventh job. To get more volume, use more query/location combinations rather than deeper pages. Narrower queries ("paediatric nurse" vs "nurse") and more cities are the way to scale. - Coverage varies by country and by query. Verified working: US, UK, Canada, Germany,
India. Australia returned no Google Jobs results at all across every query and URL form
tested. Ireland returns results for some queries and nothing for others — and the same is
occasionally true inside supported countries (a specific role/city pair can return nothing
while its neighbours return ten). When Google serves no job cards the Actor reports
NO_RESULTSfor that search and charges nothing for it. This is Google's coverage, not a scraper limitation. - Results move. Google's result set for the same query changes over time; roughly 97% of job IDs persisted between repeated runs in testing. Job IDs are stable identifiers for the same posting, so they work for deduplication and change tracking across runs.
- Salary is sparse. Present on about 38% of jobs.
Measured reliability where Google serves jobs: 50/50 successful extractions across 25 query/location combinations run twice (98% without the built-in single retry).
What this Actor does not do
It returns Google Jobs search results as structured data. It does not scrape LinkedIn, Indeed or ATS platforms directly, does not open individual job pages for enrichment, does not infer salaries, and does not do company enrichment, candidate matching or CV scoring.
Notes
This Actor is not affiliated with, endorsed by, or an official API of Google. It reads publicly visible Google Search results. Coverage of Google Jobs is not guaranteed to be complete. Apply links point to the third-party job boards and employer ATS pages that Google lists as application options for each posting.