EdJoin $1πŸ’° Education Jobs, Districts & School Hiring avatar

EdJoin $1πŸ’° Education Jobs, Districts & School Hiring

Pricing

from $1.00 / 1,000 results

Go to Apify Store
EdJoin $1πŸ’° Education Jobs, Districts & School Hiring

EdJoin $1πŸ’° Education Jobs, Districts & School Hiring

From $1/1K. Extract education job postings from EdJoin.org for K-12 and higher-ed hiring. Search by keyword, location, filters, or EdJoin URLs. Returns district, location, salary, openings, deadlines, requirements, descriptions, and optional contact/address details.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

AbotAPI

AbotAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

EdJoin Scraper

Extract education job postings from EdJoin (the K-12 and higher-education hiring board used by school districts and county offices). Search by keyword, location and filters, or paste EdJoin URLs. Every job comes back as a flat record with district, location, salary, openings, deadlines and (optionally) contact details, full address, requirements and descriptions.

Why this scraper

  • High throughput: up to 200 jobs per result page with about 35 fields each, plus optional per-job detail enrichment.
  • More fields than other EdJoin tools: structured salary range, county and state IDs, employer logo, district portal URL, plus full detail enrichment (contact name and email, street address, requirements, skills, descriptions, apply link).
  • Lowest cost tier by default: EdJoin serves fine over datacenter proxy, so you are not forced onto expensive residential bandwidth.
  • Two input modes: keyword + filter search, or paste search and job-posting URLs.
  • Real filters that narrow server-side: job type, category, state, online-application-only, posted-within-days, sort order.
  • Forward auto-pagination, de-duplication, per-record output (a stopped run keeps everything already fetched).
  • Resilient connection handling: automatic retry, exit-IP rotation, optional residential escalation with a request budget cap, and a backup pool failover.

Data you get

Sample shape: values are illustrative placeholders, not from a live posting.

FieldExample
id20000001
urlhttps://www.edjoin.org/Home/JobPosting/20000001
titleElementary Teacher, 1.0 FTE, 2026-2027
districtNameSample Unified School District
citySampleton
countyNameSample
countyFullNameSample County, CA
stateNameCalifornia
stateId24
zip90000
jobTypeTeacher - K-6
jobTypeId48
categoryNameCertificated
categoryId1
salaryInfoSee attached certificated salary schedule
payRangeFrom$60,000
payRangeTo$117,000
payRangeUnitAnnually
employmentTypeFull Time
numberOpenings2
onlineApptrue
datePosted2026-01-01T00:00:00.000Z
applicationDeadline2026-02-01T00:00:00.000Z
workYearLength2026-2027 School Year
contactNameJane Doe
contactEmailagent@example.com
streetAddress100 Sample Blvd.
postalCode90000-0000
addressRegionCalifornia
employerUrlhttps://www.edjoin.org/sample
employerLogohttps://edjoinprodstoragewest.blob.core.windows.net/customerlogos/logo000000000.png
educationRequirementsValid California Teaching Credential
skillsBA/BS plus subject-matter competence
descriptionSee attachment on original job posting
offsiteUrlhttps://www.example.com/apply
scrapedAt2026-01-01T00:00:00.000Z

Listing-only runs (fetchDetails off) still return about 35 fields. The detail-only fields (contactName, contactEmail, streetAddress, educationRequirements, experienceRequirements, skills, jobSummary, description, workYearLength, employerLogo, offsiteUrl, attachmentName) are filled when fetchDetails is on.

How to use

Basic keyword search:

{
"mode": "search",
"keywords": "teacher",
"maxPages": 2,
"fetchDetails": true
}

Search with filters (special-education teaching jobs that take an online application, posted in the last week):

{
"mode": "search",
"keywords": "special education",
"jobTypeIds": ["9"],
"onlineApplicationOnly": true,
"postedWithinDays": 7,
"maxPages": 3
}

Statewide classified jobs by category and state:

{
"mode": "search",
"keywords": "",
"categoryId": 2,
"stateId": 24,
"maxListings": 500
}

