Google Job Scraper avatar

Google Job Scraper

Pricing

from $17.50 / 1,000 results

Go to Apify Store
Google Job Scraper

Google Job Scraper

Copying listings from Google Jobs by hand is slow, and pay is buried in text. Scrape Google Jobs in any country: title, company, location, salary as numbers, posting date, apply links and full description, with remote, date and pay filters. No duplicates.

Pricing

from $17.50 / 1,000 results

Rating

0.0

(0)

Developer

Crawl Craft

Crawl Craft

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

What is Google Job Scraper?

Google Job Scraper is an Apify Actor and Google Jobs scraper that turns Google Jobs searches into clean rows with title, company, location, salary, posting date, apply links, highlights and the full description. Paste search links or plain phrases, add filters, and download the dataset. No Google account is needed.

  • Bulk searches: Add many links, phrases and locations when you scrape job data for several roles and cities in one run.
  • Pay as numbers: Salary comes as text plus minimum, maximum, currency, period and yearly equivalents whenever Google or the description shows it.
  • Every apply link: Each job lists the places it can be applied for, plus a direct apply link on the employer's own site when one exists.
  • Filters for hiring work: Narrow results by remote work, no degree, date posted, job type, seniority, salary and title words.
  • Only new jobs: Scheduled runs can skip jobs the Actor already returned in earlier runs of your account.

Quick start: click Try for free, paste a link or phrase, and press Start.

What data can you extract from Google Jobs?

Every job row from this Google Jobs data extractor holds the fields below, and a value stays empty (null) when Google shows nothing for it. Rows also carry a few more fields that are not listed here. Download the dataset as JSON, CSV, Excel, XML or HTML.

FieldDescriptionExample
positionOrder in which the job was found within its search.1
job_idGoogle's own ID of the job.CS0hxrtrAnLdRsRNAAAAAA==
titleTitle of the job posting.Staff+ Fullstack Software Engineer
company_nameEmployer that posted the job.Anthropic
locationWhere the job is located.New York, NY
search_locationThe location you searched for (empty when none was given).New York, NY
viaSource Google shows the job from.via LinkedIn
is_remoteTrue when the job can be done remotely.false
employment_typeFULL_TIME, PART_TIME, CONTRACTOR, INTERN, TEMPORARY, PER_DIEM or VOLUNTEER.FULL_TIME
schedule_typeSchedule exactly as Google writes it.Full-time
posted_atPosting age as Google writes it.1 day ago
posted_at_datetimeEstimated posting time in ISO format.2026-10-09T19:57:11+00:00
posted_hours_agoEstimated hours since the job was posted.24.0
salarySalary range as shown by Google or found in the description.Range text with currency
salary_minLower end of the pay range.405000
salary_maxUpper end of the pay range.485000
salary_currencyCurrency code of the pay range.USD
salary_periodHOUR, DAY, WEEK, MONTH or YEAR.YEAR
salary_annual_minLower end converted to a year.405000
salary_annual_maxUpper end converted to a year.485000
salary_sourcegoogle when Google shows the pay, description when it was found in the text.description
seniority_levelINTERN, ENTRY, MID, SENIOR, LEAD, PRINCIPAL or EXECUTIVE, guessed from the title.PRINCIPAL
experience_years_minSmallest number of years the posting asks for.8
no_degree_mentionedTrue when the posting says no degree is required.false
direct_apply_linkApply link on the employer's own site or hiring system, when one exists.https://boards.greenhouse.io/example/jobs/1
apply_optionsEvery place to apply: title, link, domain, link type and hiring system.Array of apply options
apply_platforms_countHow many places the job can be applied for.8
descriptionFull job description text.About the role ...
description_lengthNumber of characters in the description.6774
job_highlightsQualifications, responsibilities and benefits lists.Array of highlight lists
detected_extensionsJob tags sorted into posted_at, schedule_type, benefits and similar.posted_at: 1 day ago, schedule_type: Full-time
extensionsShort tags Google shows next to the job.1 day ago, Full-time
thumbnailEmployer logo link.https://encrypted-tbn0.gstatic.com/images?q=tbn:example
share_linkLink that opens this job on Google.https://www.google.com/search?q=example&job=example
duplicate_postings_countHow many other copies of the same job Google merged into this one.7
queryThe phrase this job was found with.software engineer
countryCountry code the search ran for.us
languageInterface language of the results.en
google_domainGoogle site that was searched.google.com
search_timestampWhen the search started.2026-10-10T19:57:09+00:00
total_jobs_foundUnique jobs found in this search up to the page where this job appeared.151

