Scrape job listings with our Google Jobs API

Our Google Jobs API retrieves job listings from Google's job search results — including title, company, location, salary, schedule, and full description. Sign up for our free plan to get started.

Senior Backend Engineer
Acme Cloud
Austin, TX Full-time
$150K–$185K/yr
→
JOBS JSON
Acme Cloud LinkedIn
Use cases

Plenty of use cases

Our Google Jobs API is the perfect tool for a countless number of use cases.

①

Talent Intelligence

Monitor job posting activity across competitors and industries to understand hiring trends, salary benchmarks, and in-demand skills.

②

Job Board Aggregation

Pull live job listings into your own job board or talent platform without manual scraping.

③

Labour Market Research

Track job posting volume, role distribution, and salary data across locations and industries to support workforce analytics and research.

④

Many More...

Our customers use Zenserp for a countless number of use cases, at small and large scale.

Example use cases

The following examples should give you an idea of what you can achieve with our Google Jobs API. For further details, visit our Playground and our Documentation.

curl -X GET -G \
    'https://app.zenserp.com/api/v2/search' \
    -H "apikey: your-apikey" \
    -d "q=backend+engineer" \
    -d "tbm=jobs" \
    -d "location=Austin,Texas,United States"

# Set tbm=jobs to retrieve Google Jobs results
# Accepted locations can be found at https://app.zenserp.com/playground
import requests

headers = {"apikey": "your-apikey"}
params = {
    "q": "backend engineer",
    "tbm": "jobs",
    "location": "Austin,Texas,United States",
}

response = requests.get(
    "https://app.zenserp.com/api/v2/search",
    headers=headers,
    params=params,
)
data = response.json()

for j in data["jobs"]:
    print(j["title"], j["company"], j["location"])
const axios = require("axios");

axios.get("https://app.zenserp.com/api/v2/search", {
  headers: { apikey: "your-apikey" },
  params: {
    q: "backend engineer",
    tbm: "jobs",
    location: "Austin,Texas,United States",
  },
}).then(({ data }) => {
  data.jobs.forEach((j) => console.log(j.title, j.company, j.location));
});
<?php
$params = http_build_query([
    "q" => "backend engineer",
    "tbm" => "jobs",
    "location" => "Austin,Texas,United States",
]);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, "https://app.zenserp.com/api/v2/search?" . $params);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["apikey: your-apikey"]);

$data = json_decode(curl_exec($ch), true);
curl_close($ch);

foreach ($data["jobs"] as $j) {
    echo $j["title"] . " " . $j["company"] . " " . $j["location"] . PHP_EOL;
}
curl -X GET -G \
    'https://app.zenserp.com/api/v2/search' \
    -H "apikey: your-apikey" \
    -d "q=backend+engineer" \
    -d "tbm=jobs" \
    -d "location=Austin,Texas,United States" \
    -d "start=10" \
    -d "num=10"

# Use start= and num= to paginate through all available listings
# Combine with the Batches endpoint for large-scale collection
import requests

headers = {"apikey": "your-apikey"}
params = {
    "q": "backend engineer",
    "tbm": "jobs",
    "location": "Austin,Texas,United States",
    "start": 10,
    "num": 10,
}

data = requests.get(
    "https://app.zenserp.com/api/v2/search",
    headers=headers,
    params=params,
).json()

print(len(data["jobs"]), "listings on this page")
const axios = require("axios");

axios.get("https://app.zenserp.com/api/v2/search", {
  headers: { apikey: "your-apikey" },
  params: {
    q: "backend engineer",
    tbm: "jobs",
    location: "Austin,Texas,United States",
    start: 10,
    num: 10,
  },
}).then(({ data }) => {
  console.log(data.jobs.length, "listings on this page");
});
<?php
$params = http_build_query([
    "q" => "backend engineer",
    "tbm" => "jobs",
    "location" => "Austin,Texas,United States",
    "start" => 10,
    "num" => 10,
]);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, "https://app.zenserp.com/api/v2/search?" . $params);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["apikey: your-apikey"]);

$data = json_decode(curl_exec($ch), true);
curl_close($ch);

echo count($data["jobs"]) . " listings on this page";

Try Zenserp complete and easy-to-use Google Jobs API

