HigherEdJobs Scraper: Faculty, Staff & Admin Jobs avatar

HigherEdJobs Scraper: Faculty, Staff & Admin Jobs

Pricing

from $1.00 / 1,000 actor starts

Go to Apify Store
HigherEdJobs Scraper: Faculty, Staff & Admin Jobs

HigherEdJobs Scraper: Faculty, Staff & Admin Jobs

Scrape HigherEdJobs.com listings for faculty, administrative and staff roles at US universities and colleges. Returns title, institution, location, salary, category, badges and, with details on, the full description, apply URL, employer website, requisition id and rank.

Pricing

from $1.00 / 1,000 actor starts

Rating

0.0

(0)

Developer

NanoScrape

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

HigherEdJobs Scraper: Faculty, Staff and Administrative Jobs in US Higher Education

Extract job listings from HigherEdJobs.com, the largest US higher-education job board. Faculty, administrative, executive and staff roles at universities, colleges and community colleges, returned as structured data. No login and no browser needed.

What data can you extract?

Every job includes:

  • Position: title, category, position type (Full-Time, Adjunct/Part-Time), employment type, department, detected academic rank, tenure-track flag, credentials required (PhD, MD, JD, EdD, Master's and more)
  • Institution: name, location (city, state, country), remote flag, institution website, HigherEdJobs institution profile URL
  • Pay and timing: salary text (trimmed to the pay sentence) with parsed min, max and period (see Salary below), posted date and time, application deadline (deadline_at as a YYYY-MM-DD date when the posting gives a future date, deadline_text with the raw text, deadline_open_until_filled)
  • Listing badges: Military-friendly, Inclusive Workplace, Dual Career, Priority
  • With includeJobDetails: full description (text and HTML), final apply URL, the institution's own requisition id, industry tags
  • Meta: search query, results page, scrape time, job URL

Most fields appear twice: the original name and a canonical name (institution_name and company_name, job_url and source_url, application_url and apply_url, posted_at and posted_at_datetime).

Salary fields

Only dollar-prefixed amounts are parsed, and 45K means 45,000. salary_period is annual, monthly or hourly. It comes from the pay text (hour, month, year, annual); when no period is named and every amount is 15,000 or more, it is annual. Smaller amounts with no period leave it null. Non-standard pay (per semester, per course, per credit hour, per load, per week or day) keeps the amount in salary_text, leaves salary_min and salary_max null and puts the unit in salary_period_raw (semester, course, credit, ...). salary_period_raw also keeps the older vocabulary (year, month, hour) for standard periods.

Dates, remote and institution type

  • Search result pages show only a relative posted date ("Posted 3 days ago"), so posted_at_datetime is date-only (midnight UTC) until the detail page adds the exact time (includeJobDetails).
  • remote_option is onsite, hybrid or remote. Postings with no remote or hybrid signal are onsite, because the site files them under Location Bound.
  • institution_type is exact when you use the institutionType filter. Otherwise it is inferred from the institution name and is null when unclear, because the site does not print it on job pages.
  • industry is one constant tag set by the site, dual_career is a rare badge and priority is a paid upgrade shown on a small share of jobs. Treat them as informational.

Pricing

Pay per event, no subscription:

  • Start: $0.001 per run
  • Search result: $0.003 per job returned
  • Detail result: $0.005 per job where the description was parsed (only when includeJobDetails is on)
  • Institution details: $0.005 per unique institution (only when includeCompanyDetails is on)

Example: 100 jobs without details cost $0.301 ($0.001 + $0.30). With details, 100 jobs cost $0.80 ($0.001 + $0.30 + $0.50). You are only charged for jobs that were written to your dataset.

Input

{
"searchQueries": ["assistant professor computer science"],
"sortBy": "newest",
"maxResultsPerQuery": 20,
"includeJobDetails": true,
"location": "California",
"category": "faculty",
"institutionType": "four_year"
}
FieldNotes
searchQueriesKeywords. Each runs as its own search. Defaults to professor when empty.
searchUrlsHigherEdJobs search result URLs. Pagination is added for you.
directUrlsSingle details.cfm?JobCode= job URLs.
companyUrlsInstitution pages (InstitutionProfile.cfm?ProfileID=N). Returns that institution's jobs plus company_about, company_social_urls and company_profile_url.
startUrlsAlias. Any mix of the three URL kinds, routed by URL shape.
postedWithinDaysKeep jobs posted in the last N days. The site has no date filter, so it is applied to the posted date and, with sortBy: newest, paging stops early.
positionTypeany, full_time, adjunct_part_time (site filter).
remoteOnlyOnly Online/Remote positions (site filter).
titleOnlyKeyword must match the job title (site filter).
maxResultsPerQueryJobs per keyword or URL. Default 20.
maxResultsTotal cap. Empty or 0 means per-query cap times the number of queries.
sortBynewest (default), priority, institution, location, title, category.
includeJobDetailsFetch each detail page. Default on.
includeCompanyDetailsFetch each institution profile once and add company_website, company_about, company_careers_url, company_headquarters, company_social_urls. Default off.
locationState name or code, or City, ST (for example Boston, MA).
categoryany, faculty, administrative, executive, staff.
institutionTypeany, four_year, two_year, k12, other.
maxJobsPerCompanyCap per institution. Default 25.
maxConcurrencyDetail pages fetched in parallel. Default 10, maximum 20.

Institution details are read from the most recent archived copy of the institution profile page (the live profile pages sit behind a bot check that cannot be passed without a full browser), so mission text and links can be a few months old. Job rows are never delayed by this: company enrichment is time-boxed, jobs are always delivered, and an institution is only billed when its profile was read.

Sample output

{
"job_id": "179572646",
"title": "Lab Technician (Temp) - Genetics, Molecular and Cellular Biology",
"institution_name": "Kennesaw State University",
"location": "Kennesaw, GA",
"category": "Laboratory and Research",
"position_type": "Full-Time",
"posted_at": "Posted Today",
"posted_at_datetime": "2026-09-29T19:47:25Z",
"employer_job_id": "304188",
"company_website": "https://www.kennesaw.edu/",
"military_friendly": true,
"job_url": "https://www.higheredjobs.com/search/details.cfm?JobCode=179572646"
}

Use with AI agents (MCP)

Connect this actor to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

Configure the MCP server with this actor preconfigured at mcp.apify.com?tools=santamaria-automations/higheredjobs-scraper.

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

Example prompt: "Use higheredjobs-scraper to find the 30 newest assistant professor jobs in biology with salary and apply URL."

See the auto-generated API tab for language-specific examples (cURL, JS, Python, .NET, Ruby, PHP).

Tips

  • Raise maxResultsPerQuery for bigger pulls. The scraper pages until the cap is reached or results run out.
  • Postings often say "commensurate with experience" and list no salary, so salary fields are empty for many jobs.
  • Turn includeJobDetails off for a faster, cheaper listing-only pull.
  • Use company_website with the email scraper and contact extractor below to find hiring contacts.

Support

  • Questions or problems? Email contact@nanoscrape.com, we usually reply within 6 hours. You can also open a ticket in the Issues tab.
  • Need a field that is missing? Open a ticket with the field name and a HigherEdJobs URL that shows it.
  • Found a bug? Include the run URL so we can reproduce it.