Paste URLs (search results and a single job posting):

{
"mode": "url",
"urls": [
"https://www.edjoin.org/Home/Jobs?keywords=principal&location=&searchType=all",
"https://www.edjoin.org/Home/JobPosting/2231157"
],
"fetchDetails": true
}

Input parameters

ParameterTypeDefaultDescription
modestringsearchsearch = keyword + filters; url = paste links
keywordsstringteacherJob title, keyword or organization (search mode)
locationstring(empty)Free-text location to narrow the search
jobTypeIdsarray(empty)Restrict to job-type numeric IDs (see jobTypeId in output)
categoryIdinteger(empty)1 Certificated, 2 Classified, 3 Management, 4 Other
stateIdinteger(empty)EdJoin state ID (24 = California)
onlineApplicationOnlybooleanfalseOnly jobs accepting an EdJoin online application
postedWithinDaysinteger0Only jobs posted within N days (0 = no limit)
sortBystringnewestnewest or oldest first
urlsarray(example)EdJoin search or job-posting URLs (url mode)
fetchDetailsbooleantrueFetch each job's detail page for the richer fields
maxListingsinteger20Primary cap on total jobs (0 = unlimited)
maxPagesinteger500Safety ceiling on pages per search (200 jobs each); leave at max and cap with maxListings
maxResidentialRequestsinteger0Cap on residential requests per run (0 = unlimited)
proxyobjectApify datacenterConnection. Datacenter is the cheapest and is enough

Output example

Sample shape: values are illustrative placeholders, not from a live posting.

{
"id": 20000001,
"url": "https://www.edjoin.org/Home/JobPosting/20000001",
"title": "Elementary Teacher, 1.0 FTE, 2026-2027",
"districtName": "Sample Unified School District",
"city": "Sampleton",
"countyName": "Sample",
"countyFullName": "Sample County, CA",
"stateName": "California",
"stateId": 24,
"zip": "90000",
"jobType": "Teacher - K-6",
"jobTypeId": 48,
"categoryName": "Certificated",
"categoryId": 1,
"salaryInfo": "See attached certificated salary schedule",
"payRangeFrom": "$60,000",
"payRangeTo": "$117,000",
"payRangeUnit": "Annually",
"employmentType": "Full Time",
"numberOpenings": 2,
"onlineApp": true,
"datePosted": "2026-01-01T00:00:00.000Z",
"applicationDeadline": "2026-02-01T00:00:00.000Z",
"workYearLength": "2026-2027 School Year",
"contactName": "Jane Doe",
"contactEmail": "agent@example.com",
"streetAddress": "100 Sample Blvd.",
"addressLocality": "Sampleton",
"addressRegion": "California",
"postalCode": "90000-0000",
"addressCountry": "US",
"employerName": "Sample Unified School District",
"employerUrl": "https://www.edjoin.org/sample",
"employerLogo": "https://edjoinprodstoragewest.blob.core.windows.net/customerlogos/logo000000000.png",
"educationRequirements": "Valid California Teaching Credential",
"experienceRequirements": "Online application required; incomplete applications are screened out.",
"skills": "BA/BS plus subject-matter competence",
"jobSummary": "Full job summary text appears here when fetchDetails is on.",
"description": "See attachment on original job posting",
"offsiteUrl": "https://www.example.com/apply",
"attachmentName": "Job-Description-00000000.pdf",
"searchQuery": "teacher",
"scrapedAt": "2026-01-01T00:00:00.000Z"
}

Plan requirement

Runs on any Apify plan. The default connection is Apify datacenter proxy, which EdJoin accepts and which is included on the free plan. Residential proxy is optional and only needed if you ever see rejections; it requires a paid plan (Starter or higher) and you can cap how many residential requests a run may use with maxResidentialRequests. A backup connection pool is used automatically if Apify proxy is unavailable.

Pricing is pay per result: there is no monthly rental. Detail enrichment is billed only for jobs whose detail page is actually fetched (fetchDetails on); listing-only runs are not charged that event.