Google Jobs Scraper
Pricing
from $0.01 / 1,000 results
Google Jobs Scraper
The most advanced Google Jobs Scraper available! Built with enterprise-grade flexibility, lightning-fast performance, and comprehensive customization options. Extract detailed job data, application links, company information, and full job descriptions. Unlimited usage, no monthly rental fees.
Pricing
from $0.01 / 1,000 results
Rating
3.4
(9)
Developer
John
Maintained by CommunityActor stats
37
Bookmarked
2.8K
Total users
507
Monthly active users
0.15 hours
Issues response
5 hours ago
Last modified
Categories
Share
Scrape job listings from Google Jobs with location targeting, pagination control, and language/country filtering. Returns structured JSON with full job details, apply links, and highlights, ready for immediate use in pipelines or spreadsheets.
Python + MCP example: Apify-Google-Jobs-Scraper on GitHub
What This Actor Returns
Each dataset item is a single job listing with:
- Job basics: title, company name, location, source platform (
via) - Description: full job description text
- Highlights: structured qualifications, responsibilities, and benefits
- Extensions: raw tags like "Full-time", "3 days ago", "Health insurance"
- Detected extensions: parsed metadata:
posted_at,schedule_type, benefits flags - Apply options: direct application links (LinkedIn, Indeed, company site, etc.)
- Job ID: Google's unique identifier for the listing
- Search metadata: query, country, language, timestamp, pages processed
Use Cases
- Job market research: track hiring trends by role, location, or industry
- Recruiting pipelines: feed job data into ATS or CRM systems
- Salary and benefits benchmarking: aggregate compensation signals across listings
- Competitive intelligence: monitor which companies are hiring for specific roles
- Academic research: analyze labor market dynamics at scale
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | ✅ | None | Job search query (e.g., "Software Engineer", "Data Scientist in NYC") |
location | string | ❌ | None | Location filter (e.g., "San Francisco, CA", "London, UK"). If empty and country is set, the country name is used automatically. |
country | string | ❌ | None | Country code for search (one of us, ca, uk, de, fr, au, jp, in, br, mx) |
language | string | ❌ | None | Language code (e.g., en, fr, es) |
google_domain | string | ❌ | google.com | Google domain to use (e.g., google.co.uk) |
num_results | integer | ❌ | 100 | Maximum number of job listings to return |
max_pagination | integer | ❌ | 0 | Maximum pages to fetch. Set to 0 for unlimited (fetch all available results). |
include_lrad | boolean | ❌ | false | Enable location radius search |
lrad_value | string | ❌ | None | Radius in km when include_lrad is true (e.g., "25") |
max_delay | integer | ❌ | 1 | Delay between page requests in seconds |
cleanup_results | boolean | ❌ | true | Remove internal API metadata from output |
Location handling: Search by city, state, or country with the location field. A city-level location gives the best results. If you set a country but leave location empty, the actor fills in the country name as the location automatically (Google Jobs returns nothing for a country-only search). If Google returns no results for a location-targeted search (which can happen for some non-US cities), the actor automatically retries with the location merged into the query, so a search like "Product Manager" in "Berlin" still returns listings.
Example Output
Each dataset item represents one job listing:
{"title": "Senior Software Engineer","company_name": "Acme Corp","location": "San Francisco, CA","via": "via LinkedIn","description": "We are looking for a Senior Software Engineer to join our growing team...","extensions": ["Full-time", "3 days ago", "Health insurance", "Dental insurance"],"detected_extensions": {"posted_at": "3 days ago","schedule_type": "Full-time","health_insurance": true,"dental_coverage": true},"job_highlights": [{"title": "Qualifications","items": ["5+ years of Python experience", "BS/MS in Computer Science or related field"]},{"title": "Responsibilities","items": ["Design and build scalable backend services", "Collaborate with product and design teams"]}],"apply_options": [{ "title": "LinkedIn", "link": "https://www.linkedin.com/jobs/view/..." },{ "title": "Indeed", "link": "https://www.indeed.com/viewjob?..." }],"job_id": "eyJqb2JfdGl0bGUiOiJTZW5pb3IgU29mdHdhcmUgRW5naW5lZXIifQ==","share_link": "https://www.google.com/search?q=Senior+Software+Engineer&ibp=htl;jobs&htidocid=...","query": "Software Engineer","location": "San Francisco, CA","country": "us","language": "en","google_domain": "google.com","search_timestamp": "2026-05-07T14:23:01.456789","total_jobs_found": 87,"pages_processed": 9}
Pricing
This actor uses pay-per-event billing, you only pay for pages actually fetched:
| Event | Price | When charged |
|---|---|---|
| Actor start | $0.00005 | Per GB of memory when the run starts (minimum one event) |
| Result | $0.00001 | Per job listing saved to the dataset |
| Page processed | $0.15 | Per page of results actually retrieved (approx. 10 jobs/page), FREE plan price |
Paid Apify plans get a discount on the page price: $0.11 on BRONZE and $0.10 on SILVER and above.
Pages are charged one at a time as they are fetched: the first page inquiry is charged when the run starts, and each further page only when it is actually requested. A search that finds no listings costs a single page inquiry, never the projected full run. If your run's cost limit is reached mid-search, pagination stops gracefully and you keep everything fetched so far.
Estimated costs (FREE plan):
- 10 jobs (~1 page): ~$0.15
- 100 jobs (~10 pages): ~$1.50
- 1,000 jobs (~100 pages): ~$15.00
How to Get Started
- Go to the actor page on Apify and click Try for free
- Enter your search query and optional location
- Set
num_resultsto control how many listings to retrieve - Click Run: results appear in the dataset within seconds
- Export to JSON, CSV, or connect via the Apify API or MCP integration
Quickstart input:
{"query": "Software Engineer","location": "San Francisco, CA","num_results": 50}
FAQ / Troubleshooting
No results returned?
- Check that your
queryis not empty - For non-US searches, set
google_domainto your country's domain (e.g.google.defor Germany,google.frfor France) and use a city inlocation(e.g.Berlin,Munich), not a country name. The same search often returns nothing ongoogle.combut full results on the local domain. - Use a job-title style
query(e.g. "Product Manager", "Registered Nurse") rather than a descriptive phrase. Google Jobs matches on job titles, so niche or descriptive terms can return nothing. - Google sometimes returns nothing for a separate location filter, especially for non-US cities. The actor automatically retries such searches with the city folded into the query (for example, "Product Manager Berlin"), so location-targeted searches keep working. You can also put the city directly in
queryyourself. - Setting only
countrywith an emptylocationused to return nothing - Google Jobs needs a location to search against. The actor now fills in the country name as the location automatically, so country-only searches work. For sharper results, add a city-levellocation(e.g.London, United Kingdom). - Try setting
countryandlanguageexplicitly (e.g.,"us"and"en")
Fewer results than expected?
- Google Jobs may have fewer listings than
num_resultsfor your query, this is normal - Try broadening the query (e.g., "engineer" instead of "senior backend engineer")
Budget warning on startup?
- Increase your actor run budget limit in the run configuration
- Or reduce
num_results/ set a lowermax_paginationlimit
Actor exits immediately?
- Check that your run has a sufficient budget for at least 1 page (~$0.15 minimum on the FREE plan)
Missing fields in some listings?
- Not all Google Jobs listings include every field (salary, highlights, apply links vary by posting)
- Use
additionalPropertiesin your integration to handle optional fields gracefully
n8n integration
Available as an n8n community node, n8n-nodes-google-jobs-api. In n8n: Settings, Community Nodes, install n8n-nodes-google-jobs-api, then use it in any workflow (it also works as an AI Agent tool).
Featured Tasks
Ready-to-run examples that show this API solving a specific problem. Each opens its own setup so you can run it on your account in one click.
- Find remote software engineer jobs via MCP - let AI agents pull remote engineering listings with company, source, and direct apply links.
- Track nursing jobs in Texas with apply links - statewide healthcare job tracking with employer, highlights, and apply links per role.
- Check a company's job ads in Claude Cowork - monitor any employer's open roles inside Claude Cowork (free trial available) via MCP.
- Track jobs posted in the last 3 days - recent listings filtered by posted_at, with company, location, source, and direct apply links.
- Find remote customer service jobs via MCP - let AI agents pull remote support roles with company, posting source, and direct apply links.
Where the Data Comes From
Every row this API returns starts out as a listing on Google Jobs, the results panel Google shows when someone searches for a role. Google aggregates those postings from company career pages and job boards, which is why each dataset item carries a via field naming the board a posting came from, plus an apply_options array with the direct application links. This is an independent tool. It is not affiliated with or endorsed by Google, and it is not Google's own API.
How is this different from searching Google Jobs by hand?
Scrolling the Google Jobs results panel in a browser hands you one card at a time and makes you keep loading more. This API walks the pagination for you and returns the whole set in a single run, with title, company_name, location, description, job_highlights, and detected_extensions already parsed into fields you can sort, filter, or export to CSV. An afternoon of scrolling and copy-paste becomes one run of a few minutes.
Does Google Jobs have a public API?
Not one that gives you the search results. Google's developer documentation covers the publishing side: how an employer marks up a job posting so that Google Jobs can index it. There is no supported endpoint for reading listings back out of the panel, and that gap is what this API fills. Pass a query and an optional location and you get structured JSON back, including job_id, share_link, apply_options, and run metadata such as total_jobs_found and pages_processed.
Last Updated: 2026.07.17