Zenserp Google Jobs API returns job listings, salaries, and descriptions for any role and location. For further testing, visit our Playground.

Sample JSON response
{
  "query": { "q": "backend engineer", "tbm": "jobs", "location": "Austin,Texas,United States" },
  "jobs": [
    {
      "title": "Senior Backend Engineer",
      "company": "Acme Cloud",
      "location": "Austin, TX",
      "via": "LinkedIn",
      "posted_at": "3 days ago",
      "schedule": "Full-time",
      "salary": "$150K–$185K a year",
      "description": "We're hiring a senior backend engineer to lead development of our core API platform. You'll work across distributed systems, own reliability, and collaborate with product and frontend teams."
    },
    {
      "title": "Backend Software Engineer",
      "company": "DataFlow Inc.",
      "location": "Remote — Austin, TX preferred",
      "via": "Indeed",
      "posted_at": "1 day ago",
      "schedule": "Full-time",
      "salary": "$120K–$145K a year",
      "description": "Join a fast-growing data infrastructure team building the pipelines that power real-time analytics for Fortune 500 clients."
    }
  ]
}
Full coverage

Zenserp covers all available job features and filters

1

Role and keyword search

Search by job title, skills, or keywords — the q parameter accepts any query Google Jobs would accept.

2

Geo targeting

Add a location parameter to retrieve listings for a specific city, region, or country. Accepted location strings can be found in our Playground.

3

Full job description

Each listing includes the complete job description text — not just the snippet — so you can analyse requirements, skills, and responsibilities programmatically.

4

Salary and schedule data

Where Google surfaces it, the response includes salary range and schedule type (full-time, part-time, contract) for each listing.

5

Pagination

Use num and start to paginate through all available listings for a query, or use the Batches endpoint for large-scale collection across many roles and locations.

Start using our free SERP API today!

Get 50 Free Requests

Simple and Economical pricing

Choose from a variety with different usage limits and features to match the size and scope of your project. All plans include real-time scraping capabilities and 24/7 customer support.

Free

All basic to get started
$0/mo
  • 50 Searches
Try Now

Small

Best for hobby projects
$49.99/mo
  • 25,000 Searches
  • All SERP Types
Try Now

Large

More requests
$299.99/mo
  • 250,000 Searches
  • All SERP Types
  • Batch Endpoint
  • Keyword Search Volume
  • Keyword CPC
  • Bulk Index Checker (GUI)
  • Personal Support
  • Concierge Onboarding
  • Service Level Agreement
  • Google Jobs Access
Try Now

Premium

For large SERP projects
$499.99/mo
  • 500,000 Searches
  • All SERP Types
  • Batch Endpoint
  • Keyword Search Volume
  • Keyword CPC
  • Bulk Index Checker (GUI)
  • Personal Support
  • Concierge Onboarding
  • Service Level Agreement
  • Custom Queue
  • Google Jobs Access
Try Now

Enterprise

For large SERP projects
$899.99/mo
  • 1,000,000 Searches
  • All SERP Types
  • Batch Endpoint
  • Keyword Search Volume
  • Keyword CPC
  • Bulk Index Checker (GUI)
  • Personal Support
  • Concierge Onboarding
  • Service Level Agreement
  • Custom Queue
  • All features of Premium, 1,000,000 Searches
  • Google Jobs Access
Try Now

Need more? Contact us for a custom quote.

Frequently asked questions

Where does the job data come from?

Zenserp retrieves job listings from Google's job search results (google.com/search?tbm=jobs), which aggregates postings from LinkedIn, Indeed, Glassdoor, and company career pages. The data reflects what Google surfaces at the time of the request.

What job data does the Google Jobs API return?

The API can return job titles, company names, locations, salaries, posting dates, employment schedules, job descriptions, and the source of each listing when available.

Can I search jobs by role and location?

Yes. You can search for jobs using keywords, job titles, skills, and locations. Use the q parameter for your search query and the location parameter to target a specific city, region, or country.

Does the Google Jobs API provide salary information?

Yes. When salary information is available in Google Jobs results, Zenserp returns the salary range as part of the structured job listing data.

Can I paginate through Google Jobs results?

Yes. You can use the start and num parameters to paginate through available listings. For larger-scale data collection, you can also use Zenserp's Batches endpoint.