Google Jobs Scraper — Salaries, Descriptions & Apply Links avatar

Google Jobs Scraper — Salaries, Descriptions & Apply Links

Pricing

Pay per event

Go to Apify Store
Google Jobs Scraper — Salaries, Descriptions & Apply Links

Google Jobs Scraper — Salaries, Descriptions & Apply Links

Get Google Jobs listings by search term and location: job title, company, full description, parsed salary, posted date, remote flag and all apply links with real URLs. Many terms per run, any Google market, no login. $4.25 per 1,000 jobs.

Pricing

Pay per event

Rating

5.0

(1)

Developer

Flowo

Flowo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

0.78 hours

Issues response

3 days ago

Last modified

Share

This actor searches Google Jobs for one or many job search terms and returns one row per unique job: title, companyName, location, the full description, parsed salary (salaryMin, salaryMax, currency, salaryPeriod), publishedAt and every apply option with its real target URL in applyOptions. No login or API key is needed.

You can set a location, a Google market and language, a posted-date filter, a job type and a remote-only switch. Results are ready for spreadsheets, job boards, salary research or AI agents.

What does it do?

You give the actor a list of job search terms (for example "registered nurse" or "data analyst") and, optionally, a location such as "Chicago, IL". It runs each term as a Google Jobs search, pages through the results and returns the details Google shows for each job: company, location, the job board it came from (via), description, highlights (qualifications, benefits, responsibilities), job type, tags, salary and posted date.

Each job appears once per run, even if several search terms find it. It is built for recruiters and sourcers, job-market analysts, HR-tech and job-board builders, salary researchers, and AI agents that answer "find me X jobs in Y".

How to use

  1. Open the actor in Apify Console and click Try for free.
  2. Enter one or more Job search terms, one per line.
  3. Add a Location (strongly recommended) and, if needed, a Country and Language.
  4. Optionally set Date posted, Job type, Remote jobs only and the limits.
  5. Click Start, then download the dataset as JSON, CSV, Excel or HTML, or read it through the API.

AI agents can call the actor through the Apify API or Apify MCP with the same JSON input.

Pricing

Pay per event:

