Google Jobs Scraper
Pricing
$3.00 / 1,000 job scrapeds
Google Jobs Scraper
Scrape Google for Jobs. 22+ fields per posting (title, company, salary, apply links, remote flag). US/BR/MX/CA/UK/IN/AU/JP/SG. Pay only per job returned.
Google Jobs Scraper: Salaries, Companies and Apply Links
Google Jobs Scraper pulls job listings from Google for Jobs for any search query and location. Each posting comes back with title, company, salary range, employment type, remote flag, direct apply links, posting date and the full description.
It covers 9 countries (United States, Brazil, Mexico, Canada, United Kingdom, India, Australia, Japan and Singapore) and needs no login, no cookies and no proxy setup.
Export to JSON, CSV or Excel, call it through the API, schedule it, or plug it into an AI agent.
Quick start
- Type one or more job titles in Search queries (for example
software engineer). - Add a Location such as
San Francisco, CA, or leave it empty for the whole country. - Pick the Country and click Start.
{"queries": ["software engineer", "data analyst"],"location": "Austin, TX","countryCode": "us","datePosted": "week","maxItems": 100}
What can you do with it?
- Recruiting and sourcing: see who is hiring for which roles in any city, with apply links straight to LinkedIn, Indeed, Greenhouse, Lever and company career pages.
- Salary benchmarking: collect disclosed
salaryMin/salaryMaxby role and city to build compensation bands. - Labor market research: measure hiring demand, employment-type mix and posting volume across roles, companies and regions.
- Remote job alerts: filter with
workFromHomeand run it on a schedule to catch new remote openings. - AI and LLM datasets: get clean, structured job JSON for RAG pipelines, agents and analysis.
What data does it extract?
| Field | Description |
|---|---|
title | Job title |
companyName / companyLogo | Hiring company and logo URL |
location / latitude / longitude | Location text and coordinates when available |
salaryMin / salaryMax / salaryCurrency / salaryPeriod | Disclosed pay range, currency and period (HOUR, MONTH, YEAR) |
jobType / workFromHome | Employment type and remote flag |
description / descriptionHtml | Job description as plain text and HTML |
benefits / qualifications / responsibilities | Bullet lists parsed from the posting |
applyOptions | Apply links per job board (LinkedIn, Indeed, Greenhouse, Lever, company ATS) |
postedAt / postedAtIso / postedVia | How recent the posting is and which board published it |
jobId / sourceQuery / scrapedAt | Identifier, the query that found it and extraction time |
Input
| Field | Type | Description |
|---|---|---|
queries | Array | One or more search keywords, e.g. ["software engineer", "data scientist"]. Each query runs on its own. |
location | String | City, state or region, e.g. "San Francisco, CA". Leave empty for country-wide results. |
countryCode | String | us, br, mx, ca, gb, in, au, jp or sg. Default us. |
languageCode | String | Language of the results, e.g. en, pt, es. Default en. |
datePosted | String | all, today, 3days, week or month. Default all. |
jobType | Array | FULLTIME, PARTTIME, CONTRACTOR, INTERN. Empty means all types. |
workFromHome | Boolean | Return only remote jobs. Default false. |
maxItems | Integer | Maximum number of jobs after removing duplicates. Default 500, min 50, max 10,000. |
maxCost | Number | Spending ceiling in USD for large runs (maxItems above 500). Default $2, max $20. |
Use countryCode and languageCode (not country / language). Google turned off its Jobs widget in the EU/EEA, so EU countries are not available.
Output example
One record per job:
{"jobId": "JqaxCjx4oqiOf07WAAAAAA==","title": "Senior Software Engineer","companyName": "Acme Inc","location": "San Francisco, CA","latitude": 37.7749,"longitude": -122.4194,"description": "We're hiring senior engineers for our infrastructure team...","postedAt": "5 days ago","postedAtIso": "2026-06-18T00:00:00.000Z","jobType": "FULLTIME","workFromHome": false,"salaryMin": 180000,"salaryMax": 240000,"salaryCurrency": "USD","salaryPeriod": "YEAR","benefits": ["Health insurance", "401(k)", "Stock options"],"qualifications": ["5+ years experience", "Go or Rust proficiency"],"applyOptions": [{ "network": "linkedin", "url": "https://www.linkedin.com/jobs/view/...", "directApply": false },{ "network": "greenhouse", "url": "https://boards.greenhouse.io/acme/jobs/...", "directApply": false }],"postedVia": "LinkedIn","sourceQuery": "software engineer","scrapedAt": "2026-06-23T12:00:00.000Z"}
Field notes
- Salary fields are filled only when the employer discloses pay. Otherwise they are
null. Salaries in USD, EUR, GBP, JPY and INR are recognized. applyOptionshas one entry per apply destination. Theurlis the real destination (Google's redirect is removed), so you get the actual LinkedIn, Greenhouse, Lever or company link.postedAtis Google's relative text ("5 days ago").postedAtIsois the same date as ISO 8601.latitude,longitudeandcompanyLogoarenullwhen Google does not show them for that listing.jobIdis Google's identifier when available. Otherwise it is built from title, company and location so you can deduplicate across runs.
How many results can I get?
Google shows roughly 100 jobs per search. When maxItems is above 500, the scraper automatically splits the search by posting date and employment type and merges the results without duplicates, so you can go well past that limit. The maxCost setting keeps large runs within your budget.
For the widest coverage, use several specific queries together with a location.
Pricing
You pay per job returned (see the Pricing tab for the current price). Runs that return no jobs cost nothing for results.
Free Apify plan: free accounts receive a small set of sample jobs (clearly marked with a _notice field) so you can see the output format. Real Google Jobs data requires a paid Apify plan.
Integrations
- API: start runs and download results with the Apify API or the JavaScript and Python clients.
- Schedules: run it on a schedule for recurring job monitoring and get notified if a run fails.
- AI agents (MCP): let ChatGPT, Claude and other assistants call this scraper through the Apify MCP server.
- No-code: send results to Make, Zapier, Google Sheets, Slack or your database with Apify integrations and webhooks.
FAQ
How does it work? It searches the Google Jobs widget the same way a job seeker would, opens each listing and turns the visible data (title, company, salary, apply links, description) into a structured dataset, at scale.
Is it legal to scrape Google Jobs? It collects only publicly available job listings, with no login and no personal data. You are responsible for how you use the data and for following the laws and terms that apply to you. See Is web scraping legal?
Do I need a Google account? No. No account, cookies or credentials are needed. Unblocking is handled for you.
Can I scrape only remote jobs?
Yes. Set workFromHome to true. You can also filter by jobType and datePosted.
My run succeeded but returned 0 jobs. Why? Sometimes Google shows a consent page with no job cards. The scraper detects it, reloads and retries with a fresh connection. If it still finds nothing, try a broader query or a different location. Empty runs are not charged for results.
Why did I get sample data? You are on the free Apify plan. Upgrade to a paid plan to get real listings.
Related scrapers
- Upwork Jobs Scraper: freelance projects from Upwork.
- Glassdoor Scraper: company reviews, salaries and ratings.
- Workana Scraper: freelance projects from Workana (Latin America).
- Wellfound Jobs Scraper: startup and tech jobs from Wellfound (AngelList).
Feedback
Found a problem or need a field that is missing? Open an issue in the Issues tab and we usually reply within a day. If the scraper saved you time, a review on the Apify Store helps a lot.