Google Jobs Scraper: Listings, Salaries & Apply Links avatar

Google Jobs Scraper: Listings, Salaries & Apply Links

Pricing

from $2.50 / 1,000 jobs

Go to Apify Store
Google Jobs Scraper: Listings, Salaries & Apply Links

Google Jobs Scraper: Listings, Salaries & Apply Links

Scrape Google Jobs listings for any search and location: title, company, salary, full description, posted date and every apply link (LinkedIn, Indeed, company site). Pay only per job, never for empty pages.

Pricing

from $2.50 / 1,000 jobs

Rating

0.0

(0)

Developer

Alexander Burch

Alexander Burch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Scrape Google Jobs listings for any job search and location: title, company, location, salary (parsed into min/max/currency/period), posted date, employment type, full description, job highlights and every apply link (LinkedIn, Indeed, ZipRecruiter, the company's own careers page…) as real URLs. Pay only per job delivered, never for empty or blocked pages. Export to JSON, CSV or Excel, or call it from your code, Make, Zapier, n8n, or an AI agent via MCP.

What data can you get?

FieldExample
titleSenior Software Engineer - Enterprise Architecture & AI Solutions Engineering
companyCharles Schwab
locationAustin, TX
viaSchwab Jobs
postedAgo / postedAt15 days ago / 2026-09-14T17:30:00.000Z
employmentType / employmentTypesFull-time / ["FULL_TIME"]
salaryText$150K–$185K a year
salaryMin / salaryMax / salaryCurrency / salaryPeriod150000 / 185000 / USD / year
benefitsDental insurance, Paid time off, Health insurance
highlightsQualifications, Benefits, Responsibilities (bullet lists)
descriptionFull job description text
applyLinks[{ source: "LinkedIn", url: "https://www.linkedin.com/jobs/view/…", isDirect: false }, …]
applyUrlThe first apply option (usually the "via" source)
googleJobUrlOpens the job in Google Jobs
jobIdGoogle's job id, stable across runs, for de-duplication
isRemote, companyLogo, searchQuery, searchLocation, rank, scrapedAt

Why this scraper

This Actor
Charged for empty searches, blocked pages or duplicatesNever. You pay per unique job delivered, nothing else except a $0.01 run start
More than Google's 10 jobs per searchYes: re-runs the search with Google's own filters (job type, date posted) and keeps only new jobs
DuplicatesRemoved across all searches and locations in a run (by Google job id, and title + company + location)
Apply linksEvery option Google lists, as the real posting URL (not a Google redirect), with its source name
SalaryRaw text plus parsed min, max, ISO currency and period
Many searches × many locations in one runYes, run in parallel
FiltersDate posted, employment type, remote; jobs that contradict your filter are dropped, not charged
BrowserNone: fast HTTP through Apify's Google SERP proxy

How much does it cost?

Pay only for jobs delivered: $3.50 per 1,000 jobs plus $0.01 per run (lower on paid Apify plans, down to $2.50 per 1,000). Examples:

  • The default input (10 software engineer jobs in Austin, TX) ≈ $0.05.
  • 10 searches × 50 jobs (500 jobs) ≈ $1.76.
  • A daily "posted since yesterday" check that finds 40 new jobs ≈ $0.15.

A search that finds nothing costs nothing beyond the run start. Set Max jobs per search to cap what you spend; the run also stops cleanly at the maximum total charge you set for a run.

How to use it

  1. Add one or more Job searches, as you would type them into Google (software engineer, registered nurse, barista part time).
  2. Optionally add Locations (Austin, TX, London, Berlin). Every search runs in every location.
  3. Set Max jobs per search and location, and optionally Date posted, Employment type and Remote.
  4. For other countries, set Country (gb, de, ca, in…) and Language (en, de…).
  5. Run, then download the dataset in the format you need.

Monitoring new jobs: schedule a daily run with Date posted = Since yesterday, and use jobId to skip jobs you already have.

API: POST https://api.apify.com/v2/acts/tidyscrape~google-jobs-scraper/run-sync-get-dataset-items with your input as JSON, for example:

{
"queries": ["data analyst", "data engineer"],
"locations": ["New York, NY", "Chicago, IL"],
"maxJobsPerQuery": 50,
"datePosted": "week",
"country": "us",
"language": "en"
}

AI agents: available through the Apify MCP server. "Find remote data engineering jobs posted this week" maps directly to the input, and every input and output field is described.

Use cases

  • Job boards and aggregators: fill listings for any role and city, with the apply links.
  • Salary research: collect pay ranges by title and location in the Salaries view.
  • Labor-market and hiring analytics: track who is hiring for what, where, and how fast.
  • Recruiting and sales intelligence: spot companies hiring for roles your product or agency serves.
  • Personal job search automation: a daily feed of new matching jobs into a sheet, Slack or email.

FAQ

How many jobs can I get per search? Google shows 10 jobs per search and offers no further pages to automated access. The Actor re-runs each search with Google's own filters and keeps only new jobs. For a broad search in a large city that is usually 50-100+ unique jobs. For more, use more specific searches or more locations (nearby cities, neighborhoods).

Do I pay for pages with no jobs, or for duplicates? No. Only unique jobs delivered to your dataset are charged. Empty searches, blocked or failed requests and duplicates cost nothing.

Why do some jobs have no salary or posted date? The employer did not publish one, so Google shows none. The fields are then null.

How exact are the filters? Date posted, employment type and remote use Google's own filters. Google's type filter is loose, so the Actor also drops jobs that Google labels with a different type or an older date. postedAt is approximate (from "4 days ago"). isRemote is a best-effort flag from the title, location and labels.

Which countries and languages work? Any country Google Jobs covers: set Country and Language. Filters are verified for English and German. Some languages show only a description preview.

Why does a run take a while? Each Google request takes 15-40 seconds through Apify's Google SERP proxy. Requests run in parallel (Parallel requests, default 5), so large runs stay fast.

Is it legal to scrape Google Jobs? This Actor collects job listings that Google shows publicly in Google Search, without logging in. Job postings are business advertisements; the Actor does not extract or enrich recruiter contact details. You are responsible for using the data lawfully (e.g. GDPR/CCPA, the terms of the sites you link to). Not for FCRA purposes (e.g. screening applicants). This Actor is not affiliated with or endorsed by Google.

Something broke or a field is missing? Open an Issue. We usually respond within a day.

Changelog

  • 2026-09-29: first release.