Google Jobs API
Job listings from Google Jobs for any query and geography — title, company, location, posting age, application links and the full description — across 184 Google domains, 102 language codes and unlimited pagination.
MEDIAN LAGon demand
PARAMETERS10
TOTAL USERS2,921
MONTHLY ACTIVE434
RUNS SUCCEEDED99.6%
RATING3.49 (10)
Input parameters
| PARAMETER | TYPE | REQ | DEFAULT | DESCRIPTION |
|---|---|---|---|---|
| query | string | yes | — | Job search query, e.g. 'Software Engineer' |
| location | string | no | — | City-level location gives the best results. Empty plus a country code uses the country name automatically. |
| country | enum | no | derived from domain | 10 supported codes. Derived from google_domain when unset — Google Jobs returns nothing with neither country nor language. |
| language | enum | no | en | 102 language codes. Falls back to English rather than returning nothing. |
| google_domain | enum | no | google.com | 184 domains; also determines the default country |
| num_results | integer | no | 100 | Maximum listings to return |
| max_pagination | integer | no | 0 | Pages to fetch, ~10 listings each. 0 = unlimited. — drives your bill |
| include_lrad | boolean | no | false | Enable radius filtering around the location |
| lrad_value | string | no | 5 | Radius in km; only used when include_lrad is on |
| max_delay | integer | no | 1 | Seconds between requests, to stay under rate limits |
Worked examples
{
"query": "Software Engineer",
"location": "San Francisco, CA"
}
{
"query": "Data Scientist",
"country": "de",
"google_domain": "google.de",
"language": "de"
}
{
"query": "Registered Nurse",
"location": "Austin, TX",
"include_lrad": true,
"lrad_value": "10"
}
{
"query": "Marketing Manager",
"location": "London",
"google_domain": "google.co.uk",
"max_pagination": 0
}
POWER-USER TIP
Never send neither a country nor a language — Google Jobs returns an empty result set when both are absent. The Actor derives a country from google_domain and falls back to English rather than handing you a silent zero, and logs a warning when it does — so a run that returns nothing is worth checking the log for.
Coverage
184
Google domains — google.com .co.uk .ca .de .fr .com.au .co.jp +177
102
language codes — en es fr de it pt ja ko zh ru ar +91
10
country codes — us ca uk de fr au jp in br mx
Tasks
Saved runs with the inputs already filled in — each one a standalone page and a working configuration example.
Code
curl
curl -X POST "https://api.apify.com/v2/acts/johnvc~Google-Jobs-Scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"Software Engineer","location":"San Francisco, CA","num_results":100}'
Python
from apify_client import ApifyClient
client = ApifyClient("APIFY_TOKEN")
run = client.actor("johnvc/Google-Jobs-Scraper").call(
run_input={"query": "Data Scientist", "location": "Berlin", "country": "de"}
)
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item.get("title"), "-", item.get("company_name"))
What people use it for
- Hiring-signal monitoring for a competitor set
- Talent market sizing by city and role
- Recruitment lead lists
- Salary and title benchmarking
- Tracking a company's headcount trajectory
- Feeding a job board with fresh listings