# Greenhouse Jobs Dataset — Global, Daily, Source-Verified (`nivult/greenhouse-jobs-dataset`) Actor

Live job postings from every Greenhouse board on Earth, refreshed daily. Filter by country, seniority, workplace, keyword. Every field carries its source.

- **URL**: https://apify.com/nivult/greenhouse-jobs-dataset.md
- **Developed by:** [Nivult](https://apify.com/nivult) (community)
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

![Every Greenhouse board, read live — Nivult](https://raw.githubusercontent.com/granno-dev/nivult-engine/main/apify/assets/copertina-greenhouse.png)

### What does this Greenhouse jobs dataset do?

**Greenhouse** is the ATS of the world's tech companies — startups, scale-ups, and the names you know. This Actor reads every public Greenhouse board directly, every day, and gives you the postings as clean, structured rows. When a posting leaves the board, it closes here too: the dataset never lies about what is open.

Filter **Greenhouse job postings** by what matters:

- 🌍 **Country** — 240+ countries and territories
- 🎯 **Seniority & workplace** — intern to head, remote / hybrid / on site
- 🔎 **Keyword** — free text in title and description
- 🗓️ **Posted-after date** — only what is fresh

Every field carries **field-level provenance**: the row says where each value came from, so you can audit what you buy.

#### Not a scraper — a maintained index

Scrape-on-demand actors ask you for career-site URLs and minutes of your
patience, then hand you raw rows. **This dataset asks for nothing but
filters** — the reading already happened today, whether you run us or not.

| | Scrape-on-demand | **Nivult Dataset API** |
|---|---|---|
| You supply | URLs you must know | nothing — just filters |
| Answer in | minutes | **seconds** |
| Closed postings | stay forever | **verified closed**, daily |
| Enrichment | raw title + link | seniority, workplace, language, skills |
| Provenance | none | **field-level, on every row** |

![How it works: you set filters, the index refreshes daily, you get clean rows in seconds](https://raw.githubusercontent.com/granno-dev/nivult-engine/main/apify/assets/diagramma-greenhouse.png)

### How to use it

1. Open the Actor and set your filters — or none, for the full Greenhouse slice.
2. Run it, then download JSON, CSV or Excel — or read the dataset through the Apify API.
3. For the whole Greenhouse universe every morning, ask about the daily feed (link on this page).

### How much does a Greenhouse jobs dataset cost?

**$3 per 1,000 rows received** — nothing for empty filters, nothing upfront. Apify's free plan covers your first hundreds of rows.

Why a row here costs more than a raw scrape: a raw row is a title and a link that may be dead by tonight. Ours is an **enriched, verified record** — classified, provenance-stamped, and closed out of the index the day it leaves the source. You are not paying for a scrape; you are paying for the maintenance.

### What does the output look like?

A real row, read the same day from a live Greenhouse board:

```json
{
  "title": "Summer Internship 2027",
  "company": "Hankooktireamericacorp",
  "ats": "greenhouse",
  "country": "US",
  "remote": "onsite",
  "seniority": "intern",
  "language": "en",
  "technologies": ["MS-Office"],
  "salary_estimate_median": 52300,
  "salary_estimate_currency": "USD",
  "salary_is_estimate": true,
  "posted_at": "2026-10-06",
  "url": "https://job-boards.greenhouse.io/hankooktireamericacorp/jobs/5445258008"
}
```

### Explore the Nivult family

- **[Job Postings Dataset — the full index](https://apify.com/nivult/global-job-postings)** — every ATS, every filter, company mode
- **[Workday Jobs Dataset](https://apify.com/nivult/workday-jobs-dataset)** — every Workday career site, daily
- **[Greenhouse Jobs Dataset](https://apify.com/nivult/greenhouse-jobs-dataset)** — every Greenhouse board, daily
- **[Jobs by Technology](https://apify.com/nivult/jobs-by-technology)** — postings matched by the stack in the text

### FAQ

**Is this the official Greenhouse API?**
No — and it doesn't need Greenhouse credentials. We read the public boards that companies publish for candidates, politely and within their terms.

**How fresh is the data?**
The Greenhouse slice refreshes every day; new postings land within 24 hours of appearing on the board.

**Do you cover other ATS platforms?**
Yes — Workday, Lever, SmartRecruiters, SuccessFactors and dozens more. The full index (all platforms, all filters) has its own Actor; niche datasets like this one exist for the platforms people ask for most.

**Is this legal?**
We read public postings on the employer's own board, respect robots directives and rate limits, and honor removal requests.

# Actor input Schema

## `tipo` (type: `string`):

Job postings or enriched company records

## `country` (type: `string`):

e.g. IT, DE, US — leave empty for worldwide

## `technology` (type: `string`):

e.g. SAP, Snowflake, Kubernetes — postings mentioning it in the text

## `q` (type: `string`):

free text in title and description

## `seniority` (type: `string`):

Filter by seniority level (optional)

## `remote` (type: `string`):

Filter by workplace type (optional)

## `dal` (type: `string`):

ISO date, e.g. 2026-10-01 — only fresher postings

## `limite` (type: `integer`):

1–10,000 (for bigger slices ask about the daily full export)

## Actor input object example

```json
{
  "tipo": "jobs",
  "seniority": "",
  "remote": "",
  "limite": 100
}
```

# Actor output Schema

## `results` (type: `string`):

The records matching your filters, in the default dataset — view them as a table or download as JSON, CSV, Excel.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("nivult/greenhouse-jobs-dataset").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("nivult/greenhouse-jobs-dataset").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call nivult/greenhouse-jobs-dataset --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nivult/greenhouse-jobs-dataset"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/QafnwMQonlkihdzie/builds/iQalXuwT5Q79SFtIm/openapi.json
