Google Jobs Scraper: by query and location, with salary
Pricing
from $13.00 / 1,000 result page delivereds
Google Jobs Scraper: by query and location, with salary
Job listings from Google Jobs by query and location: title, company, location, source, posting date, salary when shown, and deduplicated apply links. Strict schema for pipelines and AI agents; only successfully delivered result pages are charged.
Pricing
from $13.00 / 1,000 result page delivereds
Rating
0.0
(0)
Developer
Steadydata Team
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Google Jobs Scraper (reliable)
Fetch job listings from Google Jobs for up to 100 search queries per run: title, company, location, source board, posting date, employment type, salary when shown, the full job description, the job highlights (qualifications, responsibilities, benefits) and the real apply links on LinkedIn, Indeed, ZipRecruiter and the other boards, plus a stable job ID for deduplication across runs. Built for job boards, recruitment analytics and AI agents: strict schema, explicit error codes, and you only pay for result pages that are actually delivered.
Why this scraper
- Only successful results are charged. A query that hits a block or returns no results shows up as a clear error record at no cost.
- Fails loudly, never silently. When Google changes its page, you get an explicit error instead of a quietly empty dataset — and we fix it fast; reliability is the product.
- Clean business data. Job postings as companies published them: no scraping of personal contact details, no profile data.
- Deduplication built in. Every job carries Google's stable job ID, so merging runs and tracking new postings over time is trivial.
- Apply links that work. Google's own page links through redirects that fail outside a
browser; this actor returns the destination URLs themselves (measured 03-10-2026: up to
eight boards per job, all direct
https://links). - The whole description, not the preview. Measured on ten San Francisco jobs: 3,400 to 10,800 characters each, plus the highlights Google extracted from the post.
Who this is for
Recruiters and job boards tracking what is being posted, market analysts watching hiring demand, and sales teams using job ads as a buying signal.
Google Jobs aggregates across LinkedIn, Indeed and company career pages, so one query covers sources you would otherwise scrape separately.
Who this is not for
Read this before you buy. This actor returns job postings as companies published
them: no recruiter names, no e-mail addresses, no phone numbers, and it never will. It
does not apply to jobs or open the source board; via tells you where the posting lives.
Results are region-bound, exactly as on Google Jobs: a query with the wrong country
returns nothing (at no cost). Each query returns one result page of about ten jobs;
Google does not serve further pages on this route (measured 03-10-2026), so for more jobs
use more specific queries (role plus city, or several cities). Billing is per delivered
result page, not per job.
Input fields
| Field | Type | Required or default | What it does |
|---|---|---|---|
queries | list of text | required | Job search queries, e.g. 'software engineer amsterdam'. Combine role and place in one query, or set location separately below. |
location | text | Optional location appended to every query, e.g. 'Amsterdam' or 'Netherlands'. | |
maxJobsPerQuery | number | 50 | Keep at most this many jobs per query. Google serves one page of about ten jobs per query on this route. |
country | text | US | ISO country code (e.g. US, NL, DE). Determines both the proxy exit country and the gl parameter; Google Jobs results are region-bound, so match this to where the jobs should be. |
Input example
{"queries": ["software engineer amsterdam", "data analyst rotterdam"],"location": "","country": "NL","maxJobsPerQuery": 50}
country sets both the proxy exit country and Google's region parameter; Google Jobs
results are region-bound, so match it to where the jobs should be. Queries can be in
any language; interface labels (posting date, employment type) come back in English.
Output example
| Field | Type | What it holds | Example |
|---|---|---|---|
query | text | The input this row was found with, so rows from several inputs can be told apart. | software engineer new york |
country | text | The country the request was made from; Google answers differently per country. | US |
location | text | The place the vacancies were searched in. | |
jobCount | number | How many vacancies this search returned. | 10 |
jobs | list | The vacancies themselves: per job the id, title, company, location, the board it came from, how long ago it was posted, the salary as far as it is stated, the contract type, the full description, the job highlights and the direct apply links per board. | [{"jobId": "j6QtoduLAIVUDroCLAAAAAA", "title": "Agentic D... |
{"query": "software engineer amsterdam","status": "ok","jobCount": 10,"jobs": [{"jobId": "j2njGYSBOJOwz6gY2AAAAAA","title": "Senior Software Engineer I, Core Objects","company": "Braze","location": "San Francisco, CA","via": "LinkedIn","posted": "16 hours ago","salary": "","scheduleType": "Full-time","description": "At Braze, we have found our people. ...","jobHighlights": [{"title": "Qualifications", "items": ["5+ years of full-stack development experience", "..."]},{"title": "Responsibilities", "items": ["..."]}],"applyOptions": [{"title": "LinkedIn", "link": "https://www.linkedin.com/jobs/view/senior-software-engineer-i-core-objects-at-braze-4474790743?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic"},{"title": "Indeed", "link": "https://www.indeed.com/viewjob?jk=ec897a1ce63d0d56&utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic"}],"extensions": ["16 hours ago", "Full-time", "No Degree Mentioned", "Dental insurance", "Health insurance", "Paid time off"],"detectedExtensions": {"posted_at": "16 hours ago", "schedule_type": "Full-time", "health_insurance": true, "dental_coverage": true},"shareLink": "https://www.google.com/search?ibp=htl;jobs&q=software+engineer+san+francisco&htidocid=2njGYSBOJOwz6gY2AAAAAA%3D%3D"}]}
A failed query produces an error record instead (and is not charged):
{"query": "someterm", "status": "error", "errorCode": "NO_RESULTS", "error": "No job cards found"}
Error codes: NO_RESULTS, BLOCKED, FETCH_ERROR. INPUT_TRUNCATED appears once when your input is longer than this actor accepts.
Related actors from steadydata
- company-career-site-jobs: the companies' own boards, without the aggregator
- google-trends-batch: whether demand for a role is rising
Pricing
Pay per event: one job-page-fetched event per delivered result page. No charge for
failed queries, no separate platform-usage surcharge.
Free Apify plan: this actor delivers up to 25 rows per run for accounts on the Apify free plan, and then stops with a message. That limit is set by us, not by Apify. It exists so the actor keeps paying for itself for the people who do pay. Any paid Apify plan runs it at full size, billed per delivered row, with failed rows never charged.
Reviews: if this actor saves you time, a short review on this page is the one thing that helps most. Ratings are what other buyers look at first, and we have no other way to ask.
FAQ
Where does the data come from?
Google Jobs aggregates postings from LinkedIn, Indeed, company career sites and more;
each job's via field tells you the source board.
Can I search in my own language?
Yes — phrase queries in any language and set country to the target region; only
the metadata labels come back in English.
Is personal data collected? No. Only job postings as published by companies; the actor extracts no personal contact fields.
Why is it so much cheaper than comparable actors? Because it does not drive a browser. It reads the page Google renders server-side, which is faster and far lighter, and that saving goes into the price.
I get no results, what now?
Almost always the country does not match the query. Google Jobs is region-bound, so
searching a Dutch city with the country set to US returns nothing. Set country to the
region the jobs are in; the error message says so too, and you are not charged for it.
Can I call it from my own code, like an API? Yes. Every run is available through the Apify API: start it with one HTTP request, then read the results as JSON, CSV or Excel from the dataset endpoint, or use the official Python and JavaScript clients. The input is the same JSON as in the input example above, so a scheduled script, a Make or Zapier step or an AI agent can call it without any changes.