Google Jobs Scraper
Pricing
Pay per usage
Google Jobs Scraper
Scrape Google Jobs search results at scale. Extract job titles, companies, locations, salaries, descriptions, qualifications, and application links from Google's built-in job search aggregator.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Donny Nguyen
Actor stats
0
Bookmarked
2
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape Google Jobs search results at scale. Extract job titles, companies, locations, salaries, descriptions, qualifications, and application links from Google's built-in job search aggregator.
Google Jobs aggregates listings from dozens of job boards (LinkedIn, Indeed, Glassdoor, ZipRecruiter, and more) into a single searchable interface. This actor extracts structured data from those aggregated results, giving you a unified view of the job market without scraping each job board individually.
Features
- Search by keyword query or provide direct Google Jobs URLs
- Extract full job descriptions by clicking into each listing
- Capture salary information when available
- Collect application links from multiple sources per listing
- Scroll through paginated results automatically
- Residential proxy support for reliable access
- Configurable limits per query and globally
Input Parameters
| Field | Type | Default | Description |
|---|---|---|---|
searchQuery | string | "" | A job search query string (e.g., "software engineer remote", "marketing manager New York"). The actor automatically appends "jobs" and constructs the Google Jobs URL. You can provide either this field or the urls field, or both. |
urls | array | [] | List of Google search URLs with job queries. Use Google Jobs URLs in the format: https://www.google.com/search?q=software+engineer+jobs&ibp=htl;jobs. If searchQuery is also provided, URLs from both sources will be combined. |
maxResults | integer | 100 | Maximum total number of job listings to extract across all URLs. The actor stops once this limit is reached. Range: 1-1000. |
maxJobsPerQuery | integer | 50 | Maximum number of job listings to extract per individual search query or URL. Set to 0 for unlimited (bounded only by maxResults). Range: 0-500. |
useResidentialProxy | boolean | true | Whether to use residential proxies for scraping. Residential proxies are more expensive but much less likely to be blocked by Google. Recommended for production runs. |
includeDescription | boolean | true | Whether to click on each job card and extract the full job description text. Enabling this makes scraping slower but provides complete job details. Disable for faster runs if you only need titles, companies, and locations. |
Output Fields
Each job listing produces a data object with the following fields:
| Field | Type | Description |
|---|---|---|
title | string | Job title (e.g., "Senior Software Engineer", "Marketing Manager") |
company | string | Company name posting the job |
location | string | Job location (e.g., "New York, NY", "Remote") |
salary | string | Salary range or compensation info when displayed by Google (e.g., "$120K-$160K a year") |
jobType | string | Employment type (e.g., "Full-time", "Part-time", "Contract", "Temporary") |
postedDate | string | When the job was posted relative to now (e.g., "3 days ago", "2 weeks ago") |
description | string | Full job description text extracted from the expanded detail panel. Only populated when includeDescription is enabled. |
source | string | The primary source or job board the listing originates from (e.g., "LinkedIn", "Indeed", "Glassdoor") |
applyLink | string | Primary application URL for the job listing |
applyLinks | array | All available application links with source names. Each entry has source (string) and url (string) fields. |
qualifications | array | List of qualification bullet points extracted from the job details panel, when available. |
searchUrl | string | The Google search URL that produced this result |
scrapedAt | string | ISO 8601 timestamp of when the data was extracted |
Error Output Fields
When a request fails, the output contains:
| Field | Type | Description |
|---|---|---|
url | string | The URL that failed |
error | string | Error code (e.g., "403", "429", "REQUEST_FAILED") |
errorMessage | string | Human-readable error description |
scrapedAt | string | ISO 8601 timestamp of the failure |
Example Output
{"title": "Senior Software Engineer","company": "Acme Corp","location": "San Francisco, CA","salary": "$150,000 - $200,000 a year","jobType": "Full-time","postedDate": "3 days ago","description": "We are looking for a Senior Software Engineer to join our platform team. You will design and build scalable microservices...","source": "LinkedIn","applyLink": "https://www.linkedin.com/jobs/view/123456","applyLinks": [{ "source": "LinkedIn", "url": "https://www.linkedin.com/jobs/view/123456" },{ "source": "Indeed", "url": "https://www.indeed.com/viewjob?jk=abcdef" },{ "source": "Glassdoor", "url": "https://www.glassdoor.com/job-listing/..." }],"qualifications": ["5+ years of experience with distributed systems","Proficiency in Go, Python, or Java","Experience with Kubernetes and cloud infrastructure"],"searchUrl": "https://www.google.com/search?q=senior+software+engineer+jobs+san+francisco&ibp=htl;jobs","scrapedAt": "2025-01-15T10:30:00.000Z"}
Use Cases
Competitor Hiring Analysis
Track which roles your competitors are hiring for to understand their growth strategy and investment areas. Monitor job postings over time to identify trends in team expansion, new product lines, or geographic expansion.
{"searchQuery": "Acme Corp","maxResults": 200,"includeDescription": true}
Salary Research and Benchmarking
Collect salary data across roles, locations, and industries to build compensation benchmarks. Google Jobs surfaces salary information from multiple sources, making it an efficient way to gather market rate data.
{"urls": ["https://www.google.com/search?q=data+scientist+jobs+new+york&ibp=htl;jobs","https://www.google.com/search?q=data+scientist+jobs+san+francisco&ibp=htl;jobs","https://www.google.com/search?q=data+scientist+jobs+austin&ibp=htl;jobs"],"maxResults": 500,"maxJobsPerQuery": 100}
Job Market Trend Monitoring
Track demand for specific skills, technologies, or roles across the job market. Identify emerging trends by comparing posting volumes and requirements over time.
{"searchQuery": "machine learning engineer remote","maxResults": 100,"includeDescription": true}
Lead Generation for Recruiting
Identify companies actively hiring for specific roles to target with recruiting services. Extract company names, locations, and job details to build prospecting lists.
{"searchQuery": "VP of Engineering startup","maxResults": 150,"includeDescription": false}
Skills Gap Analysis
Analyze job descriptions to identify the most commonly required skills, certifications, and qualifications for a given role. Useful for career planning, training program development, and educational content creation.
{"searchQuery": "cybersecurity analyst","maxResults": 200,"includeDescription": true}
Cost Estimate
This actor uses the following pricing model:
- Per result: $0.0015 per job listing extracted
- Per start: $0.00005 per actor run
Example cost calculations:
| Scenario | Results | Estimated Cost |
|---|---|---|
| Single query, 50 jobs | 50 | $0.075 |
| Single query, 100 jobs | 100 | $0.15 |
| 5 queries, 50 jobs each | 250 | $0.375 |
| Large research, 500 jobs | 500 | $0.75 |
| Enterprise batch, 1000 jobs | 1000 | $1.50 |
Note: Costs may vary based on proxy usage and retry rates. Residential proxy usage may incur additional Apify platform costs. Enabling includeDescription increases runtime but does not change the per-result price.
Tips
- Use
searchQueryfor quick searches: Just type what you would type into Google, like "python developer remote" -- the actor handles URL construction. - Use
urlsfor precise control: Construct Google Jobs URLs with specific filters (location, date posted) and pass them directly. - Disable descriptions for speed: If you only need job titles, companies, and locations, set
includeDescriptiontofalsefor significantly faster scraping. - Balance query limits: Use
maxJobsPerQueryto ensure even coverage when running multiple search queries. - Residential proxies: Keep
useResidentialProxyenabled for production runs. Google aggressively blocks datacenter IPs on job search pages.