A Google Jobs extractor is most useful when pay and apply links must sit in the same row, and every job row has fields for both, filled when the data is available.

Use cases for Google Jobs data

  • Salary benchmarking: Compare pay ranges by role and city with salary_annual_min and salary_annual_max to build job salary data you can sort and chart.

  • Pay across countries: Track Google Jobs salary figures for one role by changing country and googleDomain between runs.

  • Job board feeds: Feed your own board or job aggregator API with fresh listings, apply links and company names.

  • Labor market research: Build a job postings dataset from title, seniority_level, experience_years_min and location for trend analysis.

  • Remote and entry-level search: Save a Google Jobs remote no degree search with the remoteOnly and noDegreeOnly options.

  • Hiring dashboards: Power your own job market data API or dashboard with scheduled runs and the posted_at_datetime field.

  • Ongoing monitoring: Keep a job postings database current by scheduling runs with skipSeenJobs turned on.

Teams that need a Google Jobs listings scraper for several countries can set country and googleDomain per run.

How to scrape Google Jobs listings

You can extract Google Jobs for several roles and cities in one run. Follow these steps:

  1. Create a free Apify account.
  2. Open Google Job Scraper in Apify Store.
  3. Add one Google Jobs link or search phrase per line in the Google Jobs links or search phrases field (urls), and add cities in Locations (locations).
  4. Pick filters such as Date posted, Job types or Remote jobs only.
  5. Click Start and wait for the run to finish.
  6. Open the dataset and download it in the format you prefer.

How to download Google Jobs as CSV or Excel

Open the finished run, go to the dataset, choose CSV or Excel, and download the file. Google Jobs to CSV takes one download from the dataset.

Google Jobs to Excel works the same way. A Google Jobs export in JSON, XML or HTML uses the same dataset page.

Pick the format you need, and the dataset gives you a Google Jobs downloader for these files.

How much does it cost to use Google Job Scraper?

Google Job Scraper uses tiered pay-per-event pricing: $25 per 1,000 results on the Free plan, and less on paid plans. One result is one saved job row (the main_result event, shown as Results in the Console). Each run also has a tiny Actor Start event of $0.00005 per run start.

Apify planPrice per 1,000 results
Free$25
Bronze$22.5
Silver$20
Gold / Platinum / Diamond$17.5

On the Free plan price, a run that saves 1,000 jobs costs $25 for the results, plus the start event. Free plan users get a job scraper free to try, limited to 10 jobs per run with no monthly limit, and paid plans have no per-run job cap. When the spend limit for the run is reached, the run stops cleanly.

See the Pricing tab for current rates.

Input

Google Job Scraper needs at least one Google Jobs link or search phrase in urls. Each line you add runs as a separate search in the Google Jobs search scraper. The Google Jobs scraping tool accepts links copied from Google Jobs or plain phrases such as data analyst remote.

Job scraper tool input form with Google Jobs search phrases and locations

