Real-time Job Data
Get instant access to live job postings from Google, so you always work with the most current listings.
With Google Jobs API, you can easily extract job data like company name, title, location, apply link, and more from the Google job board. This is perfect for building job boards and analyzing the job market.
"jobs_results": [
{
"title": "Lead Data engineer - c2c - candidate must be local to San Francisco, CA (posted by Sid)",
"company_name": "Jobs via Dice",
"location": "San Francisco, CA",
"via": "LinkedIn",
"share_link": "https://www.google.com/search?ibp=htl;jobs&q=Data+Engineer+jobs+in+San+Francisco&...",
"thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR9CC1NlnLA7sshF1s1dqKvk8U495jsMwImnyPP&s=0",
"detected_extensions": {},
"description": "Dice is the leading career destination...",
"job_id": "eyJqb2JfdGl0bGUiOiJMZWFkIERhdGEgZW5naW5lZXI..."
}
]"job_highlights": [
{
"title": "Qualifications",
"items": [
"Python and PySpark",
"Experience with Delta Lake on Azure Tableau..."
]
},
{
"title": "Responsibilities",
"items": [
"Kafka integrations using Spring Boot Java",
"Collect metrics..."
]
}
]"apply_options": [
{
"title": "LinkedIn",
"link": "https://www.linkedin.com/jobs/view/..."
},
{
"title": "Dice",
"link": "https://www.dice.com/job-detail/..."
}
]import requests
api_key = "5eaa61a6e562fc52fe763tr516e4653"
url = "https://api.scrapingdog.com/google/"
params = {
"api_key": api_key,
"query": "new york",
"results": "10",
"country": "us",
"page": "0"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
print(data)
else:
print(f"Request failed with status code: {response.status_code}")import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
// Set the API key and request parameters
String apiKey = "5eaa61a6e562fc52fe763tr516e4653";
String query = "new york";
String results = "10";
String country = "us";
String page = "0";
// Construct the API endpoint URL
String apiUrl = "https://api.scrapingdog.com/google/?api_key=" + apiKey
+ "&query=" + query
+ "&results=" + results
+ "&country=" + country
+ "&page=" + page;
URL url = new URL(apiUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == 200) {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = reader.readLine()) != null) {
response.append(inputLine);
}
reader.close();
System.out.println(response.toString());
} else {
System.out.println("HTTP request failed with response code: " + responseCode);
}
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}<?php
// Set the API key and request parameters
$api_key = '5eaa61a6e562fc52fe763tr516e4653';
$query = 'new york';
$results = '10';
$country = 'us';
$page = '0';
// Set the API endpoint
$url = 'https://api.scrapingdog.com/google/?api_key=' . $api_key . '&query=' . $query . '&results=' . $results . '&country=' . $country . '&page=' . $page;
// Initialize cURL session
$ch = curl_init($url);
// Set cURL options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute the cURL request
$response = curl_exec($ch);
// Check if the request was successful
if ($response === false) {
echo 'cURL error: ' . curl_error($ch);
} else {
echo $response;
}
// Close the cURL session
curl_close($ch);require 'net/http'
require 'uri'
# Set the API key and request parameters
api_key = '5eaa61a6e562fc52fe763tr516e4653'
query = 'new york'
results = '10'
country = 'us'
page = '0'
# Construct the API endpoint URL
url = URI.parse("https://api.scrapingdog.com/google/?api_key=#{api_key}&query=#{query}&results=#{results}&country=#{country}&page=#{page}")
# Create an HTTP GET request
request = Net::HTTP::Get.new(url)
# Create an HTTP client
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true # Enable SSL (https)
# Send the request and get the response
response = http.request(request)
# Check if the request was successful
if response.is_a?(Net::HTTPSuccess)
puts response.body
else
puts "HTTP request failed with code: #{response.code}, message: #{response.message}"
endconst axios = require('axios');
const api_key = '5eaa61a6e562fc52fe763tr516e4653';
const url = 'https://api.scrapingdog.com/google/';
const params = {
api_key: api_key,
query: 'new york',
results: '10',
country: 'us',
page: '0',
};
axios
.get(url, { params: params })
.then(function (response) {
if (response.status === 200) {
const data = response.data;
console.log(data);
} else {
console.log('Request failed with status code: ' + response.status);
}
})
.catch(function (error) {
console.error('Error making the request: ' + error.message);
});titlecompany_namelocationviajob_iddescriptionjob_highlightsthumbnailshare_linkjob_highlightstitleitemsapply_optionstitlelinklocationviadetected_extensionsthumbnailshare_linkjob_idGoogle Jobs aggregates the same posting from LinkedIn, Indeed, Dice and dozens of boards. Scraping it by hand means fighting its quirks, not just blocks.
Each listing hides behind an encoded job_id token with no clean page numbers, so paging deeper and re-fetching a job is fragile.
The same role surfaces via LinkedIn, Dice and Indeed at once. Without normalization you store duplicate postings and inflate your job counts.
Google Jobs results shift with country and locale. Reproducing per-region views needs geo-targeted IPs in every market you track.
Qualifications, benefits, salary chips and apply_options are scattered across the card, so reliable extraction means brittle DOM parsing.
One call to /google returns the deduplicated, geo-targeted Google Jobs feed as structured JSON, with job_id, highlights and apply_options already parsed.
Get a complete view of the job market with structured listings across companies, roles, and locations in real time.
Track which roles competitors are hiring for and how their job postings evolve over time.
Receive the latest job postings instantly so your job board or dataset always stays fresh.
Extract titles, company names, locations, apply links, highlights, and more as clean JSON.
Get instant access to live job postings from Google, so you always work with the most current listings.
Filter by location, vacancy, job type, salary and more to find exactly the listings you need.
Easy-to-use endpoints and clear docs integrate job data into your platform or app, saving time.
A built-in rotating proxy system changes IP addresses on every request, so jobs scraping never gets blocked.
Scrapingdog automatically bypasses CAPTCHA and anti-bot protection, so you can fetch job listings without worrying about blocks.
Our powerful infrastructure delivers reliable job results every time, with optimized proxy rotation.
Track the roles your competitors are hiring for and how their headcount and team structure evolve over time.
Gather structured job posting data to power labour market studies and industry-specific academic research.
Detect emerging hiring trends and in-demand skills by analyzing job postings across companies and regions.
Power dashboards and reports with fresh, structured job listings aggregated from across the web.
Compare salary ranges across roles, companies, and locations using detected extensions and job highlights.
Map hiring activity by location to understand where roles are concentrated and how demand shifts geographically.
Sign up in seconds and get free credits to start testing the Jobs API without any setup.
Access your unique API key from the dashboard and use it to scrape job data.
Call /google with a query, country, and page to get the live Jobs feed.
Get a jobs_results array with titles, locations, highlights, and apply options as ready JSON.
Start your web scraping journey with 200 free credits. Test our service and upgrade to one of the plans below. Cancel anytime.

I got the free trial and in less than a minute I already integrated with their API to scrape Google, matter of fact they had all the plug-and-play codes ready for me, It was seamless.
United States
I love how you can use it to scrape data from Google.
Oslo, Norway
Scrapingdog is an awesome service. I use it with my Local Leads Sniper system and thanks to it I have been able to land a few clients since it gave me all the info that my client's Google Business Profile was missing.
Mexico
Reliable, and simple to use! It is also inexpensive and has packaged solutions for every need. Highly recommend for collecting job market data at scale.
France
Yes, the API has a rate limit depending on your chosen subscription plan. For detailed information on request limits and how to manage them efficiently, please refer to the documentation or message us on live chat.
Yes, other than the data from search results, we have dedicated APIs for Google Scholar, Google Images, Google Lens, and more. You can check them out in the product section in the header for more info.
Google officially shut down the Jobs API in 2021. You can use third-party providers like the Scrapingdog Google Jobs API instead.
Each API request consumes a certain number of credits based on the dedicated API you are using. For example, the Google Search API costs 5 credits per request. So, if you make one request to the Google Search API, it will deduct 5 credits from the available credits in your account.
Get 200 free credits to spin the API. No credit card required!