# Cheapest Google Jobs Scraper | $0.25/1K Searches (`litescrape/google-jobs`) Actor

Google Jobs listings by query, location and filters. $0.25 per 1,000 result batches of about 10 jobs, with apply links and salary when shown. Failed requests are free.

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

## Pricing

$0.25 / 1,000 successful api requests

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

## Cheapest Google Jobs Scraper | $0.25/1K Searches

Google Jobs listings by query, location and filters. $0.25 per 1,000 result batches of about 10 jobs, with apply links and salary when shown. Failed requests are free.

Google Jobs listings with employers, locations, posting details and apply links.

### Price

**$0.25 per 1,000 searches** ($0.00025 per successful API response). A search is one successful results page or source response. Each continuation page counts as another search; individual result rows cost no extra.

Each successful response saved to the run is one paid event, including valid empty responses. Multiple places, reviews, or products in one response do not create additional paid events.

Failed requests are unbilled. JSON output is saved before successful responses are charged together. Recovery never recharges an ambiguous payment after its safe retry window; the saved output remains available for reconciliation. There is no Actor startup fee or separate per-row fee; platform usage during the run is included. Standard Apify charges for post-run storage access may still apply. Payments are handled by Apify; no separate service key or proxy purchase is required.

Free-plan users receive up to 25 successful requests per Apify user per UTC day across this catalog, subject to the service trial allowance. Paid runs respect the input request limit and Apify spending limit.

### Quick start

Use a single input below, or supply `requests` as a list of parameter objects. Top-level API fields are shared defaults, and each batch object overrides them. Identifiers in examples demonstrate the format; use an identifier returned by the matching provider for production work.

```json
{
  "q": "software engineer jobs in New York",
  "maxRequests": 10,
  "maxPagesPerInput": 1
}
```

### Input parameters

| Field | Type | Required | Meaning |
| --- | --- | --- | --- |
| `q` | string | Required per input | Job search query, for example software engineer jobs in New York. |
| `gl` | string | Optional / conditional | Two-letter country code. |
| `hl` | string | Optional / conditional | Google interface language, for example en, de, fr, es or pt-BR. |
| `include_filters` | boolean | Optional / conditional | Return available Google Jobs filters with the q and uds parameters needed to apply each one. |
| `lat` | number | Optional / conditional | Latitude of the search origin. Requires lon. |
| `location` | string | Optional / conditional | Canonical Google location, such as London,England,United Kingdom. Use one of location, uule or lat/lon. |
| `lon` | number | Optional / conditional | Longitude of the search origin. Requires lat. |
| `page` | integer | Optional / conditional | One-based results page. Use next_page from the response to continue. |
| `page_token` | string | Optional / conditional | Copy next_page_token with next_page and the same query to fetch the next batch directly. |
| `radius` | number | Optional / conditional | Coordinate accuracy radius in meters, requiring lat/lon. This locates the search origin; it is not a job-distance filter. |
| `tbs` | string | Optional / conditional | Google search refinement string, for example qdr:w for the past week. Keep it unchanged through pagination. |
| `timeout` | number | Optional / conditional | Total request execution budget in seconds, greater than 0 and at most 90. Supply in the query string for GET or POST. page_timeout cannot extend this budget. |
| `uds` | string | Optional / conditional | Opaque Google refinement value returned in available_filters. Copy its q and uds together; filter choices vary by query and market. |
| `uule` | string | Optional / conditional | Explicit Google UULE location value. Mutually exclusive with location and coordinates. |

The source validates conditional parameter combinations. Validation errors do not trigger a paid request event. Provider availability determines which optional result groups appear.

### Batches, pagination, and limits

- `requests`: up to 1,000 input parameter objects in one run.
- `maxRequests`: total successful API requests, including pages; default 100. At that limit the event price is at most $0.025.
- `maxPagesPerInput`: default 1. Increase to follow native continuation links where this endpoint supplies them. No synthetic pagination is invented.
- `maxResults`: maximum dataset rows; default 1,000. Already in-flight requests can complete and be billed, with full JSON saved even if their rows exceed this cap.
- `maxConcurrency`: default 2, maximum 8. Service capacity and trial limits may reduce it.
- `includeArtifacts`: optionally retain available raw source artifacts in this run. Default false.
- `datasetOutput`: default false. Enable the dataset/export workflow; pagination and artifacts select it automatically. JSON mode uses 128 MB, allows up to 1 MiB per upstream response and 8 MiB total output. Use dataset output for larger responses.

