Jobs Scraper - Verified Employer & ATS Job Postings
Pricing
from $10.00 / 1,000 jobs
Jobs Scraper - Verified Employer & ATS Job Postings
Scrape verified job postings from direct employer career pages and ATS boards (Greenhouse, Lever, Ashby, Personio) with LinkedIn, Indeed and Stepstone lead discovery. Returns normalized jobs with title, company, location, posting URL, status and confidence.
Pricing
from $10.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Solutions Smart
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Jobs Scraper — Verified Direct-Employer Job Postings
Jobs Scraper finds verified job postings directly from employer career pages and applicant tracking systems (ATS). Instead of scraping job aggregators, it discovers and extracts jobs from the source—company career pages and public ATS boards like Greenhouse, Lever, Ashby, and Personio.
Give Jobs Scraper a hiring goal ("Find robotics software jobs in Germany") or a list of career page URLs, and it returns normalized, structured job data ready for recruiting, market research, or lead generation.
What you get
Each run produces a dataset of verified employer jobs. Every record includes:
- Job title and description (when available)
- Company name and location
- Job URL (canonical, deduplicated)
- ATS platform detected (Greenhouse, Lever, Ashby, Personio, Workday, SmartRecruiters, Teamtailor, Recruitee, or generic)
- Status (active/inactive when detectable)
- Confidence score based on extraction method
- Tags (employment type, remote, salary presence, custom tags)
- Salary data (when published by the employer)
All dataset items have recordType: "verified-job" to clearly identify what each row represents.
How to run
Jobs Scraper offers two modes:
-
Discover mode — Provide a natural-language task like "Find direct-employer robotics software jobs in Germany." Jobs Scraper searches for relevant career pages, identifies ATS platforms, and extracts verified postings.
-
Crawl mode — Provide a list of known employer career page or ATS URLs. Jobs Scraper extracts jobs directly from those sources.
The default auto mode picks the right workflow based on your input.
Quick start examples
Runnable example inputs live in the examples/ folder of this repo, not in this file:
- examples/germany-robotics-software.json — discover direct-employer robotics software jobs in Germany.
- examples/us-software-engineering.json — discover direct-employer software engineering jobs in the United States.
- examples/uk-software-engineering.json — discover direct-employer software engineering jobs in the United Kingdom.
- examples/crawl-career-pages.json — crawl known employer career or ATS URLs (replace the placeholder URLs first).
Named, reusable tasks cannot be shipped inside the Actor code — they live on the platform. To create them, open Jobs Scraper in the Apify Store, go to the Tasks tab, and create one task per example above by pasting the matching JSON file as the task input. (The old-style console.apify.com/actors/solutionssmart~jobs-scraper link only works while logged in and only after the Actor is published, which is why a bare console link can appear broken — always share the Store URL above.)
Filters and options
Keywords
Keywords filter jobs by checking the job title only. At least one keyword must appear in the title:
{"keywords": ["robotics", "software"],"excludeKeywords": ["intern", "student"]}
Excluded keywords match against the title, location, or description.
Countries and locations
Filter jobs by country or specific city/region:
{"countries": ["Germany", "Austria", "Switzerland"],"locations": ["Berlin", "Munich"]}
Posted date filter
Filter jobs by posting date. When postedWithinDays is set, jobs that publish a date are kept only if that date is inside the window. Jobs with no published date are still kept:
{"postedWithinDays": 30}
Salary filter
Exclude jobs below a minimum salary:
{"minSalary": 100000,"salaryCurrency": "USD"}
Jobs without salary data are excluded when this filter is enabled.
Direct employers only
Exclude staffing agencies and recruiters:
{"directEmployersOnly": true}
Custom tags
Add your own tags to every job in the dataset:
{"tags": ["q1-2026", "high-priority"]}
Jobs Scraper also automatically adds tags like remote, ats-greenhouse, full-time, has-salary, and region tags when relevant.
Browser rendering for JavaScript-heavy sites
Some employer career pages load jobs via JavaScript. Jobs Scraper includes Chromium and can render these pages when needed.
Set enableBrowser: true and configure a browser page budget:
{"enableBrowser": true,"maxBrowserPages": 30}
Jobs Scraper uses the browser only when a career page requires JavaScript rendering and is not a supported ATS board. Public ATS APIs (Greenhouse, Lever, Ashby, Personio) are fetched via HTTP without a browser.
Optional discovery hints from regional job boards
Jobs Scraper optionally supports curated regional job board presets as discovery seeds. These provide starting points for web searches but do not guarantee specific coverage or job counts.
Set jobSourcesPreset to usa, eu, remote, or serbia to include regional board URLs in the discovery process.
Note: These presets are discovery hints only. Jobs Scraper resolves leads back to employer career pages and ATS boards before saving a job to the dataset. Aggregator results are not included as final output.
The presets are derived from cursustrace, licensed under Apache-2.0.
Google Sheets export (optional)
Export results directly to Google Sheets after each run. This feature is disabled by default.
To enable:
{"googleSheetsEnabled": true,"googleSheetsSpreadsheetId": "your-spreadsheet-id","googleSheetsServiceAccountKey": "{ ... service account JSON ... }","googleSheetsOperation": "APPEND"}
The export runs in the background after Jobs Scraper completes. Check the run logs for the export actor run ID and status. Use Apify's secret input feature to protect your service account key.
Apify Proxy (optional)
Jobs Scraper can route requests through Apify Proxy when career pages block direct access or when you need geo-specific results.
Proxy is disabled by default and billed separately by Apify.
Set proxyMode to:
unblocker— Route HTTP and browser requests through Apify Unblockergoogle-serp— Route web discovery searches through Google SERP Proxyboth— Enable both proxy servicesnone— No proxy (default)
Example with Unblocker:
{"proxyMode": "unblocker","proxyCountryCode": "DE"}
Example with Google SERP Proxy for discovery:
{"proxyMode": "google-serp","googleDomain": "google.de","proxyCountryCode": "DE"}
See Apify Proxy Unblocker and Google SERP Proxy for pricing details.
Optional Jev controller
Jobs Scraper's default controller uses deterministic rules to plan searches and inspect candidate pages. For faster, more adaptive discovery, you can optionally enable Jev (TypeSafe System One), an intelligent routing controller.
When you configure a TypeSafe API key as an Apify Actor secret (TYPESAFE_API_KEY), Jev becomes available. Set agentController: "jev" to use it.
If the TypeSafe API is unavailable or times out, Jobs Scraper automatically falls back to the rule-based controller. ATS extraction, canonicalization, deduplication, and validation remain deterministic regardless of controller choice.
Obtain an API key from TypeSafe.
Output example
Here's what a single dataset item looks like:
{"recordType": "verified-job","title": "Senior Robotics Software Engineer","company": "Acme Robotics GmbH","location": "Berlin, Germany","country": "DE","jobUrl": "https://boards.greenhouse.io/acme/jobs/5678901","canonicalUrl": "https://boards.greenhouse.io/acme/jobs/5678901","sourceDomain": "boards.greenhouse.io","ats": "greenhouse","status": "active","directEmployer": true,"extractionMethod": "ats-api","confidence": 1.0,"postedAt": "2026-09-15T10:00:00Z","tags": ["ats-greenhouse", "full-time", "has-salary", "salary-eur"],"salary": {"min": 80000,"max": 120000,"currency": "EUR","period": "year"},"description": "We are looking for an experienced robotics engineer..."}
Pricing
Jobs Scraper uses a pay-per-result model:
- $0.01 USD per job added to the dataset
- Apify platform compute (CPU, memory) is billed separately as standard Apify usage
- Optional proxy usage (Unblocker, Google SERP) is billed separately by Apify
You only pay for verified employer jobs that Jobs Scraper saves to your dataset. There is no upfront fee.
Limitations
- Jobs Scraper reads public pages only. It does not log in, solve CAPTCHAs, or bypass access controls.
- Not all ATS platforms have public listing APIs. Workday, SmartRecruiters, Teamtailor, and Recruitee rely on generic extraction and may return fewer structured fields.
- JavaScript-heavy career pages depend on the configured
maxBrowserPagesbudget. When the budget is exhausted, Jobs Scraper falls back to HTTP-only extraction. - When
postedWithinDaysis set, jobs that publish a date outside the window are excluded; jobs without a date are kept. - LinkedIn, Indeed, and Stepstone are used only as discovery hints during web search. Jobs Scraper resolves these leads back to employer career pages or ATS boards. Unresolved aggregator leads are not saved to the dataset.
Attribution
The optional regional job board presets (jobSourcesPreset) are derived from cursustrace, licensed under Apache License 2.0.
Copyright 2026 cursustrace contributors.