Google Job Scraper
Pricing
from $17.50 / 1,000 results
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
Maintained by CommunityActor 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.
| Field | Description | Example |
|---|---|---|
position | Order in which the job was found within its search. | 1 |
job_id | Google's own ID of the job. | CS0hxrtrAnLdRsRNAAAAAA== |
title | Title of the job posting. | Staff+ Fullstack Software Engineer |
company_name | Employer that posted the job. | Anthropic |
location | Where the job is located. | New York, NY |
search_location | The location you searched for (empty when none was given). | New York, NY |
via | Source Google shows the job from. | via LinkedIn |
is_remote | True when the job can be done remotely. | false |
employment_type | FULL_TIME, PART_TIME, CONTRACTOR, INTERN, TEMPORARY, PER_DIEM or VOLUNTEER. | FULL_TIME |
schedule_type | Schedule exactly as Google writes it. | Full-time |
posted_at | Posting age as Google writes it. | 1 day ago |
posted_at_datetime | Estimated posting time in ISO format. | 2026-10-09T19:57:11+00:00 |
posted_hours_ago | Estimated hours since the job was posted. | 24.0 |
salary | Salary range as shown by Google or found in the description. | Range text with currency |
salary_min | Lower end of the pay range. | 405000 |
salary_max | Upper end of the pay range. | 485000 |
salary_currency | Currency code of the pay range. | USD |
salary_period | HOUR, DAY, WEEK, MONTH or YEAR. | YEAR |
salary_annual_min | Lower end converted to a year. | 405000 |
salary_annual_max | Upper end converted to a year. | 485000 |
salary_source | google when Google shows the pay, description when it was found in the text. | description |
seniority_level | INTERN, ENTRY, MID, SENIOR, LEAD, PRINCIPAL or EXECUTIVE, guessed from the title. | PRINCIPAL |
experience_years_min | Smallest number of years the posting asks for. | 8 |
no_degree_mentioned | True when the posting says no degree is required. | false |
direct_apply_link | Apply link on the employer's own site or hiring system, when one exists. | https://boards.greenhouse.io/example/jobs/1 |
apply_options | Every place to apply: title, link, domain, link type and hiring system. | Array of apply options |
apply_platforms_count | How many places the job can be applied for. | 8 |
description | Full job description text. | About the role ... |
description_length | Number of characters in the description. | 6774 |
job_highlights | Qualifications, responsibilities and benefits lists. | Array of highlight lists |
detected_extensions | Job tags sorted into posted_at, schedule_type, benefits and similar. | posted_at: 1 day ago, schedule_type: Full-time |
extensions | Short tags Google shows next to the job. | 1 day ago, Full-time |
thumbnail | Employer logo link. | https://encrypted-tbn0.gstatic.com/images?q=tbn:example |
share_link | Link that opens this job on Google. | https://www.google.com/search?q=example&job=example |
duplicate_postings_count | How many other copies of the same job Google merged into this one. | 7 |
query | The phrase this job was found with. | software engineer |
country | Country code the search ran for. | us |
language | Interface language of the results. | en |
google_domain | Google site that was searched. | google.com |
search_timestamp | When the search started. | 2026-10-10T19:57:09+00:00 |
total_jobs_found | Unique 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_minandsalary_annual_maxto build job salary data you can sort and chart. -
Pay across countries: Track Google Jobs salary figures for one role by changing
countryandgoogleDomainbetween 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_minandlocationfor trend analysis. -
Remote and entry-level search: Save a Google Jobs remote no degree search with the
remoteOnlyandnoDegreeOnlyoptions. -
Hiring dashboards: Power your own job market data API or dashboard with scheduled runs and the
posted_at_datetimefield. -
Ongoing monitoring: Keep a job postings database current by scheduling runs with
skipSeenJobsturned 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:
- Create a free Apify account.
- Open Google Job Scraper in Apify Store.
- 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). - Pick filters such as Date posted, Job types or Remote jobs only.
- Click Start and wait for the run to finish.
- 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 plan | Price 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.

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.

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
maxResultsTotalsets 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
languagecan 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
salaryMinAnnualorrequireSalary. seniority_levelis guessed from the job title, andposted_at_datetimeandposted_hours_agoare estimates based on the age Google shows.radiusKmis 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
skipSeenJobsto receive only new jobs. -
The Apify MCP server can expose Actors to AI agents.
Other Actors by crawl_craft
A related job-data Actor
- 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.
Is it legal to collect Google Jobs data?
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.