See the Input tab for every option. The main groups are:

  • What to search: urls, queries, locations, country, googleDomain, language, radiusKm, datePosted, employmentTypes.
  • Result filters: remoteOnly, noDegreeOnly, strictFilters, salaryMinAnnual, requireSalary, directApplyOnly, maxPostedHoursAgo, titleMustInclude, titleMustExclude, excludeCompanies, excludeVia, seniorityLevels.
  • Volume: maxResultsPerSearch, maxResultsTotal, maxPagesPerSearch, maxScanned. A value of 0 means no cap for the first three.
  • Duplicates and monitoring: dedupeAcrossSearches, fuzzyDedupe, skipSeenJobs.
  • Output options: includeDescription, includeHighlights, includeApplyOptions, includeRawExtensions.
  • Speed and reliability: concurrency, requestDelay, maxRetries, proxyConfiguration.

Example input (values taken from the input form's pre-filled and default values):

{
"urls": ["software engineer"],
"locations": ["London"],
"googleDomain": "google.com",
"datePosted": "any",
"includeDescription": true
}

๐Ÿ’ก Start with a small run to check your filters before you scale up. โš ๏ธ The free plan stops each run at 10 jobs.

Output

The scraped results are shown as a dataset in the Storage tab. The table view is for convenience and doesn't show all the fields.

Google Job Scraper output table with job title, company and salary

The output opens in separate tables: Overview, Salary, Job details, Apply options, Apply links, Description, Highlights and Search info. A run summary with the counts of the run is saved in the key-value store. Export formats:

  • JSON
  • CSV
  • Excel
  • XML
  • HTML

Every row from this Google job postings scraper is one posting with its own job_id. Example output (illustrative values from the dataset schema, not a captured run and not tied to the example input above; the salary text is left out here):

{
"position": 1,
"job_id": "CS0hxrtrAnLdRsRNAAAAAA==",
"title": "Staff+ Fullstack Software Engineer",
"company_name": "Anthropic",
"location": "New York, NY",
"search_location": "New York, NY",
"via": "via LinkedIn",
"is_remote": false,
"employment_type": "FULL_TIME",
"schedule_type": "Full-time",
"posted_at": "1 day ago",
"posted_at_datetime": "2026-10-09T19:57:11+00:00",
"posted_hours_ago": 24.0,
"salary_min": 405000,
"salary_max": 485000,
"salary_currency": "USD",
"salary_period": "YEAR",
"salary_annual_min": 405000,
"salary_annual_max": 485000,
"salary_source": "description",
"seniority_level": "PRINCIPAL",
"experience_years_min": 8,
"no_degree_mentioned": false,
"direct_apply_link": "https://boards.greenhouse.io/example/jobs/1",
"apply_options": [
{
"title": "Apply on LinkedIn",
"link": "https://www.linkedin.com/jobs/view/1",
"domain": "linkedin.com",
"link_type": "job_board",
"ats": null
}
],
"apply_platforms_count": 8,
"description": "About the role ...",
"description_length": 6774,
"job_highlights": [
{
"title": "Qualifications",
"items": ["8+ years of experience"],
"truncated_items": 11
}
],
"detected_extensions": {
"posted_at": "1 day ago",
"schedule_type": "Full-time"
},
"extensions": ["1 day ago", "Full-time"],
"thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:example",
"share_link": "https://www.google.com/search?q=example&job=example",
"duplicate_postings_count": 7,
"query": "software engineer",
"country": "us",
"language": "en",
"google_domain": "google.com",
"search_timestamp": "2026-10-10T19:57:09+00:00",
"total_jobs_found": 151
}

Limitations and error handling

  • The free plan saves up to 10 jobs per run. Paid plans have no per-run job cap, and maxResultsTotal sets your own overall limit.
  • The Google Jobs results scraper saves only what Google lists, so the number of jobs per search varies.
  • Scraping Google Jobs without a location can return no jobs in some countries, so add a location when a search comes back empty.
  • Forcing English in language can return no jobs in countries such as the Netherlands, Germany, Spain, Brazil or Japan. Leaving it empty is usually best.
  • Salary is filled only when Google shows it or the description contains it, and jobs without pay are dropped when you set salaryMinAnnual or requireSalary.
  • seniority_level is guessed from the job title, and posted_at_datetime and posted_hours_ago are estimates based on the age Google shows.
  • radiusKm is a hint, so it may change little.
  • Only public listings are collected, and no private data or login-only pages.

If Google Jobs cannot be reached, the run ends with a clear message, and everything collected up to that point is already saved. The run summary also records why each search stopped.

Integrating Google Job Scraper with other apps

Run Google Job Scraper from code or on a schedule, and use webhooks to react when a run finishes. See the API tab for ready-made JavaScript, Python and CLI snippets.

  • Run the Actor from code and you get a Google Jobs scraping API without managing servers.

  • Call the Actor from Python or Node.js and treat the Apify API as a job scraper API.

  • Pair the Actor with webhooks to push each finished run into your own job posting API or database.

  • The dataset endpoint works like a simple job listings API for your scripts.

  • Pick integrations such as Make, Zapier or Google Sheets to move rows into other tools.

  • Use schedules to repeat a search daily, and combine them with skipSeenJobs to receive only new jobs.

  • The Apify MCP server can expose Actors to AI agents.

Other Actors by crawl_craft

  • Ats Jobs API: paste Greenhouse, Lever or Ashby board links and get open jobs as JSON with title, salary, location, skills, requirements, benefits and company profile. Use it when you need to scrape job postings straight from company career boards instead of Google Jobs. Developers who want a job data API for company career pages can start there.

More Apify Actors by crawl_craft

These Actors come from the same account and are not related to Google Jobs.

  • Telegram Scraper: scrape public Telegram channels in bulk for messages, views, reactions, media, links, polls and subscriber counts.
  • Apple App Store Review Scraper: scrape App Store reviews with stars, text, app version, helpful votes and developer replies.

Google Job Scraper only extracts data that users have made publicly available on Google Jobs and does not extract private data such as email addresses or location. Results may still contain personal data, so collect it only with a legitimate reason and consider the GDPR (Regulation (EU) 2016/679) and the terms of the sites involved. Consult a lawyer if you are unsure.

Read Apify's posts on the legality of web scraping and ethical web scraping for more background.

FAQ

How much does Google Job Scraper cost?

It costs $25 per 1,000 results at the Free plan price and less on paid plans, plus an Actor Start event of $0.00005 per run start. The free plan saves up to 10 jobs per run.

Is there a Google Jobs API?

You can run Google Job Scraper and read the results through the Apify API, so your code gets JSON rows without a Google account. Start a run, then read the dataset items. That gives you job posting data API access to Google Jobs without hosting anything.

Do I need a Google account or API key?

No. The Actor needs no Google account, and you only need an Apify account to run it.

How many jobs can I get per run?

Free plan runs save up to 10 jobs. On paid plans you set the limits yourself with maxResultsPerSearch and maxResultsTotal, and the real count depends on what Google lists for each search.

Is this a SerpApi Google Jobs alternative?

It can cover similar Google Jobs searches by phrase, location, country and filters. The output field names are this Actor's own, listed above, so check them against what your code expects.

Is this a job board scraper?

Not exactly. Google Job Scraper reads Google Jobs, and the via field names the source of each listing. It does not scrape job boards one by one, so use Ats Jobs API for Greenhouse, Lever or Ashby company boards.

Is this a Google Jobs crawler?

No. The Actor reads the Google Jobs search results you ask for and saves each job as a row. It does not crawl whole sites.

Can I collect private data?

No. As a Google Jobs data scraper, the Actor collects public listings only. As a Google Jobs web scraper it does not need a login, and it does not read private data.

Do I need proxies?

No. The proxyConfiguration field is optional, and the default setting handles the connection automatically. You can choose your own proxy settings if you prefer.

Can I use it with Python or Node.js?

Yes. Start the Actor with the Apify API client for Python or JavaScript, then read the dataset items. See the API tab for ready-made snippets.

Your feedback

Report bugs or request features in the Issues tab of this Actor. For custom solutions, such as extra fields or a tailored workflow, write to hello.crawlcraft@gmail.com.