### Output

The default JSON workflow saves one `OUTPUT` record with `successfulRequests`, `failedRequests`, and ordered `results`. Each result contains `requestId`, `statusCode`, and the complete source JSON in `body`. Use the run-sync API to return `OUTPUT` directly. It does not create dataset rows or per-request response copies.

With `datasetOutput: true`, pagination, or artifacts enabled, the default dataset contains source records with `requestId`, `inputIndex`, `page`, `group`, readable `title`, `url`, `rating`, and `text` fields when available, the complete record in `data`, and `responseUrl`. A successful response without a primary result group gets a response row.

In the dataset workflow, each `responseUrl` points to a stored response envelope; its `response.body` contains the complete API JSON, including optional modules and pagination. `SUMMARY` reports successful requests, failures, row count, and event charges. `ERRORS` records unsuccessful requests. If every request fails, the run fails with no request-event charges.

Follow-up API links, including pagination and related reviews or products, are Apify request objects: `{ "url": "https://api.apify.com/v2/actors/litescrape~<actor>/runs", "method": "POST", "input": { ... } }`. POST the supplied `input` as JSON to `url` using your own Apify authorization header. Each follow-up starts a new run limited to one successful request; use `maxPagesPerInput` for automatic pagination inside this run. Source website links are unchanged. `search_metadata.json_endpoint` links to the saved Apify response. Available artifact links point to files copied to Apify; unavailable artifact links are omitted.

JSON exports preserve nested fields. Select the flat overview fields for CSV. Artifact manifests use `artifacts-<requestId>` keys and link to copied source files when available. Private run data requires the appropriate Apify access.

### Price comparison

**Lowest price in this 2026-10-19 comparison for Google Jobs result batches averaging at least 1 usable job per billed request.**

**Illustrative workload:** 1,000 successful requests × 10 usable jobs per request = 10,000 jobs. Our total is **$0.25**, equivalent to **$0.025 per 1,000 jobs**.

These are calculated prices, not measured scraper runs or guaranteed page yields. Count unique usable source records actually delivered, including the cost of empty responses, continuation pages and lookups needed to obtain the fields you need. An array of request objects does not turn multiple API calls into one billed request.

