# Company Jobs API: Greenhouse, Lever, Workable (`noozra/noozra-jobs`) Actor

Open jobs from 800+ companies' own job boards on Greenhouse, Lever and Workable, plus remote job boards. Filter by keyword, company, country, remote and section. Each listing has title, company, location, salary when given and its link. Try it without a key; a free Noozra API key unlocks the rest.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## Company Jobs API: Greenhouse, Lever, Workable

Get open job listings from 800+ companies' own job boards on Greenhouse, Lever and Workable, plus remote job boards, as clean JSON. Filter by keyword, company, country, fully remote and section. Each listing has the title, company, location, country, remote and hybrid flags, salary when the listing gives one, and the link to the listing. Listings from employers' own boards usually also carry the employer's description and the link to apply.

The data comes from the [Noozra jobs API](https://noozra.com/api/job-postings-api), which reads the job boards companies publish for exactly this and refreshes them through the day. This Actor is a convenient way to run it on Apify: schedule it, send the results to a webhook, Google Sheets or your database, or call it from your own Actors.

### Why use it

- **Straight from the employer.** Most listings come from the company's own job board, so you get the employer's wording and their apply link, not a repost.
- **One schema for every board.** Greenhouse, Lever and Workable listings all come out in the same fields, with the country read from the location as an ISO code.
- **No scraping on your side.** The Actor makes plain HTTPS requests to an API: no browser, no proxies, no blocked runs.

### Your Noozra API key

The Actor calls the Noozra API with your own key, which you paste into the input (Apify stores it encrypted).

To try it first, run it with the key left empty: you get the 10 newest listings from Noozra's public jobs feed, which carries remote job boards and jobs posted on Noozra but not companies' own job boards, and ignores the filters.

| Key | Requests a day | What it reaches |
|---|---|---|
| Free | 100 | Personal and non-commercial projects; open listings posted in the last 14 days |
| API Pro, $9 for 30 days | 25,000 | Commercial use of the API, plus every open listing however long ago it was posted, and closed ones |

Most open listings were posted more than 14 days ago, so a free key sees a minority of them. Get a free key at [noozra.com/register](https://noozra.com/register?next=%2Faccount%2Fapi): it creates your account and takes you to your API keys, or goes straight to them if you are already signed in. Each request returns up to 100 listings, so a free key covers up to 10,000 listings a day.

You also pay Apify's usual platform usage for the run, which for this Actor is small.

### Input

| Field | What it does |
|---|---|
| `apiKey` | Your Noozra API key (starts with `nk_`). Leave it empty for a 10-item sample. |
| `query` | Text to find in the job title or company name, matched as one phrase: `data engineer` finds "Senior Data Engineer" but not "Engineer, Data Platform". |
| `company` | One company's listings, matched on its whole name (upper or lower case does not matter), such as `Stripe`. |
| `country` | Two-letter ISO code, such as `US`, `DE` or `GB` (`UK` is read as `GB`). Matches listings that name a country; listings from other job boards never do. |
| `remoteOnly` | Only fully remote listings. |
| `employerBoardsOnly` | Only listings from companies' own job boards, leaving out remote job boards and jobs posted on Noozra. |
| `category` | One section (AI, business, finance, general, health, science or tech), or empty for all. |
| `postedAfter` | Only listings posted after this date. A free key reaches back 14 days from now, so pick a date at most 13 days ago; earlier needs API Pro. |
| `includeClosed` | Also listings past their closing date. Needs API Pro. |
| `maxItems` | Stop after this many listings (default 100). Pages through 100 per request. |

Example:

```json
{
    "apiKey": "nk_...",
    "query": "engineer",
    "country": "US",
    "employerBoardsOnly": true,
    "maxItems": 500
}
```

### Output

One dataset item per listing, newest first:

```json
{
    "id": "64dff226-945b-43aa-8972-4a6ab1d6f53c",
    "title": "Senior Accountant, Operations Accounting",
    "company": "CoreWeave",
    "location": "Dallas, TX",
    "country": "US",
    "remote": false,
    "hybrid": false,
    "employment_type": null,
    "categories": ["finance"],
    "posted_at": "2026-10-04T18:41:06Z",
    "expires_at": "2026-10-18T19:43:24.225508Z",
    "source": "CoreWeave careers",
    "from_employer": true,
    "url": "https://coreweave.com/careers/job?4718615006&board=coreweave&gh_jid=4718615006",
    "apply_url": "https://coreweave.com/careers/job?4718615006&board=coreweave&gh_jid=4718615006",
    "noozra_url": "https://noozra.com/jobs/64dff226-945b-43aa-8972-4a6ab1d6f53c",
    "description": "CoreWeave is The Essential Cloud for AI™. Built for pioneers by pioneers, ..."
}
```

`salary` (`min`, `max`, `currency`) appears only when the listing gives one. `description` and `apply_url` usually appear on listings from employers' own boards (`description` is the first 500 characters of the employer's text) and on jobs posted on Noozra; a listing from another job board carries its `source` and the link to it. `country` is null when the listing names no country. Download the results as JSON, CSV, Excel or HTML from the run's Storage tab, or read them through the Apify API.

### Using the data

The listings belong to the employers and job boards that published them. Show each one with its `source` and a link to its `url` (or `apply_url`), and don't present them as your own. A free key is for personal and non-commercial use; using the API in anything that earns money needs API Pro. See the [Noozra terms](https://noozra.com/terms).

### Errors you may see

- **"Noozra refused the API key"**: the key is mistyped, or was revoked or regenerated. Copy it again from [noozra.com/account/api](https://noozra.com/account/api). (**"That is not a Noozra API key"** means the input does not start with `nk_`.)
- **"The API key's daily quota is used up"**: the key's requests for the day are spent; it resets at 00:00 UTC. Listings already saved stay in the dataset.
- **"jobs posted more than 14 days ago, and closed listings, are part of API Pro"**: `postedAfter` reaches past a free key's 14 days, or `includeClosed` is on without API Pro.
- **"country must be an ISO 3166-1 alpha-2 code"**: use the two-letter ISO code, such as `US`, `DE` or `GB`.

### Other ways to use the API

The same jobs are available directly over HTTPS and through the `find_jobs` tool of the MCP server for Claude Code, Cursor and other MCP clients. See [noozra.com/api/job-postings-api](https://noozra.com/api/job-postings-api).

# Actor input Schema

## `apiKey` (type: `string`):

Your Noozra API key (it starts with nk\_). Leave it empty to try the Actor: you get the 10 newest listings from Noozra's public jobs feed, without filters or companies' own job boards. Get a key free at https://noozra.com/register?next=%2Faccount%2Fapi. A free key gives 100 requests a day, for personal and non-commercial use, and listings posted in the last 14 days. API Pro gives 25,000 requests a day, commercial use of the API, every open listing however old, and closed ones. One request returns up to 100 listings.

## `query` (type: `string`):

Text to find in the job title or the company name, matched as one phrase: data engineer finds Senior Data Engineer, not Engineer, Data Platform.

## `company` (type: `string`):

Only this company's listings, matched on its whole name (upper or lower case does not matter), such as Stripe.

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

Two-letter ISO 3166-1 code, such as US, DE or GB (UK is read as GB). Matches only listings that name a country, which listings from other job boards never do.

## `remoteOnly` (type: `boolean`):

Only listings that are fully remote.

## `employerBoardsOnly` (type: `boolean`):

Only listings read from companies' own job boards (Greenhouse, Lever, Workable), leaving out remote job boards and jobs posted on Noozra.

## `category` (type: `string`):

Only listings filed under this section. Leave empty for every section.

## `postedAfter` (type: `string`):

Only listings posted after this date. A free key reaches back 14 days from now, so pick a date at most 13 days ago; earlier dates need API Pro.

## `includeClosed` (type: `boolean`):

Also listings past their closing date. Needs API Pro.

## `maxItems` (type: `integer`):

Stop after this many listings. Each request returns up to 100.

## Actor input object example

```json
{
  "remoteOnly": false,
  "employerBoardsOnly": false,
  "includeClosed": false,
  "maxItems": 100
}
```

# Actor output Schema

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

No description

# 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 = {
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("noozra/noozra-jobs").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 = { "maxItems": 100 }

# Run the Actor and wait for it to finish
run = client.actor("noozra/noozra-jobs").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 '{
  "maxItems": 100
}' |
apify call noozra/noozra-jobs --silent --output-dataset

```

## MCP server setup

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

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/w8NnmgRdIunwh5VaX/builds/KWIeHQhBk2gvC3HM1/openapi.json
