Google Jobs Scraper
Pricing
from $3.00 / 1,000 jobs
Google Jobs Scraper
Scrape Google Jobs with salary, full job description and direct apply links (Indeed, LinkedIn, company sites). More than 10 jobs per query, no duplicates. Pay only per job.
Pricing
from $3.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Jason Todd
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape job listings from Google Jobs, the job search box Google shows for searches like "nurse jobs in Chicago". Google Jobs gathers postings from LinkedIn, Indeed, ZipRecruiter, Glassdoor, company career pages and hundreds of other job boards, so one search covers them all.
For every job you get the title, company, location, salary (as text and as numbers), employment type, posting date, the full job description, Google's job highlights (qualifications, benefits, responsibilities) and the direct apply links to each job board.
- More than 10 jobs per search. Google shows only 10 jobs per search page. The Actor also runs narrower searches for the same query and merges the results, so a query can reach 50 jobs or more (up to 100).
- No duplicates. Each job appears once per run, even when several queries or searches find it, and you pay for it once.
- Pay only for jobs. No charge for searches that find nothing, for retries or for duplicates.
- Light. No browser, so runs need little memory and cost little to run.
What you can use it for
- Track who is hiring for a role in a city, and at what pay.
- Collect salary ranges for a job title across locations.
- Find companies hiring right now for B2B sales leads.
- Build a job board or a job alert feed.
- Feed job descriptions to an AI model to compare skills or requirements.
Input
| Field | What it does | Default |
|---|---|---|
Search queries (queries) | What you would type into Google, one per line, e.g. nurse jobs in Chicago or python developer remote. | required |
Locations (locations) | Optional. Every query is searched in each location (added to the end of the query), e.g. Austin, TX, Denver, CO. | none |
Max jobs per query (maxJobsPerQuery) | 1–100. The Actor stops a query earlier when Google has no more jobs for it. | 30 |
Date posted (datePosted) | any, month, week or day (past 24 hours). | any |
Find more than 10 jobs per query (expandSearch) | Turn off to run exactly one Google search per query (at most 10 jobs). | on |
Country (country) | Two-letter code Google uses to localize the search, e.g. us, gb (or uk), ca, in. A plain $ in salaries is that country's dollar. In some countries, write the query in that country's language, e.g. việc làm python hồ chí minh with vn (see Limitations). | us |
Language (language) | Google's interface language. See Limitations. | en |
Searches at the same time (maxConcurrency) | 1–20. With 256 MB of memory (the default) the Actor runs at most 8 searches at once; give the run more memory for more. | 5 |
Example:
{"queries": ["registered nurse", "warehouse associate"],"locations": ["Austin, TX", "Denver, CO"],"maxJobsPerQuery": 50,"datePosted": "week"}
This runs 4 queries ("registered nurse Austin, TX", "registered nurse Denver, CO", ...), with up to 50 jobs posted in the past week for each.
Output
One item per job. Example (description and lists shortened):
{"query": "sales representative jobs charlotte","rank": 12,"title": "Entry Level Sales Representative","companyName": "Power Home Remodeling","location": "Charlotte, NC","via": "Indeed","postedAt": "21 days ago","postedDate": "2026-09-30","employmentType": "Full-time","salary": "$72K–$130K a year","salaryMin": 72000,"salaryMax": 130000,"salaryCurrency": "USD","salaryPeriod": "year","educationRequirement": "No degree mentioned","benefits": ["Dental insurance", "Health insurance", "Paid time off"],"description": "$3,900 Sign-On Bonus*\n\nEntry Level Sales Representative\n\nBuild Your Career With Purpose\n\n...","jobHighlights": [{ "title": "Qualifications", "items": ["Strong communication and interpersonal skills", "..."] },{ "title": "Benefits", "items": ["$3,900 Sign-On Bonus*", "..."] },{ "title": "Responsibilities", "items": ["Meet with homeowners to deliver engaging presentations...", "..."] }],"applyUrl": "https://www.indeed.com/viewjob?jk=acf6c9af8e0ab385","applyOptions": [{ "title": "Apply directly on Indeed", "url": "https://www.indeed.com/viewjob?jk=acf6c9af8e0ab385" },{ "title": "Apply on LinkedIn", "url": "https://www.linkedin.com/jobs/view/entry-level-sales-representative-at-power-home-remodeling-4473938005" }],"extensions": ["21 days ago", "72K–130K a year", "Full-time", "No Degree Mentioned", "Dental insurance", "Health insurance", "Paid time off"],"companyLogo": "https://encrypted-tbn0.gstatic.com/images?q=tbn:...","googleJobsUrl": "https://www.google.com/search?ibp=htl;jobs&q=...&htidocid=Q1qCd3IIQGefYGeYAAAAAA%3D%3D...","jobId": "Q1qCd3IIQGefYGeYAAAAAA==","foundWith": "sales representative jobs charlotte entry level","scrapedAt": "2026-10-21T14:17:05Z"}
Notes on some fields:
- Fields Google does not show for a job are
nullor empty ([]). In our tests (October 2026) Google showed a salary for about a third of US jobs. postedDateis estimated frompostedAt("5 days ago"); a month counts as 30 days.salaryMinandsalaryMaxare numbers from the salary text ("$22–$25 an hour" gives 22 and 25,salaryPeriod"hour"). A plain$is the dollar of the country you search (US dollars forus, Canadian dollars forca).descriptionis the full text. In the EU (Germany in our tests) Google shows only the first lines ("Job preview"); the Actor still gets the full text from the page.jobHighlightsandbenefitsare shown by Google on US pages; British and Canadian pages had none in our tests.applyUrlandapplyOptionsare the job board links themselves, not Google redirects.foundWithis the Google search that found the job (see below).rankis the order in which jobs were found for the query.jobIdis Google's id of the posting. Use it to spot the same job in later runs.
In the Output tab, the Jobs, Salaries and Descriptions views show the most useful columns. You can download everything as JSON, CSV, Excel, XML or HTML, or get it through the Apify API.
The key-value store also has a SUMMARY record: for each query, how many jobs, searches and requests it took, how many jobs were too old for datePosted, and why it stopped.
How it gets more than 10 jobs per query
Google Jobs shows 10 jobs per search and has no page 2 for automated requests. So for each query the Actor runs, in this order, until it has maxJobsPerQuery jobs:
- the query itself;
- the same query with Google's "date posted" filters (past month, then past week);
- the query with one extra word Google itself suggests: "full time", "part time", "entry level", "senior", "contract";
- the query with the "past 24 hours" filter.
Every search returns jobs for your query, in the same place, and duplicates are removed. An extra word can tilt the mix, for example toward part-time or senior jobs; foundWith tells you which search found each job. If you only want the exact search, turn off Find more than 10 jobs per query.
After the first search, the extra searches a query still needs run at the same time, so a query with 30 jobs takes about as long as two searches. A query stops early when its first search has fewer than 10 jobs (Google has no more), or when extra searches find almost nothing new. A first search without any jobs is asked for 3 times before the query ends, because Google's answer changes from one request to the next.
Pricing
This Actor uses pay-per-event pricing: you pay for each job in your results, $3 per 1,000 jobs at the time of writing (see the Pricing tab for the current price). Jobs found twice are charged once. Searches without jobs, retries, Google's blocks and jobs older than your datePosted cost you nothing.
A few examples:
- 1 query, 30 jobs: about $0.09
- 20 queries × 50 jobs: about $3
- 1,000 jobs per day for a month: about $90
You can set a maximum cost per run in the run options. The Actor then stops at or just under that amount (it does not open another page whose results it could not charge for) and keeps everything found so far.
Limitations
- The data is what Google Jobs shows: if a job board gave Google no salary or date, the Actor has none either.
- Google's date filter now and then lets an older job through (a job from 21 days ago in a "past week" search in our tests). The Actor leaves such jobs out, free of charge (
olderThanDatePostedinSUMMARY). Jobs without a posting date are kept. - Up to 100 jobs per query. For more, split a broad query into narrower ones, for example by city. One run takes up to 1,000 searches (queries × locations); split bigger jobs into several runs.
- Tested on English pages of searches in the US, the UK, Canada and Germany (October 2026). Google Jobs is not offered in every country: an Australian search gave ordinary web results in our tests, so such searches return no jobs. In some countries Google shows no jobs for a query written in English:
python developer jobs Paris(fr) andpython developer jobs in Ho Chi Minh City(vn) gave "no Jobs matches", whiledéveloppeur python Parisandviệc làm python hồ chí minhgave jobs. Write the query in the country's language and keeplanguageaten: titles and descriptions stay as the employer wrote them, and Google's labels stay in English, so every field is filled. With a language other thanen,postedAt,employmentType,salaryandeducationRequirementstay empty (Google writes their labels in that language), butextensionsstill holds the same details as Google shows them. - Each Google search goes through Apify's Google SERP proxy, from the country you choose, which takes a few seconds per search. When Google still answers as if the visitor were in another country, the Actor notices from the page and searches again (at no cost to you). Search queries are public Google searches; the Actor does not log in anywhere.
FAQ
Why did a query return fewer jobs than I asked for?
Google had no more jobs for it, or the extra searches stopped finding new ones. The SUMMARY record says why each query stopped.
Can I get only new jobs every day?
Schedule the Actor with datePosted: "day" and keep the jobIds you already have.
Is it legal to scrape Google Jobs? The Actor only collects job postings that are publicly shown in Google search results. You are responsible for how you use the data, especially any personal data in it. If in doubt, ask a lawyer.
Something doesn't work or a field is missing. Please open an issue in the Issues tab with the run ID. Google changes its pages from time to time; the Actor saves a copy of any page that looks unusual, which makes fixes quick.