# Higheredjobs Jobs Search Scraper (`stealth_mode/higheredjobs-jobs-search-scraper`) Actor

Scrape structured job listings from HigherEdJobs.com — the leading platform for academic and administrative positions in higher education. Extract titles, salaries, institutions, locations, and 20+ fields per listing for research, recruitment, and market analysis.

- **URL**: https://apify.com/stealth\_mode/higheredjobs-jobs-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## HigherEdJobs.com Scraper: Extract Higher Education Job Listings

---

### What Is HigherEdJobs.com?

HigherEdJobs.com is one of the most comprehensive job boards dedicated exclusively to higher education — covering faculty, administrative, executive, and staff positions at colleges and universities worldwide. For recruiters, researchers, and HR professionals tracking academic hiring trends, manually collecting this data is impractical at scale. The **HigherEdJobs.com Scraper** automates extraction from search result pages, delivering clean, structured records ready for analysis.

---

### Overview

The **HigherEdJobs Search Scraper** targets job search result pages and extracts all listed positions into structured datasets. Ideal for:

- **Academic recruiters** monitoring open roles by keyword, department, or institution type
- **HR analysts** benchmarking salaries and position types across institutions
- **Researchers** studying higher education labor market trends globally
- **Job aggregators** building or enriching academic job boards

The scraper supports bulk URL input, configurable item limits, and fault-tolerant runs via `ignore_url_failures`.

---

### Input Format