| Actor | Lowest applicable tier | Published-charge subtotal for this workload | Effective price / 1,000 output units |
| --- | --- | ---: | ---: |
| **Litescrape** | Same request rate on every plan | **$0.25** | **$0.025** |
| [gio21/google-jobs-scraper](https://apify.com/gio21/google-jobs-scraper) ([active prices](https://api.apify.com/v2/acts/gio21~google-jobs-scraper)) | FREE | $30 | $3 |
| [automation-lab/google-jobs-scraper](https://apify.com/automation-lab/google-jobs-scraper) ([active prices](https://api.apify.com/v2/acts/automation-lab~google-jobs-scraper)) | DIAMOND | $24.018 | $2.4018 |
| [memo23/google-jobs-scraper](https://apify.com/memo23/google-jobs-scraper) ([active prices](https://api.apify.com/v2/acts/memo23~google-jobs-scraper)) | FREE | $25.005 | $2.5005 |
| [johnvc/Google-Jobs-Scraper](https://apify.com/johnvc/Google-Jobs-Scraper) ([active prices](https://api.apify.com/v2/acts/johnvc~Google-Jobs-Scraper)) | GOLD | $35.00001 | $3.500001 |
| [khadinakbar/google-jobs-scraper](https://apify.com/khadinakbar/google-jobs-scraper) ([active prices](https://api.apify.com/v2/acts/khadinakbar~google-jobs-scraper)) | FREE | $30.00005 + platform/proxy usage | $3.000005 + platform/proxy usage |

Each competitor gets its lowest published tier, including enterprise tiers, without adding a plan subscription cost. Required compared events use the same tier; known startup charges assume one run and the minimum one billed GB. Unquantified compute/proxy charges, optional enrichment and any omitted additional fees can only increase the displayed competitor subtotal. Output completeness and reliability were not benchmarked.

- **johnvc/Google-Jobs-Scraper:** Billed per processed page of about 10 jobs.
- Google returns roughly 10 jobs per batch; continuation batches are separate requests.
- Free-label Actors that bill platform usage only are excluded: their final cost is not published.

Cheapest means the lowest calculated price for the stated workload among the named paid Apify Actors in this dated audit. It is not a claim about every Actor, every plan, every workload, or equal output quality. Free/platform-only Actors, monthly rentals and bring-your-own-paid-key wrappers do not establish a comparable fixed total from their Actor fee alone. They may cost less on particular workloads.

The comparison uses the linked active pricing snapshots and public documentation checked on the audit date. Recheck live pricing before relying on a competitor comparison. No provider affiliation or equal-quality claim is implied.

### Support

Use this Actor's Issues tab on Apify and include the run ID plus a description of the unexpected result. Do not post credentials.

This is an independent tool from Litescrape. Provider names identify the source; they do not imply affiliation or endorsement.

# Actor input Schema

## `q` (type: `string`):

Job search query, for example software engineer jobs in New York.

## `gl` (type: `string`):

Two-letter country code.

## `hl` (type: `string`):

Google interface language, for example en, de, fr, es or pt-BR.

## `include_filters` (type: `boolean`):

Return available Google Jobs filters with the q and uds parameters needed to apply each one.

## `lat` (type: `number`):

Latitude of the search origin. Requires lon.

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

Canonical Google location, such as London,England,United Kingdom. Use one of location, uule or lat/lon.

## `lon` (type: `number`):

Longitude of the search origin. Requires lat.

## `page` (type: `integer`):

One-based results page. Use next_page from the response to continue.

## `page_token` (type: `string`):

Copy next_page_token with next_page and the same query to fetch the next batch directly.

## `radius` (type: `number`):

Coordinate accuracy radius in meters, requiring lat/lon. This locates the search origin; it is not a job-distance filter.

## `tbs` (type: `string`):

Google search refinement string, for example qdr:w for the past week. Keep it unchanged through pagination.

## `timeout` (type: `number`):

Total request execution budget in seconds, greater than 0 and at most 90. Supply in the query string for GET or POST. page_timeout cannot extend this budget.

## `uds` (type: `string`):

Opaque Google refinement value returned in available_filters. Copy its q and uds together; filter choices vary by query and market.

## `uule` (type: `string`):

Explicit Google UULE location value. Mutually exclusive with location and coordinates.

## `requests` (type: `array`):

Optional list of parameter objects. Top-level API fields are shared defaults; each object overrides them. Maximum 1,000 inputs.

## `maxRequests` (type: `integer`):

Run-wide cap on successful API requests, including continuation pages. 1,000 requests cost $0.25.

## `maxResults` (type: `integer`):

Cap exported rows. An in-flight response can still be saved and billed in full. Complete JSON responses remain in storage.

## `maxPagesPerInput` (type: `integer`):

1 returns the first page only. Additional pages follow source continuation links when available; every successful page is a paid request.

## `maxConcurrency` (type: `integer`):

Upper concurrency bound. The service may apply a lower limit for capacity or trial quotas.

## `includeArtifacts` (type: `boolean`):

Copy available raw source artifacts to this run. Availability varies by endpoint; unavailable artifacts do not invalidate a saved JSON response.

## `datasetOutput` (type: `boolean`):

Enable dataset rows and recoverable per-request storage. Leave off for the cheapest JSON output. Pagination and artifacts also enable this workflow.

## Actor input object example

```json
{
  "q": "software engineer jobs in New York",
  "maxRequests": 100,
  "maxResults": 1000,
  "maxPagesPerInput": 1,
  "maxConcurrency": 2,
  "includeArtifacts": false,
  "datasetOutput": false
}
```

# Actor output Schema

## `json` (type: `string`):

No description

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

No description

## `summary` (type: `string`):

No description

## `errors` (type: `string`):

No description

# 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 = {
    "q": "software engineer jobs in New York"
};

// Run the Actor and wait for it to finish
const run = await client.actor("litescrape/google-jobs").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 = { "q": "software engineer jobs in New York" }

# Run the Actor and wait for it to finish
run = client.actor("litescrape/google-jobs").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 '{
  "q": "software engineer jobs in New York"
}' |
apify call litescrape/google-jobs --silent --output-dataset

```

## MCP server setup

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

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/ZCrrShQio44XxRgfM/builds/szxFGhMQE8Jk5VQmT/openapi.json
