Google Jobs Scraper avatar

Google Jobs Scraper

Pricing

$8.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.008 per job.

Pricing

$8.00 / 1,000 job scrapeds

Rating

5.0

(3)

Developer

Gio

Gio

Maintained by Community

Actor stats

0

Bookmarked

74

Total users

39

Monthly active users

2 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 🙏