EventPrice
Job listing (one unique job saved to the dataset)$0.00425 (= $4.25 per 1,000 jobs)
Actor start$0.00005 (Apify's standard start price)

Higher Apify plans get lower per-job prices: Bronze $3.825, Silver $3.40 and Gold and above $2.975 per 1,000 jobs. Duplicate jobs, searches without results and runs with invalid input are not charged.

Example: the default input (2 terms × up to 50 jobs) returns up to 100 jobs and costs about $0.43 on the free plan. Set Max jobs in total to cap the spend.

Input

FieldMeaning
queries (required)Job search terms, one per line. Each term is a separate search.
locationCity, region or country added to every term, e.g. "New York, NY".
countryTwo-letter Google market code (default us), e.g. gb, de, in, jp.
languageLabel language (default en), e.g. de, fr, pt-BR.
datePostedany, today (last 24 hours), 3days, week or month. Works in every country and language.
employmentTypeany, fullTime, partTime, contract or internship. Works in every country and language; one type per run.
remoteOnlyOnly remote jobs (default false). Available in the US, UK, India, Germany and Brazil; elsewhere the run stops with an input error.
maxItemsPerQueryMax unique jobs per term, 1–500 (default 50).
maxItemsMax jobs in the whole run (default 1000).
proxyConfigurationA proxy is required; the default Apify datacenter proxy works best.

Example input:

{
"queries": ["data analyst", "data engineer"],
"location": "Bangalore",
"country": "in",
"datePosted": "week",
"maxItemsPerQuery": 100
}

Output

Each dataset row is one job.

FieldDescription
id, urlGoogle's job id and a Google Jobs link that opens the job
title, companyName, location, viaBasic job data and the board Google took it from
description, descriptionIsPreviewDescription text; true when Google only shows a preview
employmentType, isRemote, tagsJob type, remote flag, benefit and other chips
salaryText, salaryMin, salaryMax, currency, salaryPeriodSalary as shown and parsed
publishedAtText, publishedAtPosted date as shown and as an approximate ISO date
highlightsSections such as Qualifications, Benefits, Responsibilities
applyOptions, applyUrlAll apply links with real target URLs; the first one
imageUrlCompany logo
query, position, page, country, language, scrapedAtSearch context

Real example (description and lists shortened):

{
"id": "_QNkGauliwHHe4OMAAAAAA==",
"title": "Software Engineer (Mid-Level)",
"companyName": "Brean Capital, LLC",
"location": "New York, NY",
"via": "Indeed",
"description": "Software Engineer (Mid-Level)\n\nCompany: Brean Capital, LLC\n...",
"descriptionIsPreview": false,
"employmentType": "Full-time",
"isRemote": false,
"salaryText": "110K–130K a year",
"salaryMin": 110000,
"salaryMax": 130000,
"currency": "USD",
"salaryPeriod": "year",
"publishedAtText": "2 days ago",
"publishedAt": "2026-10-22",
"tags": ["No degree mentioned", "Health insurance", "Dental insurance"],
"highlights": [{ "title": "Qualifications", "items": ["Core Technical Stack: 3+ years of professional experience working with C# and ASP"] }],
"applyOptions": [
{ "title": "Apply directly on Indeed", "url": "https://www.indeed.com/viewjob?jk=2f463a74d9025996&utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic" }
],
"query": "software engineer",
"position": 1,
"page": 1,
"country": "US",
"language": "en"
}

Use cases

  • Recruiting and sourcing: watch openings for a role in a city, with company, description and apply links.
  • Job-market analysis: compare demand for several roles in one market in a single run, each job counted once.
  • Salary research: collect pay with parsed min, max, currency and period, for example hourly pay for part-time roles.
  • Daily monitoring: schedule a run with datePosted: 3days (or today), remoteOnly and a job type to catch fresh remote listings.
  • Non-English markets: search with local terms, e.g. "Krankenpfleger" in Berlin with country: de, language: de, employmentType: partTime and datePosted: week.
  • Job boards and AI agents: feed aggregated listings or answer "jobs for X in Y" requests.

Limitations

  • Google returns about 10 jobs per page and usually ends a broad search after roughly 100–150 jobs; narrow searches end earlier.
  • Salary, highlights, tags and the posted date are filled only when Google shows them. Salary is most common in the US; highlights were not seen in Germany, Japan, the UK or India.
  • In some markets (for example Germany) Google shows only a description preview; descriptionIsPreview is then true.
  • Labels such as employmentType, publishedAtText and highlight titles follow the chosen language. publishedAt is approximate.
  • Without a location, Google picks jobs near the proxy IP, often a random US city.
  • Narrow filter combinations (for example part-time + remote + last 7 days for a niche role) can legitimately return no jobs.
  • Markets where Google has no Jobs search (for example cn) return no results and a warning.
  • A proxy is required. Residential proxies are blocked by Google more often than the default datacenter proxy.
  • A job found by several terms is saved only for the first term that found it.
  • Google can change its pages; if the layout changes, the actor stops with an error instead of returning wrong data.

Filters

  • Date posted uses Google's after: date operator, so it works the same in every country and language (tested in the US, UK, Canada, Germany, France, Spain, Brazil and Japan). The actor also drops jobs whose posted age is known and older than the window.
  • Last 24 hours (today) finds few jobs, because Google lists few jobs that fresh; use 3days for broader monitoring.
  • Job type uses the phrase Google itself shows in the market's language (for example Teilzeit, temps partiel, パートタイム).
  • Remote jobs only needs a market where Google offers a Remote filter (US, UK, India, Germany, Brazil) and a Language of that market (e.g. de for Germany). In Canada, France, Spain, Japan, Italy and Mexico, or with a different language, the run stops at once with a clear input error instead of returning nothing.
  • If the filters together leave no jobs, the run succeeds with 0 rows and a warning that names the filters.

FAQ

Is it legal to scrape Google Jobs? The actor collects job postings that Google shows publicly, without logging in. You are responsible for how you use the data and for complying with applicable laws and the terms of the sites involved. Listings can contain contact details a company chose to publish; handle them according to data-protection rules.

Which countries work? Any Google market that has the Jobs search. Date and job type filters were tested in the US, UK, Canada, India, Germany, Switzerland, France, Spain, Brazil, Japan and Italy. The remote filter works only where Google offers it (see Filters).

Why is location recommended? Google builds the results from the search text. A location in the input is added to each term.

What happens when nothing is found? The run succeeds with no rows and no charge, with a warning for each such term.

Can I search many terms at once? Yes. List them in queries; they share the location and filters.

Other actors

Other public data actors from the same author: