Google Jobs Scraper $3/1K — Salary, Apply Links, Full Text avatar

Google Jobs Scraper $3/1K — Salary, Apply Links, Full Text

Pricing

from $3.00 / 1,000 job listing delivereds

Go to Apify Store
Google Jobs Scraper $3/1K — Salary, Apply Links, Full Text

Google Jobs Scraper $3/1K — Salary, Apply Links, Full Text

Scrape Google Jobs in 18 countries and 7 languages: full job description, parsed salary (min, max, currency, period), posting date, employment type, highlights and the real application URLs (LinkedIn, Indeed, company sites). Pay only for jobs delivered: empty searches are free.

Pricing

from $3.00 / 1,000 job listing delivereds

Rating

0.0

(0)

Developer

Oswaldo Carabano

Oswaldo Carabano

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Google Jobs Scraper — salary, apply links and full job descriptions

Scrape Google Jobs listings in 18 countries and 7 languages, with the full job description, the parsed salary, the posting date, the employment type, the job highlights and the real application URLs (LinkedIn, Indeed, Glassdoor, the company's own careers page) in every row.

$0.003 per job delivered ($3 per 1,000). Searches that return nothing, duplicates, filtered-out jobs and error rows are never charged.

No login. No account. No cookies to paste.


What you can use this for

If you are…You want
Building a job board or a job aggregatorfresh listings with the full description and the direct application URL, deduplicated by a stable job id
Doing salary research or pay benchmarkingsalaryMin, salaryMax, salaryCurrency and salaryPeriod already parsed, in any currency
Running recruitment lead generationwhich companies are hiring for which roles, where, and on which job boards
Tracking the labor market for a role or a citya schedule that runs the same searches every day; the stable id tells new listings from old ones
Feeding an HR tech product or an AI agentclean JSON with every key present on every row, over the Apify API

What arrives in a row

Every figure below was measured on 13 Oct 2026 on n = 439 unique jobs from 49 Google Jobs result pages, 33 searches, 15 countries and 5 languages. We do not list a field whose fill rate we have not measured.

Re-measured on the Apify platform on 14 Oct 2026: n = 2,085 jobs from 50 private test runs covering all 18 countries and 7 languages. A job row carries on average 34.1 filled fields (median 34) and 25.1 filled job-data fields (not counting the echo of your input and run metadata). Description 98.2% (full text 83.4%), resolved application URLs 99.5% with 4.92 options per job, employment type 97.2%, posting date 82%, salary 45% (US 51.7%, n = 1,221).

Always there — 100% (n = 439)

id · title · company · applyLinks · applyUrls · shareUrl · employmentTypes (97.5%) · location (99.8%)

The application links are the part nobody else resolves. Google wraps every "Apply on …" button in a redirect. This actor follows each one and gives you the real destination (applyUrl), the same URL without tracking parameters (applyUrlClean) and its domain (applyDomain). On average a job has 4.87 application options (n = 439).

Usually there

FieldFill raten
description98.4%439
…of which the full text (not a preview)82.9%439
employmentType97.9%439
via (job board)95.4%439
postedAt (absolute ISO date)87.7%439
logoUrl68.6%439
qualifications42.1%439
responsibilities41.7%439
noDegreeMentioned = true37.1%439
benefits36.2%439
salaryMin / salaryMax34.6%439

Salary depends on the country, so one blended number would mislead you. Measured share of jobs with a salary: 40.4% in the US (n = 203), 46.7% in Canada, 33.3% in the UK, 20% in Germany, 6.3% in India, 10% in South Africa.

Job highlights (qualifications, benefits, responsibilities) are rendered by Google only on English (US) pages: 91.1% of US jobs have them and 0% elsewhere (n = 439). In Spanish, French and German Google serves a ~400-character description preview instead of the full text; those rows say so with descriptionIsPreview: true.

The salary, parsed

"$140K–$200K a year" → salaryMin 140000, salaryMax 200000,

salaryCurrency "USD"
, salaryPeriod "year". The parser handles K, M and lakh suffixes, European and English separators, and the period wording in English, Spanish, Portuguese, French and German (checked by hand on 34 of 34 cases). When Google shows no salary badge but the job text contains a clear salary range, it is used and salarySource says where it came from.


How it compares

Competitors measured on 13 Oct 2026 through the Apify API (their public stats and published output schemas; no third-party actor was run). This actor measured on 14 Oct 2026 in 50 private runs on the platform.

This actorMost-used Google Jobs actorSecond by usersThird by users
Users, last 30 daysnew424122112
Runs that failed or timed out0 of 50 test runs (20–500 rows, 18 countries)18.9% timed out (3,373 of 17,872 in 30 days)8.8%4.2%
Price per job$0.003$0.035 per page of up to 10 ($0.09 on the free plan)$0.006$0.15 + $0.14 per start
Empty searches chargedneverthe page is charged——
Full description in the row✅ 98.2% (n = 2,085)not declared✅not declared
Application URLs✅ resolved to the real page, 99.5%not declareddeclarednot declared
Salary field✅ min / max / currency / periodnot declareddeclarednot declared
Output fields declared in its schema440240
Filled fields per job row34.1 on average (measured, n = 2,085)— (no schema)at most 24 (declared)— (no schema)

"Not declared" means the field does not exist in that actor's published output schema; we read the schemas, not the marketing. For competitors, "at most" is the number of fields they declare: a declared field can still be empty. 12 of the 20 Google Jobs actors with 5+ monthly users publish no output schema at all.

Every one of the 50 test runs charged exactly the rows it delivered (2,085 jobs, 2,085 charges) with 0 duplicate ids. The same job keeps the same id across runs: 167 of 167 ids seen in more than one run had the same title and company.


Input

FieldDefaultWhat it does
queries["software engineer"]Job titles or keywords, one search each
locations["Austin"]Cities or regions; every query runs in every location. Empty = whole country
countryusGoogle country (21 available)
languageenGoogle interface language (en, es, pt, fr, de, nl, it)
maxJobsPerQuery10Upper limit of rows per query × location
expandQueriestrueWhen a search needs more than its first page, also searches up to 4 variants of the query; duplicates are removed by id
resolveApplyUrlstrueFollow Google's redirects to the real application pages (same price either way)
remoteOnly, employmentTypes, postedWithinDaysoffFilters applied after the search; filtered jobs are not charged
deepPaginationfalseExperimental. Also fetches result pages 2+ (needs 2048 MB of memory)
maxConcurrency10Parallel searches

Example:

{
"queries": ["registered nurse", "data analyst"],
"locations": ["Chicago", "Houston"],
"country": "us",
"language": "en",
"maxJobsPerQuery": 30
}

Output example (one row, shortened)

{
"rowType": "job",
"id": "PIaBVaFi308wULA3AAAAAA==",
"title": "Senior Software Engineer",
"company": "Example Corp",
"location": "Austin, TX",
"via": "LinkedIn",
"postedAt": "2026-10-12T14:00:00.000Z",
"employmentTypes": ["full-time"],
"salaryMin": 140000,
"salaryMax": 200000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"salarySource": "listing",
"applyUrls": ["https://www.linkedin.com/jobs/view/0000000000", "https://careers.example.com/jobs/1234"],
"applyDomains": ["linkedin.com", "careers.example.com"],
"qualifications": ["5+ years of experience with distributed systems"],
"description": "We are looking for…",
"descriptionIsPreview": false,
"isRemote": false,
"isHybrid": true,
"query": "software engineer",
"searchLocation": "Austin",
"country": "us",
"language": "en"
}

Every row carries all 44 keys, with null where Google shows nothing, so CSV and spreadsheet exports keep their columns.

Searches that produce no data add one error row (rowType: "error") that explains what happened and what to try. Error rows are never charged. The ERRORS and RUN_SUMMARY records of the run's key-value store list them too.


Pricing

EventPriceWhen
Job listing delivered$0.003one job row with description, salary, highlights and resolved application URLs
Deep pagination session$0.20only with deepPagination on, and only when the session actually delivered jobs from page 2 or later
Actor start$0.00001once per run

1,000 jobs cost $3. With deep pagination, 50 jobs from deeper pages cost 50 × $0.003 + one $0.20 session = $0.35. Duplicates within a run, filtered-out jobs, empty searches and error rows cost nothing. A run stops cleanly when it reaches the maximum cost you set.


Reliability and speed

  • Google answers a Jobs search in about 20 seconds through the route this actor uses (median 19.8 and 21.1 s in two platform runs of 20 searches each, 13 Oct 2026). Searches run in parallel, rows are delivered as each page arrives and the status message updates every few seconds.
  • The default input finishes in under two minutes: 8 to 82 s on the platform in 4 runs (14 Oct 2026, 10 jobs each). 500 jobs from 50 searches took 209 s at the default 512 MB.
  • If Google pushes back, the actor retries with a fresh connection, then slows down, and always stops in time to finish inside your run timeout with the rows it already delivered.

Deep pagination (experimental)

Google only serves result pages 2+ to a browser session. With deepPagination on, the actor opens a short browser session to unlock them. In our platform test (13 Oct 2026) a working session gave 4 pages on 7 of 10 searches, but sessions could not always be started. When none can be started, the run keeps the first pages, says so in an error row (not charged) and finishes normally. Most users get more jobs per search with expandQueries and more locations instead.


FAQ

Do I need a Google account or cookies? No. The actor never logs in.

Is the job id stable? Yes. It is Google's own job id, the same across runs, so you can deduplicate or detect new listings between scheduled runs.

Are duplicates charged? Not within a run: a job found by two searches or two query variants is delivered and charged once. Between separate runs the same job can appear again, and it is charged again.

Why are some descriptions short? In Spanish, French and German Google shows only a preview of the description; descriptionIsPreview tells you which rows. Search in English (language: "en") for full text and job highlights.

What about personal data? Recruiter email addresses and phone numbers that appear inside descriptions are replaced with [email] and [phone].


Disclaimer

This actor extracts publicly available job listings shown by Google Jobs — no login, no account. You are responsible for how you use the data, including compliance with privacy laws and with the terms of the sites involved. It is not affiliated with or endorsed by Google.