Google Jobs API — Job Listings, Salary & Apply Links
Pricing
$3.00 / 1,000 job delivereds
Google Jobs API — Job Listings, Salary & Apply Links
Google Jobs listings as JSON for any job title, city and country: company, location, posted date, salary, job type, full description, highlights and every apply link. Unofficial Google Jobs API.
Pricing
$3.00 / 1,000 job delivereds
Rating
0.0
(0)
Developer
yestrue
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Turn Google Jobs into clean JSON. Give the Actor a list of job titles and cities and it returns one record per posting: title, company, location, posted date, salary (as text and as numbers), job type, the full job description, Google's own highlights (qualifications, responsibilities, benefits) and every place you can apply — Indeed, LinkedIn, Glassdoor, the company's career site and more, with the direct ones flagged. Any country, any language, no API key, no browser to run.
Try it in 1 minute:
- Press Start — the prefilled input searches "software engineer" and "data analyst" jobs in Austin, TX.
- A few seconds later the Output tab lists the jobs with company, pay, job type, description and apply links.
- Download JSON, CSV or Excel, call it from the API, or schedule it to watch a job market every morning.
You pay only for jobs delivered. Searches with no jobs, captcha pages and errors are free — they come back as a status record that says why.
Use it to:
- Build a job board or job alert without scraping a dozen job sites — Google already merges them.
- Track salary ranges by role and city: pay comes as text plus
salaryMin,salaryMax,salaryCurrencyandsalaryPeriod. - Watch who is hiring for a skill or a title: company, location, posting age, and the site each posting came from.
- Feed an AI agent or a recruiting workflow the full job text and structured highlights instead of a screenshot of a search page.
- Compare cities and countries in one run: every job search is run in every location you list.
What you get
One record per job:
| Field | What it is |
|---|---|
query, searchLocation, country, language, position | What was searched, where, and the job's rank in that search |
jobId | Stable id of the posting in Google Jobs |
title, company, location | The job title, the hiring company and the place of the job |
via | The site Google lists the posting from |
postedText, postedAgeDays, postedAtApprox | "4 days ago", whole days, and an ISO time worked out from it |
salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod | The pay as shown and as numbers (HOUR, DAY, WEEK, MONTH, YEAR); null when the posting shows none |
employmentType, qualification, remote, benefits[] | Full-time / part-time / contractor, degree note, a remote flag, benefit tags |
description | The posting text with line breaks. descriptionIsPreview is true when Google showed only the first lines (this happens for some sources and languages) |
highlights[] | Google's extracted sections as { title, items[] } — qualifications, responsibilities, benefits |
applyUrl, applyOptions[] | The first apply link and all of them as { source, url, direct } |
googleJobsUrl, companyLogo | A link that opens the posting in Google Jobs, and the logo when shown |
status, error, scrapedAt | OK, or NO_RESULTS / FAILED with the reason; collection time |
Phone numbers and e-mail addresses are removed from the description text.
Input
| Field | What it does |
|---|---|
queries | Job titles or keywords, one per line. Required. |
locations | Cities or regions, one per line. Every job search runs in every location. Empty = no place. |
country | Two-letter country code of the Google edition, default us (gb, de, fr, ca, au, in, ...). |
language | Language code, default en. |
maxJobsPerQuery | Jobs per search (job title in one location), 1-10, default 10. |
datePosted | Any time, today, last 3 days, last week, last month. Jobs outside the period are not delivered and not charged; jobs without a date are kept. |
maxConcurrency | Searches read at the same time, 1-10 (default 3). |
Get more than ten jobs: Google shows the ten best matches for each search, so widen the net — list several cities (Austin, TX, Dallas, TX, Houston, TX), several phrasings (software engineer, backend developer, full stack developer) or several countries in separate runs. A posting found by more than one search is delivered once per run.
Example output
{"query": "software engineer","searchLocation": "Austin, TX","position": 1,"title": "Associate Software Engineer","company": "Charles Schwab","location": "Austin, TX","via": "Schwab Jobs","postedText": "4 days ago","salaryText": "$44.23–$45.19 an hour","salaryMin": 44.23,"salaryMax": 45.19,"salaryCurrency": "USD","salaryPeriod": "HOUR","employmentType": "Full-time","applyOptions": [{ "source": "Schwab Jobs", "url": "https://www.google.com/goto?url=…", "direct": false },{ "source": "Glassdoor", "url": "https://www.google.com/goto?url=…", "direct": true }],"status": "OK"}
Good to know
- The data is what Google Jobs shows publicly for the search, in the language of the posting. Pay and job type appear only when the posting states them.
- A search that gives nothing gets one free
NO_RESULTSrecord. If Google answers with a captcha page the search gets one freeFAILEDrecord and is not retried — the Actor never solves captchas or works around blocks. Run it again a little later. - Apply links are Google's own redirect links; they open the application on the source site.
- This is an unofficial tool and is not affiliated with Google.
Run it on a schedule, connect it to Make, Zapier, n8n or your own code through the Apify API, or call it from an AI agent. If something looks off for a country or language, open a ticket on the Issues tab and say which search it was — fixes are quick.