# Jobvite Jobs Scraper (`scrapers_lat/jobvite-jobs-scraper`) Actor

Scrape open jobs from any company career site on Jobvite with title, category, location, employment type, full description, salary, job ID and apply link. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/scrapers\_lat/jobvite-jobs-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.80 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![Jobvite Jobs Scraper](https://scrapers.lat/banners/jobvite-jobs-scraper.png)](https://console.apify.com/actors/CqKxCOJYO7mNl0rjL/input)

## Jobvite Jobs Scraper

Here is one real result, with every field the actor returns:

```json
{
  "title": "Facilities Technician I (Onsite - San Diego, CA)",
  "company": "American Specialty Health Incorporated",
  "category": "Building Services & Facilities",
  "location": "San Diego, California",
  "city": "San Diego",
  "region": "California",
  "postalCode": null,
  "country": "United States",
  "workplaceType": null,
  "employmentType": "Regular Full-Time",
  "descriptionHtml": "<p>American Specialty Health Incorporated (ASH) is seeking a Facilities Technician I ... </p> (full HTML returned; trimmed here for readability)",
  "descriptionText": "American Specialty Health Incorporated (ASH) is seeking a Facilities Technician I to join our Facilities department ... (full plain text returned; trimmed here for readability)",
  "salaryCurrency": null,
  "salaryMin": null,
  "salaryMax": null,
  "salaryPeriod": null,
  "postedAt": "2026-05-22",
  "jobId": "oEXbAfw6",
  "applyUrl": "https://jobs.jobvite.com/ashcompanies/job/oEXbAfw6",
  "companyHandle": "ashcompanies",
  "aiJdSummary": null,
  "aiSkills": null,
  "aiTechnologies": null,
  "aiSeniority": null,
  "aiSalaryEstimateMin": null,
  "aiSalaryEstimateMax": null,
  "aiSalaryEstimateCurrency": null,
  "aiSalaryEstimateBasis": null,
  "aiSalaryEstimateConfidence": null,
  "source": "Jobvite",
  "observedAt": "2026-08-14T08:43:46.025Z"
}
```

The most complete Jobvite jobs scraper available. It returns every field a Jobvite company career site exposes for each posting, including both HTML and plain-text descriptions and parsed location fields, and gives you a keyword filter plus optional AI and contact add-ons to target exactly the jobs you need.

**📥 [Input](https://apify.com/scrapers_lat/jobvite-jobs-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/jobvite-jobs-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/jobvite-jobs-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/jobvite-jobs-scraper/examples)**

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify\&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Jobvite%20career%20sites-blue)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)
![Billing](https://img.shields.io/badge/Billing-Pay%20per%20result-brightgreen)

### Table of contents

- [What it does](#what-it-does)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [Example output record](#example-output-record)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)

### What it does

The actor reads the public career site of any company on Jobvite, parses every open posting, and writes one normalized record per job to the run's dataset. When `withDetails` is on (default), each posting is opened to collect the full description (both `descriptionHtml` and clean `descriptionText`), employment type, salary and posting date. Location is split into `city`, `region`, `postalCode` and `country`. Missing source values are returned as `null`, never invented.

Optional add-ons enrich each record: AI job summary, skills and seniority extraction, salary estimate, and a business-contact email and name lookup. All add-ons are off by default and require a paid Apify plan.

### Quickstart

Open the actor, paste this into the input, and press Run. It collects up to 10 jobs from the `ashcompanies` Jobvite site with full details.

```json
{
  "company": "ashcompanies",
  "maxJobs": 10,
  "withDetails": true
}
```

Add a `searchQuery` to keep only matching roles. Every input field is optional; `company` defaults to `ashcompanies`.

### Input reference

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `company` | string | no | `ashcompanies` | The Jobvite career site to scrape. Enter the company handle (the part after `jobs.jobvite.com/`, for example `ashcompanies`) or paste the full career site URL. |
| `maxJobs` | integer | no | `10` | Maximum number of jobs to collect. |
| `withDetails` | boolean | no | `true` | Open each posting to collect the full description, employment type, salary and dates. Turn off for a faster title, category and location only run. |
| `searchQuery` | string | no | (empty) | Keep only jobs whose title, category, location or description contains this text (for example `analyst`, `remote`, `nurse`). |
| `enrichContacts` | boolean | no | `false` | Paid add-on. For results without an email, attempt to find a public business contact email and name. Billed per attempt, plus an extra charge only when an email is found. |
| `enrichContactsMax` | integer | no | `50` | Cap how many results the contact add-on tries to enrich. Free Apify accounts are capped at 3. |
| `withJdSummary` | boolean | no | `false` | Paid add-on. Generate a plain-English summary of each description. Requires a paid Apify plan. Billed per usable AI result. |
| `withSkills` | boolean | no | `false` | Paid add-on. Extract required skills, technologies and seniority. Requires a paid Apify plan. Billed per usable AI result. |
| `withSalaryEstimate` | boolean | no | `false` | Paid add-on. Estimate market salary for postings that state none. Requires a paid Apify plan. Billed per usable AI result. |

### Output reference

One dataset item per posting. Types: `string`, `integer`, `boolean`, `array`, or `null` when the source value is absent.

| Field | Type | Description |
|---|---|---|
| `title` | string | Job title. |
| `company` | string | Hiring company display name. |
| `category` | string | Jobvite job category. |
| `location` | string | Full location label as shown on the posting. |
| `city` | string | Parsed city, or `null`. |
| `region` | string | Parsed state or region, or `null`. |
| `postalCode` | string | Parsed postal code, or `null`. |
| `country` | string | Parsed country, or `null`. |
| `workplaceType` | string | Onsite, remote or hybrid when stated, else `null`. |
| `employmentType` | string | Employment type, for example `Regular Full-Time`. |
| `descriptionHtml` | string | Full job description as HTML (when `withDetails` is on). |
| `descriptionText` | string | Full job description as clean plain text (when `withDetails` is on). |
| `salaryCurrency` | string | Salary currency when published, else `null`. |
| `salaryMin` | integer | Parsed lower salary bound, or `null`. |
| `salaryMax` | integer | Parsed upper salary bound, or `null`. |
| `salaryPeriod` | string | Salary period (for example hourly, yearly), or `null`. |
| `postedAt` | string | Posting date (`YYYY-MM-DD`), or `null`. |
| `jobId` | string | Jobvite job id, unique per posting. |
| `applyUrl` | string | Public URL of the posting and apply page. |
| `companyHandle` | string | The Jobvite handle the job was read from. |
| `aiJdSummary` | string | AI summary of the description (paid add-on), else `null`. |
| `aiSkills` | array | AI-extracted skills (paid add-on), else `null`. |
| `aiTechnologies` | array | AI-extracted technologies (paid add-on), else `null`. |
| `aiSeniority` | string | AI-inferred seniority (paid add-on), else `null`. |
| `aiSalaryEstimateMin` | integer | AI salary estimate low bound (paid add-on), else `null`. |
| `aiSalaryEstimateMax` | integer | AI salary estimate high bound (paid add-on), else `null`. |
| `aiSalaryEstimateCurrency` | string | AI salary estimate currency (paid add-on), else `null`. |
| `aiSalaryEstimateBasis` | string | AI salary estimate basis (paid add-on), else `null`. |
| `aiSalaryEstimateConfidence` | string | AI salary estimate confidence (paid add-on), else `null`. |
| `source` | string | Always `Jobvite`. |
| `observedAt` | string | ISO 8601 timestamp of when the record was collected. |

On a failed run the actor writes a single item with a populated `error` field instead of a job record, and does not charge for it.

### Example output record

Real record from a live run (input `{"company":"ashcompanies","maxJobs":10}`). The `descriptionHtml` and `descriptionText` values are trimmed here for readability; the dataset returns them in full.

```json
{
  "title": "Facilities Technician I (Onsite - San Diego, CA)",
  "company": "American Specialty Health Incorporated",
  "category": "Building Services & Facilities",
  "location": "San Diego, California",
  "city": "San Diego",
  "region": "California",
  "postalCode": null,
  "country": "United States",
  "workplaceType": null,
  "employmentType": "Regular Full-Time",
  "descriptionHtml": "<p>American Specialty Health Incorporated (ASH) is seeking a Facilities Technician I ... </p> (trimmed; full HTML in dataset)",
  "descriptionText": "American Specialty Health Incorporated (ASH) is seeking a Facilities Technician I to join our Facilities department ... (trimmed; full text in dataset)",
  "salaryCurrency": null,
  "salaryMin": null,
  "salaryMax": null,
  "salaryPeriod": null,
  "postedAt": "2026-05-22",
  "jobId": "oEXbAfw6",
  "applyUrl": "https://jobs.jobvite.com/ashcompanies/job/oEXbAfw6",
  "companyHandle": "ashcompanies",
  "aiJdSummary": null,
  "aiSkills": null,
  "aiTechnologies": null,
  "aiSeniority": null,
  "aiSalaryEstimateMin": null,
  "aiSalaryEstimateMax": null,
  "aiSalaryEstimateCurrency": null,
  "aiSalaryEstimateBasis": null,
  "aiSalaryEstimateConfidence": null,
  "source": "Jobvite",
  "observedAt": "2026-08-14T08:43:46.025Z"
}
```

### Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace `<TOKEN>` with your Apify API token.

Run synchronously and get dataset items in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~jobvite-jobs-scraper/run-sync-get-dataset-items?token=%3CTOKEN%3E" \
  -H "Content-Type: application/json" \
  -d '{"company":"ashcompanies","maxJobs":25}'
```

Start a run asynchronously:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~jobvite-jobs-scraper/runs?token=%3CTOKEN%3E" \
  -H "Content-Type: application/json" \
  -d '{"company":"ashcompanies","searchQuery":"analyst","maxJobs":100}'
```

Apify CLI:

```bash
apify call scrapers_lat/jobvite-jobs-scraper \
  --input '{"company":"ashcompanies"}'
```

### Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing `format`:

```bash
## JSON
curl "https://api.apify.com/v2/datasets/%3CDATASET_ID%3E/items?token=%3CTOKEN%3E&clean=true&format=json"

## CSV
curl "https://api.apify.com/v2/datasets/%3CDATASET_ID%3E/items?token=%3CTOKEN%3E&clean=true&format=csv"

## Paginate large datasets
curl "https://api.apify.com/v2/datasets/%3CDATASET_ID%3E/items?token=%3CTOKEN%3E&offset=1000&limit=1000"
```

`<DATASET_ID>` is returned as `defaultDatasetId` in the run object. Use `offset` and `limit` to page through large result sets. `clean=true` drops empty and internal fields.

### Billing and limits

- **Pay per result.** You are charged per job record returned (`result` event). See the [pricing tab](https://apify.com/scrapers_lat/jobvite-jobs-scraper/pricing) for the current per-result price.
- **No charge on failure.** If a run errors, the actor writes a single item with a populated `error` field and does not charge for it. Empty runs cost nothing.
- **Spend cap respected.** Set `maxTotalChargeUsd` on the run; once reached, the actor stops emitting and charging further billable results.
- **Free Apify plans** are capped at 10 records per run, and the contact add-on is capped at 3 attempts. The AI and contact add-ons require a paid Apify plan. Upgrade for higher `maxJobs` and enrichment.

### FAQ and troubleshooting

**How do I find a company's Jobvite handle?**
It is the part after `jobs.jobvite.com/` in the career site URL, for example `ashcompanies` in `jobs.jobvite.com/ashcompanies`. You can paste the whole URL and the handle is detected for you.

**Why is `descriptionText` empty?**
It is only fetched when `withDetails` is enabled (on by default). Turn it off for a faster title, category and location only run.

**Does it include salary?**
When the employer publishes it in a structured field. Many Jobvite postings state pay only inside the description text, in which case `salaryMin`/`salaryMax` stay `null` and the value appears in `descriptionText`.

**A run returned 0 records. Why?**
The handle may be wrong or the site may have no open postings, or the `searchQuery` matched nothing. Zero-result runs are not charged.

**Are the add-ons free?**
No. The AI add-ons and the contact-enrichment add-on require a paid Apify plan. They are off by default; on free plans the contact add-on is capped at 3 attempts.

**Is this an official Jobvite tool?**
No. This actor is independent and has no affiliation with Jobvite. It only accesses publicly available job postings. Use the results in accordance with the source's terms.

### Related scrapers

- [JobScore Jobs Scraper](https://apify.com/scrapers_lat/jobscore-jobs-scraper): open roles from public JobScore company boards.
- [JobStreet SEA Jobs Scraper](https://apify.com/scrapers_lat/jobstreet-sea-jobs-scraper): jobs across Southeast Asia from JobStreet.
- [Jora Jobs Scraper](https://apify.com/scrapers_lat/jora-jobs-scraper): job listings aggregated on Jora.
- [Greenhouse Jobs Scraper](https://apify.com/scrapers_lat/greenhouse-jobs-scraper): open roles from Greenhouse boards.
- [Lever Jobs Scraper](https://apify.com/scrapers_lat/lever-jobs-scraper): open roles from Lever boards.
- [Indeed Jobs Scraper](https://apify.com/scrapers_lat/indeed-jobs-scraper): job listings from Indeed.

### More scrapers at scrapers.lat

Built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at [scrapers.lat](https://scrapers.lat).

***

> Independent tool, not affiliated with Jobvite. Accesses only publicly available job postings. Use the results in accordance with the source's terms.

# Actor input Schema

## `maxJobs` (type: `integer`):

Maximum number of jobs to collect. Optional.

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

The Jobvite career site to scrape. Enter the company handle (the part after jobs.jobvite.com/, for example 'ashcompanies') or paste the full career site URL.

## `withDetails` (type: `boolean`):

Open each posting to collect the full description, employment type, salary and dates. Turn off for a faster title, category and location only run.

## `searchQuery` (type: `string`):

Optional. Keep only jobs whose title, category, location or description contains this text (for example 'analyst', 'remote', 'nurse').

## `enrichContacts` (type: `boolean`):

Optional paid add-on, off by default. For each result without an email, attempt to find a public business contact email and a contact person's name. Billed per attempt, plus an extra charge only when an email is found.

## `enrichContactsMax` (type: `integer`):

Cap how many results the add-on tries to enrich, to control add-on cost. Leave empty to attempt all. Free Apify accounts are capped at 3.

## `withJdSummary` (type: `boolean`):

Optional paid add-on, off by default. Generate a concise plain-English summary of each job description. Requires a paid Apify plan. Billed per usable AI result.

## `withSkills` (type: `boolean`):

Optional paid add-on, off by default. Extract required skills, technologies and seniority level from each posting. Requires a paid Apify plan. Billed per usable AI result.

## `withSalaryEstimate` (type: `boolean`):

Optional paid add-on, off by default. Estimate market salary for postings that do not state one. Requires a paid Apify plan. Billed per usable AI result.

## Actor input object example

```json
{
  "maxJobs": 10,
  "company": "ashcompanies",
  "withDetails": true,
  "enrichContacts": false,
  "enrichContactsMax": 50,
  "withJdSummary": false,
  "withSkills": false,
  "withSalaryEstimate": false
}
```

# 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 = {
    "maxJobs": 10,
    "company": "ashcompanies"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/jobvite-jobs-scraper").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 = {
    "maxJobs": 10,
    "company": "ashcompanies",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/jobvite-jobs-scraper").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 '{
  "maxJobs": 10,
  "company": "ashcompanies"
}' |
apify call scrapers_lat/jobvite-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/CqKxCOJYO7mNl0rjL/builds/wHI9WAPm36gRPey9a/openapi.json
