Google Jobs Scraper avatar

Google Jobs Scraper

Pricing

$3.00 / 1,000 job scrapeds

Go to Apify Store
Google Jobs Scraper

Google Jobs Scraper

Scrape Google for Jobs. 22+ fields per posting (title, company, salary, apply links, remote flag). US/BR/MX/CA/UK/IN/AU/JP/SG. Pay $0.003 per job.

Pricing

$3.00 / 1,000 job scrapeds

Rating

5.0

(3)

Developer

Gio

Gio

Maintained by Community

Actor stats

1

Bookmarked

399

Total users

164

Monthly active users

16 days ago

Last modified

Categories

Share

Scrape Google for Jobs at scale with full salary data and apply links. 22 structured fields per job, multi-network apply tracking, automatic matrix expansion for large runs.

Apify


Highlights

  • 22 fields per job including salaryMin / salaryMax / salaryCurrency / salaryPeriod
  • Apply links per network (LinkedIn, Indeed, Glassdoor, Workday, Greenhouse, Lever, company ATS)
  • Matrix expansion for runs > 500 jobs — automatically rotates date filters + employment types to escape Google's pagination ceiling
  • Hard cost ceiling (maxCost, default $2) so runs never blow past your budget
  • Brightdata Scraping Browser under the hood — no cookies, no manual auth, just results
  • Self-healing: detects soft-consent redirects and Brightdata exit-IP burns, auto-reconnects for a fresh session

Table of Contents


Pricing

EventPriceDescription
job-scraped$0.008Charged once per job pushed to the dataset
  • $0.05 minimum charge per run (prevents tiny abandoned runs from bypassing cost)
  • No actor-start fee
  • You only pay for jobs we successfully extract — empty runs cost $0

Coverage

Google's Jobs widget is region-restricted (disabled in the EU since 2023). Supported regions:

Country codeRegion
us🇺🇸 United States
br🇧🇷 Brazil
mx🇲🇽 Mexico
ca🇨🇦 Canada
gb🇬🇧 United Kingdom
in🇮🇳 India
au🇦🇺 Australia
jp🇯🇵 Japan
sg🇸🇬 Singapore

EU countries (DE, FR, IT, ES, NL, etc.) are not supported — Google disabled the Jobs widget in the EEA after antitrust regulations.


Input

Required

FieldTypeDescription
queriesstring[]Array of search keywords (e.g. ["software engineer", "data scientist"])

Optional

FieldTypeDefaultDescription
locationstringcountry defaultCity, region or full address (e.g. "San Francisco, CA")
countryCodestring"us"Two-letter country code
languageCodestring"en"Two-letter language code
maxItemsinteger500Hard cap on total jobs scraped (min 50)
datePostedstringtoday / 3days / week / month / all
jobTypestring[]["FULLTIME","PARTTIME","CONTRACTOR","INTERN"]
workFromHomebooleanfalseFilter for remote roles only
maxCostnumber2Hard cost ceiling in USD — actor stops expanding once spent estimate reaches this
proxyConfigurationobjectRESIDENTIALStandard Apify proxy config

Example input

{
"queries": ["software engineer", "data scientist"],
"location": "San Francisco, CA",
"countryCode": "us",
"languageCode": "en",
"maxItems": 500,
"datePosted": "week",
"jobType": ["FULLTIME"],
"workFromHome": false,
"maxCost": 4
}

Output

Each row in the dataset is one job with the schema below:

{
"jobId": "eyJhbGciOi...",
"title": "Senior Software Engineer",
"companyName": "Acme Inc",
"companyLogo": "https://encrypted-tbn0.gstatic.com/images?q=...",
"location": "San Francisco, CA, US",
"latitude": 37.7749,
"longitude": -122.4194,
"description": "We're hiring senior engineers for our infrastructure team...",
"descriptionHtml": "<p>We're hiring senior engineers for our infrastructure team...</p>",
"postedAt": "5 days ago",
"postedAtIso": "2026-04-10T00:00:00.000Z",
"jobType": "FULLTIME",
"workFromHome": false,
"salaryMin": 180000,
"salaryMax": 240000,
"salaryCurrency": "USD",
"salaryPeriod": "YEAR",
"benefits": ["Health insurance", "401(k)", "Stock options"],
"qualifications": ["5+ years experience", "Go or Rust proficiency"],
"responsibilities": ["Design distributed systems", "Mentor junior engineers"],
"applyOptions": [
{ "network": "linkedin", "url": "https://www.linkedin.com/jobs/view/...", "directApply": false },
{ "network": "greenhouse", "url": "https://boards.greenhouse.io/acme/jobs/...", "directApply": false }
],
"postedVia": "LinkedIn",
"sourceQuery": "software engineer",
"scrapedAt": "2026-05-24T12:00:00.000Z"
}