```json
{
  "urls": [
    "https://www.higheredjobs.com/search/advanced_action.cfm?OnlyTitle=0&Keyword=audit&Page=4"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 50
}
````

| Field | Type | Description |
|---|---|---|
| `urls` | Array of strings | One or more HigherEdJobs search result page URLs. Supports keyword filters, category filters, and pagination (e.g., `&Page=2`). Add URLs one by one or use bulk edit. |
| `ignore_url_failures` | Boolean | If `true`, the scraper skips failed URLs and continues the run rather than stopping. Recommended for bulk jobs. Default: `true`. |
| `max_items_per_url` | Integer | Maximum number of job listings to collect per URL. Default: `20`. Increase to `50`+ for full-page extraction. |

> **Tip:** Use HigherEdJobs' advanced search filters (keyword, category, institution type, remote) to build targeted URLs before pasting them into the scraper.

***

### Output Format

#### Sample Record

```json
{
  "inst_type": 1,
  "is_aa_email": null,
  "remote_type": 1,
  "is_military_upgrade": false,
  "department": "",
  "priority": false,
  "inst_city": "Colombia",
  "is_pool_position": false,
  "profile_id": null,
  "inst_name": "University of Missouri - St. Louis",
  "salary": "",
  "position_type": 1,
  "job_cat_codes": [
    18
  ],
  "job_code": 179446560,
  "job_cat_desc": "Business and Financial Services",
  "account_id": null,
  "date_posted": "2026-05-18T16:17:10.807Z",
  "inst_country_code": 226,
  "job_title": "Senior Auditor - Internal Audit",
  "inst_state_code": "MO",
  "from_url": "https://www.higheredjobs.com/search/advanced_action.cfm?OnlyTitle=0&Keyword=audit&Page=4"
}
```

Each job listing returns a record with the following fields:

#### Job Identification

| Field | Meaning |
|---|---|
| `Job Code` | Unique internal identifier for the job posting |
| `Profile ID` | Employer profile identifier linked to the posting |
| `Account ID` | Institution's account identifier on the platform |
| `Job Cat Codes` | Category code(s) classifying the role (e.g., faculty, administrative) |
| `Job Cat Desc` | Human-readable category description corresponding to `Job Cat Codes` |

#### Job Details

| Field | Meaning |
|---|---|
| `Job Title` | Full title of the position as listed |
| `Department` | Department or unit within the institution hiring for this role |
| `Position Type` | Classification such as full-time, part-time, or contract |
| `Salary` | Salary range or compensation info if provided by the employer |
| `Date Posted` | Date the listing was published on HigherEdJobs.com |
| `Remote Type` | Indicates remote work eligibility (e.g., fully remote, hybrid, on-site) |

#### Institution Details

| Field | Meaning |
|---|---|
| `Inst Name` | Full name of the hiring institution |
| `Inst Type` | Type of institution (e.g., 4-year university, community college, research institute) |
| `Inst City` | City where the institution is located |
| `Inst State Code` | State or province code (e.g., `CA`, `NY`) |
| `Inst Country Code` | ISO country code of the institution (supports international listings) |

#### Listing Flags

| Field | Meaning |
|---|---|
| `Priority` | Whether the listing has paid/priority placement in search results |
| `Is Pool Position` | If `true`, the role is an open applicant pool rather than a single-hire position |
| `Is AA Email` | Indicates whether an affirmative action contact email is included |
| `Is Military Upgrade` | Flags listings with military/veteran hiring preferences or upgrades |

***

### How to Use

1. **Build your search URL** — Use HigherEdJobs' [Advanced Search](https://www.higheredjobs.com/search/advanced_action.cfm) with your desired keyword, category, and filters. Copy the results page URL.
2. **Handle pagination** — For more results, increment `&Page=2`, `&Page=3`, etc. and add each as a separate URL entry.
3. **Configure input** — Paste URLs into the `urls` array. Set `max_items_per_url` to match the number of listings per page (typically 25–50).
4. **Run the scraper** — Start the actor and monitor logs.
5. **Export** — Download output as JSON, CSV, or Excel.

**Tips:**

- Combine multiple keyword searches (e.g., `Keyword=audit`, `Keyword=finance`) across separate URLs in one run.
- Set `ignore_url_failures: true` for uninterrupted bulk runs.
- Match `max_items_per_url` to the actual page size to avoid truncation.

***

### Use Cases & Business Value

- **Salary benchmarking:** Aggregate salary data across institution types, regions, and departments
- **Hiring trend analysis:** Track volume and velocity of academic job postings by keyword or category
- **Competitive intelligence:** Monitor which institutions are actively hiring in specific fields
- **Job board enrichment:** Pipe structured data into custom academic career platforms

The scraper eliminates manual copy-paste workflows, producing consistent datasets that plug directly into spreadsheets, databases, or BI dashboards.

***

### Conclusion

The **HigherEdJobs.com Scraper** gives recruiters, analysts, and researchers reliable, scalable access to higher education job data. With 20+ structured fields per listing and flexible search URL support, it turns HigherEdJobs' extensive catalog into actionable intelligence. Configure your search, run the scraper, and start analyzing in minutes.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Jobs list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.higheredjobs.com/search/advanced_action.cfm?OnlyTitle=0&Keyword=audit&Page=4"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.higheredjobs.com/search/advanced_action.cfm?OnlyTitle=0&Keyword=audit&Page=4"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/higheredjobs-jobs-search-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 = {
    "urls": ["https://www.higheredjobs.com/search/advanced_action.cfm?OnlyTitle=0&Keyword=audit&Page=4"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/higheredjobs-jobs-search-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.higheredjobs.com/search/advanced_action.cfm?OnlyTitle=0&Keyword=audit&Page=4"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/higheredjobs-jobs-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/higheredjobs-jobs-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Higheredjobs Jobs Search Scraper",
        "description": "Scrape structured job listings from HigherEdJobs.com — the leading platform for academic and administrative positions in higher education. Extract titles, salaries, institutions, locations, and 20+ fields per listing for research, recruitment, and market analysis.",
        "version": "0.0",
        "x-build-id": "0mzd7vVPHd8S0EpCz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~higheredjobs-jobs-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-higheredjobs-jobs-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~higheredjobs-jobs-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-higheredjobs-jobs-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~higheredjobs-jobs-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-higheredjobs-jobs-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the Jobs list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the Jobs list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
