JobCook avatar

JobCook

Pricing

from $10.00 / 1,000 jobs

Go to Apify Store
JobCook

JobCook

Find verified jobs on employer career pages and ATS boards. Excel-ready dataset, direct employers only.

Pricing

from $10.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Solutions Smart

Solutions Smart

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Categories

Share

JobCook - Direct Employer Job Discovery

JobCook 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 JobCook 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

JobCook offers two modes:

  1. Discover mode — Provide a natural-language task like "Find direct-employer robotics software jobs in Germany." JobCook searches for relevant career pages, identifies ATS platforms, and extracts verified postings.

  2. Crawl mode — Provide a list of known employer career page or ATS URLs. JobCook 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 JobCook 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 console.apify.com/actors/solutionssmart~jobcook link only works while logged in and only after the Actor is published, which is why it appeared broken.)

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"]
}

JobCook 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. JobCook includes Chromium and can render these pages when needed.

Set enableBrowser: true and configure a browser page budget:

{
"enableBrowser": true,
"maxBrowserPages": 30
}

JobCook 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

JobCook 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. JobCook 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 JobCook 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)

JobCook 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 Unblocker
  • google-serp — Route web discovery searches through Google SERP Proxy
  • both — Enable both proxy services
  • none — 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

JobCook'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, JobCook 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

JobCook 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 JobCook saves to your dataset. There is no upfront fee.

Limitations

  • JobCook 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 maxBrowserPages budget. When the budget is exhausted, JobCook falls back to HTTP-only extraction.
  • When postedWithinDays is 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. JobCook 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.