Field reference

FieldTypeNotes
jobIdstringGoogle's internal identifier (or synthesized from title|company|location for dedup)
titlestringJob title
companyNamestringHiring company
companyLogostringURL of company logo image (Google CDN)
locationstringHuman-readable location string
latitude, longitudenumberGPS coordinates when Google provides them
description, descriptionHtmlstringPlain text + HTML versions of job description
postedAtstringRelative date string from Google (e.g. "5 days ago")
postedAtIsostringISO 8601 — parsed from postedAt
jobTypestringFULLTIME / PARTTIME / CONTRACTOR / INTERN
workFromHomebooleanTrue for fully remote
salaryMin, salaryMaxnumberSalary range when disclosed
salaryCurrencystringISO currency code
salaryPeriodstringHOUR / MONTH / YEAR
benefits, qualifications, responsibilitiesstring[]Bullet lists extracted from job posting
applyOptionsobject[]{network, url, directApply} per apply destination
postedViastringThe job board that posted it on Google
sourceQuerystringWhich input queries[] produced this row
scrapedAtstringISO 8601 timestamp of extraction

Example use cases

Recruiter — track competitor hiring

{ "queries": ["senior backend engineer"], "location": "Austin, TX", "datePosted": "week", "maxItems": 100 }

Returns this week's senior backend roles in Austin with salary, company, and one-click apply.

Salary benchmarking — by role and city

{ "queries": ["product manager"], "location": "Seattle, WA", "datePosted": "month", "maxItems": 300, "maxCost": 3 }

Combine with simple aggregation to get median / p90 salary for PMs in Seattle this month.

Remote-only sourcing

{ "queries": ["devops engineer"], "countryCode": "us", "workFromHome": true, "maxItems": 200 }

Filter for fully remote roles across the US.

Multi-role digest for a job board

{ "queries": ["data scientist","ml engineer","data engineer"], "location": "London", "countryCode": "gb", "maxItems": 500, "maxCost": 5 }

Aggregate three related roles in one run for a daily digest.


Cost calculator

Jobs scrapedCost
50$0.40
100$0.80
250$2.00
500$4.00
1,000$8.00
2,000$16.00

Costs are deterministic — you're charged per successfully extracted job, not per API call.


FAQ

Q: Why does Google Jobs scraping need Brightdata? A: Google's Jobs vertical (udm=8) ships a different consent flow than regular search and frequently rejects datacenter IPs with a "before you continue" redirect. Brightdata Scraping Browser carries the CF / consent cookies needed to render the Jobs widget.

Q: My run returned 0 jobs but succeeded — why? A: Google occasionally serves a soft-consent redirect (page title becomes the URL itself, 0 cards render). The actor detects this and (1) reloads the page, (2) reconnects to Brightdata for a fresh exit IP, retrying up to 3 times. If it still fails after that, you weren't charged for the empty run.

Q: Can I scrape EU jobs? A: No — Google disabled the Jobs vertical in the EEA in 2023 due to antitrust action. The widget simply isn't there. If you set countryCode: "de" the actor will fail gracefully.

Q: How does maxItems > 500 actually find more? A: Google caps visible results per single filter slice to ~100. To unlock more, the actor automatically expands the search matrix by iterating over datePosted (today → 3days → week → month) and jobType filters, deduplicating by jobId. Costs scale with successful extractions, not slices attempted.

Q: How fresh is the data? A: Real-time from Google's index. Jobs are typically posted to Google within hours of being added to the source job board (LinkedIn, Indeed, etc.).

Q: Can I get the full apply URL on LinkedIn / Greenhouse without a Google redirect? A: Yes — applyOptions[].url is the canonical destination URL (we decode Google's redirect wrapper).


Notes & limits

  • EU countries are not supported (Google disabled the widget there in 2023).
  • Pagination ceiling: Google caps visible results to ~100 per filter slice. maxItems > 500 triggers matrix expansion automatically.
  • jobId is sourced from Google's internal identifier when available; otherwise synthesized from title|company|location for cross-run dedup.
  • Apply networks detected: LinkedIn, Indeed, Glassdoor, Workday, Greenhouse, Lever, Ashby, BambooHR, plus direct company career pages.
  • Empty runs ($0 charged) typically mean Google flagged the IP — re-running usually succeeds.


If this actor saved you time, please leave a ⭐⭐⭐⭐⭐ review on the Apify Store — it helps a lot 🙏