# Google Jobs Scraper – Job Listings API (`unnoted/google-jobs-listings`) Actor

Get job listings from Google Jobs for any job title and place: company, location, source site, date posted, job type, salary, full description, highlights and apply links. Filter by date posted, job type, country and language. Export JSON, CSV or Excel, or use the API. No login needed. Unofficial.

- **URL**: https://apify.com/unnoted/google-jobs-listings.md
- **Developed by:** [Unnoted](https://apify.com/unnoted) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.75 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Google Jobs Scraper – Job Listings API do?

Google Jobs Scraper collects job listings from Google Jobs for your job searches: title, company, location, the site each listing comes from, when it was posted, job type, salary, the full description, the job highlights and every link to apply, as clean rows you can export or call by API.

Unofficial, not affiliated with Google Jobs.

**Main features:** up to 10,000 jobs per run, no login needed, export to JSON, CSV or Excel, and full API and scheduling support on Apify.

### What data can you get from Google Jobs?

Each job is one row with these fields:

| Field | Description |
|---|---|
| `jobId` | Google's id of the job listing (always filled) |
| `title` | Job title (always filled) |
| `companyName` | Hiring company |
| `location` | Job location as shown (e.g. New York, NY or Anywhere) |
| `via` | Site the listing comes from (e.g. LinkedIn, Indeed, the company's careers page) |
| `postedText` | When it was posted, as shown (e.g. 2 days ago) |
| `postedAt` | Approximate posting time computed from postedText (ISO 8601; empty when the text is not an exact English age, e.g. 30+ days ago) |
| `employmentType` | Job type as shown (e.g. Full-time, Part-time, Contractor, Internship) |
| `salaryText` | Salary or pay as shown, when the listing has one (e.g. 124K–150K a year, 25–30 an hour) |
| `descriptionText` | Full job description (plain text, line breaks kept) |
| `highlights` | Job highlights as \[{ title, items }], e.g. Qualifications, Responsibilities, Benefits |
| `applyLinks` | Where to apply: \[{ source, url }], e.g. the company site, LinkedIn, Indeed |
| `shareUrl` | Link to the listing on Google Jobs |
| `query` | The job search that found it |
| `scrapedAt` | When the job was collected (ISO 8601) |

### How to scrape Google Jobs with Google Jobs Scraper – Job Listings API

1. Open Google Jobs Scraper – Job Listings API on Apify and go to the **Input** tab.
2. In **Job searches**, enter `software engineer`.
3. In **Location**, enter `New York, NY`.
4. In **Max jobs**, enter `20`.
5. Click **Start** and wait for the run to finish. A small run like this one takes under a minute.
6. Open the **Output** tab to see the results, or download them as JSON, CSV, Excel or HTML.

### Input

See the **Input** tab for every option. The fields:

| Field | Name | What it does | Default |
|---|---|---|---|
| `queries` | Job searches | What to search for, one per line (e.g. software engineer, registered nurse, barista). Each search gives up to 10 jobs; add more searches (other titles, other places) for more jobs. |  |
| `location` | Location | City, region or country for every search (e.g. New York, NY or Berlin). Leave empty to search without a place, or write the place into each search instead. | `""` |
| `country` | Country code | Two-letter country code Google uses for the search (e.g. us, gb, de, in). | `"us"` |
| `language` | Language code | Language code for the page (e.g. en, de, fr). Job highlight titles and the "posted" text come in this language. | `"en"` |
| `datePosted` | Date posted | Only jobs posted within this period. Options: `any` (Any time), `today` (Past 24 hours), `3days` (Past 3 days), `week` (Past week), `month` (Past month). | `"any"` |
| `employmentType` | Job type | Only jobs of this type. Options: `any` (Any), `FULLTIME` (Full-time), `PARTTIME` (Part-time), `CONTRACTOR` (Contractor), `INTERN` (Internship). | `"any"` |
| `maxItems` | Max jobs | Maximum number of jobs in total, across all searches (each search gives up to 10). You pay only for jobs saved. | `100` |

Example input:

```json
{
  "queries": [
    "software engineer"
  ],
  "location": "New York, NY",
  "maxItems": 20
}
```

### Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. One real result:

```json
{
  "jobId": "rRQqvg-02o3iIrCcAAAAAA==",
  "title": "Software Engineer, Early Career (NYC)",
  "companyName": "Affirm",
  "location": "New York, NY",
  "via": "LinkedIn",
  "postedText": "1 day ago",
  "postedAt": "2026-10-07T05:00:09.795Z",
  "employmentType": "Full-time",
  "salaryText": null,
  "descriptionText": "At Affirm, we exist for the moments that matter—giving people a clear, predictable way to pay over time, with no hidden fees, no surprises, and no tradeoffs on what matters most.\n\nAffirm is reinventing credit to make it more honest and friendly, giving consumers the flexibility to buy now and pay later without any hidden fees or compounding interest.\n\nWe’re excited to welcome a new cohort of graduates with a computer science or related major who are ready to leverage their skills to drive real-world impact and shape the future of finance!\n\nIn our hybrid early career program, you’ll be paired with a tenured Affirmer and have an opportunity to collaborate in-person 3 days a week out of our New York City, or San Francisco offices. You'll experience the best of both worlds: the in-office experience and remote work. After the one-year, you can remain hybrid, go remote, or stay in an office. Opportunities are available across different tech stacks and teams so that you can find a perfect fit to launch your career with Affirm!\n\nWhat You'll Do\n• With the support of your team, you will work on tasks that contribute to the team's projects and goals.\n• You will work collaboratively and proactively with your team and stakeholders, bringing them along for your work and helping to create visibility and dialog regarding the risks and trade-offs related to your work.\n• You will strike the right balance of speed and quality in your work, ensuring that we hit our business goals while protecting our systems from downtime.\n• You will contribute to a sense of community on your team by engaging in growth and development activities.\n\nWhat We Look For\n• You have mastered taking a simple problem or business scenario into a solution that interacts with multiple software components, and executing on it by writing clear, easily understood, well tested and extensible code.\n• You are comfortable navigating a large code base, debugging others' code, and providing feedback to other engineers through code reviews.\n• Your experience demonstrates that you take ownership of your growth, proactively seeking feedback from your team, your manager, and your stakeholders.\n• You have strong verbal and written communication skills that support effective collaboration with our global engineering team.\n• This position requires either equivalent practical experience or a Bachelor’s degree in a related field.\n\nUSA Pacific base pay range (NY): $130,000 - 180,000\n\nRemote-first with flexibility built in\n\nAffirm is proud to be a remote-first company. Most roles can be done from almost anywhere within the country of employment. Some positions may occasionally require in-person work at an Affirm office, and a few are office-based due to the nature of the work. All new hires will be invited to attend an in-person onboarding experience.\n\nBenefits Designed For You\n\nOur benefits reflect our commitment to care, transparency, and flexibility. Here are a few highlights:\n• Health coverage at no cost: We cover 100% of premiums for employees and their dependents.\n• Spending stipends: Monthly stipends support your tech setup, and the ability to choose health and wellness options that are right for you.\n• Time off to recharge: Flexible time off and generous holiday calendars help you rest when you need to.\n• Own a piece of what you build: Our employee stock purchase plan (ESPP) lets you buy Affirm stock at a discount.\n\nWe’re committed to providing an inclusive interview process, including accommodations for candidates with disabilities. If you need support, we’re happy to help.\n\nFor positions based in San Francisco or Los Angeles: Affirm considers qualified applicants with arrest and conviction records, as required by law.\n\nBy clicking \"Submit Application,\" you acknowledge that you have read Affirm's Global Candidate Privacy Notice and consent to the use of your personal information as described.",
  "highlights": [
    {
      "title": "Qualifications",
      "items": [
        "You have mastered taking a simple problem or business scenario into a solution that interacts with multiple software components, and executing on it by writing clear, easily understood, well tested and extensible code",
        "You are comfortable navigating a large code base, debugging others' code, and providing feedback to other engineers through code reviews",
        "Your experience demonstrates that you take ownership of your growth, proactively seeking feedback from your team, your manager, and your stakeholders",
        "You have strong verbal and written communication skills that support effective collaboration with our global engineering team",
        "This position requires either equivalent practical experience or a Bachelor’s degree in a related field"
      ]
    },
    {
      "title": "Benefits",
      "items": [
        "After the one-year, you can remain hybrid, go remote, or stay in an office",
        "USA Pacific base pay range (NY): $130,000 - 180,000",
        "Remote-first with flexibility built in",
        "Benefits Designed For You",
        "Our benefits reflect our commitment to care, transparency, and flexibility",
        "Health coverage at no cost: We cover 100% of premiums for employees and their dependents",
        "Spending stipends: Monthly stipends support your tech setup, and the ability to choose health and wellness options that are right for you",
        "Time off to recharge: Flexible time off and generous holiday calendars help you rest when you need to",
        "Own a piece of what you build: Our employee stock purchase plan (ESPP) lets you buy Affirm stock at a discount"
      ]
    },
    {
      "title": "Responsibilities",
      "items": [
        "With the support of your team, you will work on tasks that contribute to the team's projects and goals",
        "You will work collaboratively and proactively with your team and stakeholders, bringing them along for your work and helping to create visibility and dialog regarding the risks and trade-offs related to your work",
        "You will strike the right balance of speed and quality in your work, ensuring that we hit our business goals while protecting our systems from downtime",
        "You will contribute to a sense of community on your team by engaging in growth and development activities"
      ]
    }
  ],
  "applyLinks": [
    {
      "source": "LinkedIn",
      "url": "https://www.linkedin.com/jobs/view/software-engineer-early-career-nyc-at-affirm-4475144348?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic"
    },
    {
      "source": "BeBee",
      "url": "https://bebee.com/us/jobs/software-engineer-early-career-aquatic-capital-management-new-york--lifeworq-1d9e201b-dd34-4a4f-a9ba-724f337f73cf?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic"
    },
    {
      "source": "ZipRecruiter",
      "url": "https://www.ziprecruiter.com/c/Affirm/Job/Software-Engineer,-Early-Career/-in-New-York,NY?jid=a7f37f57e0fc4818&utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic"
    },
    {
      "source": "Glassdoor",
      "url": "https://www.glassdoor.com/job-listing/jv?jl=1010287389567&utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic"
    },
    {
      "source": "Startup Jobs",
      "url": "https://startup.jobs/software-engineer-early-career-nyc-affirm-2-10318495?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic"
    },
    {
      "source": "Simplify",
      "url": "https://simplify.jobs/p/ec8d7f8d-2154-4e58-bc3d-7413c3536d43/Software-Engineer?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic"
    },
    {
      "source": "Gravityer",
      "url": "https://www.gravityer.com/jobs/software-engineer-early-career?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic"
    },
    {
      "source": "Levels.fyi",
      "url": "https://www.levels.fyi/jobs?jobId=03qrqbopihnop&utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic"
    }
  ],
  "shareUrl": "https://www.google.com/search?ibp=htl;jobs&q=software+engineer+jobs+New+York,+NY&htidocid=rRQqvg-02o3iIrCcAAAAAA%3D%3D&hl=en-US&shem=epsd1,esd2e,rimspwouoe&shndl=37&shmd=H4sIAAAAAAAA_xXMsQ6CMBCA4bjyAA5ON6pBakxc0MUQYuLA4sRECrmWaumRuybgc_jC4vIP3_An31VyfZKJk2aEMlgXEDmFUrP_QLEgMmyrutjBAR7UgqDmrgcKcCeyHjeXPsZRcqVEfGYl6ui6rKNBUcCWZvWiVv5ppF9uo9cRm9P5OGdjsPv1zRjHA7gAFU5QE79TqOoff3CGjpYAAAA&shmds=v1_ARwrE2221p8Xy71LkcSs54vXqzxfytau2cDY4Q-HCMx5DGlNdw&source=sh/x/job/li/m1/1#fpstate=tldetail&htivrt=jobs&htiq=software+engineer+jobs+New+York,+NY&htidocid=rRQqvg-02o3iIrCcAAAAAA%3D%3D",
  "query": "software engineer",
  "scrapedAt": "2026-10-08T05:00:09.795Z"
}
```

### How much does it cost to scrape Google Jobs?

Google Jobs Scraper – Job Listings API uses pay-per-event pricing: **$4.75 per 1,000 jobs** (Job). You pay only for jobs saved to the dataset; platform usage is included in the price. Each run also has Apify's standard start fee of a fraction of a cent.

| Jobs | Price |
|---|---|
| 100 | $0.47 |
| 1,000 | $4.75 |
| 10,000 | $47.50 |

Set **Max items** (and the run's maximum cost in the run options) to cap what a run can spend. The run stops when either limit is reached.

### Use cases

- **Job market research:** see who is hiring for a role in a city, and which job sites carry the listings.
- **Salary research:** collect the pay ranges listings show for a role across cities.
- **Job boards and aggregators:** feed fresh listings with full descriptions and apply links into your own site or app.
- **Recruiting and sales leads:** find companies hiring for the roles you serve, with the job details to qualify them.
- **Alerts and monitoring:** schedule a daily run with "Past 24 hours" and get only new listings into Google Sheets, Slack or your database.

### Tips

- Each search gives **up to 10 jobs**. For more, add more searches: other job titles, other cities, or the same title with each job type.
- Put the place in **Location** (e.g. New York, NY), or write it into each search (e.g. barista in Austin) to search several places in one run.
- Use **Date posted** "Past 24 hours" on a daily schedule to collect only new listings.
- Set **Country code** and **Language code** for searches outside the US (e.g. de + de for Germany).
- Jobs found by more than one search are saved once, so overlapping searches don't cost twice.

### FAQ

#### Is it legal to scrape Google Jobs?

Google Jobs Scraper – Job Listings API collects only data that Google Jobs shows publicly to every visitor, and it leaves out personal data such as private profiles and contact details. Our Actors are ethical and do not extract private user data. Results could still contain personal data in titles or descriptions written by uploaders. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. You are responsible for how you use the data.

#### Can I use it through an API?

Yes. Every Apify Actor has an API: start runs, pass input and read results over HTTP, or use the JavaScript and Python clients. See the **API** tab on the Actor page for ready-made examples.

#### Can I schedule runs and connect other apps?

Yes. Use Apify **Schedules** to run Google Jobs Scraper – Job Listings API every hour, day or week, and integrations (Make, Zapier, Google Sheets, webhooks and more) to send the results where you need them.

#### Why did I get fewer results than expected?

The run stops at **Max items** or at the run's maximum cost, whichever comes first. Google Jobs may also return fewer results for rare search terms. Duplicates across search terms are saved once. Check the run's `RUN_SUMMARY` record in the key-value store for the inputs that returned nothing.

#### What if it stops working?

Sites change. We run a daily check of our own and fix breakages quickly. If something looks wrong, open an issue in the **Issues** tab with the run link and we'll look at it.

#### Why do I get at most 10 jobs per search?

Google Jobs shows the first 10 jobs of a search on one page; the rest load only while you scroll in a browser. Add more searches (other titles, places or job types) to collect more jobs.

#### Are the apply links direct?

Yes: each link goes straight to the site that lists the job (the company's careers page, LinkedIn, Indeed and so on), not through Google.

#### Is the salary always there?

Only when the listing shows one. Many listings have no pay range, and salaryText is then empty.

### Not included

No personal data: recruiter and hiring-manager names, emails and phone numbers are not collected. Company reviews and ratings are not included.

### More Actors from us

- [AliExpress Search Scraper – Products & Prices](https://apify.com/unnoted/aliexpress-product-search)
- [BBB Scraper – Business Ratings & Accreditation](https://apify.com/unnoted/bbb-business-search)
- [Bilibili Scraper – Video Search & Stats API](https://apify.com/unnoted/bilibili-video-scraper)
- [Bumeran Jobs Scraper – LATAM Job Listings](https://apify.com/unnoted/bumeran-job-listings)
- [Foundit Jobs Scraper – India Job Listings API](https://apify.com/unnoted/foundit-job-listings)
- [Google Play Reviews Scraper – App Reviews API](https://apify.com/unnoted/google-play-reviews-scraper)
- [Google Trends Scraper – Interest & Related Queries](https://apify.com/unnoted/google-trends-data)
- [Idealo Scraper – Price Comparison Data](https://apify.com/unnoted/idealo-price-search)
- [Kleinanzeigen Scraper – Listings & Prices](https://apify.com/unnoted/kleinanzeigen-listings-scraper)
- [Mercari Japan Scraper – Listings & Prices API](https://apify.com/unnoted/mercari-japan-search)
- [Resident Advisor Scraper – RA Event Listings](https://apify.com/unnoted/resident-advisor-events)
- [Sainsbury's Scraper – UK Grocery Prices](https://apify.com/unnoted/sainsburys-grocery-search)
- [Tokopedia Scraper – Product Search & Prices](https://apify.com/unnoted/tokopedia-product-search)
- [Workday Jobs Scraper – Any Careers Site](https://apify.com/unnoted/workday-jobs-scraper)
- [Yandex Maps Scraper – Places & Business Data](https://apify.com/unnoted/yandex-maps-places)

# Actor input Schema

## `queries` (type: `array`):

What to search for, one per line (e.g. software engineer, registered nurse, barista). Each search gives up to 10 jobs; add more searches (other titles, other places) for more jobs.

## `location` (type: `string`):

City, region or country for every search (e.g. New York, NY or Berlin). Leave empty to search without a place, or write the place into each search instead.

## `country` (type: `string`):

Two-letter country code Google uses for the search (e.g. us, gb, de, in).

## `language` (type: `string`):

Language code for the page (e.g. en, de, fr). Job highlight titles and the "posted" text come in this language.

## `datePosted` (type: `string`):

Only jobs posted within this period.

## `employmentType` (type: `string`):

Only jobs of this type.

## `maxItems` (type: `integer`):

Maximum number of jobs in total, across all searches (each search gives up to 10). You pay only for jobs saved.

## Actor input object example

```json
{
  "queries": [
    "software engineer"
  ],
  "location": "New York, NY",
  "country": "us",
  "language": "en",
  "datePosted": "any",
  "employmentType": "any",
  "maxItems": 20
}
```

# Actor output Schema

## `results` (type: `string`):

One item per job.

## `runSummary` (type: `string`):

Items saved, inputs done, and how complete each field was.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "software engineer"
    ],
    "location": "New York, NY",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("unnoted/google-jobs-listings").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "queries": ["software engineer"],
    "location": "New York, NY",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("unnoted/google-jobs-listings").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "software engineer"
  ],
  "location": "New York, NY",
  "maxItems": 20
}' |
apify call unnoted/google-jobs-listings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,unnoted/google-jobs-listings"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bFDALZ8r5a0o0YXK0/builds/MDLPsx8g2N6b3S1OH/openapi.json
