EdJoin Scraper
Pricing
from $3.00 / 1,000 results
EdJoin Scraper
Scrape K-12 education job postings from EdJoin.org - California's largest education jobs board - search by keyword, category, job type, employment type, or fetch exact postings by ID/URL.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Scrape K-12 education job postings from EdJoin.org — California's largest education jobs board, used by public school districts, county offices of education, and charter/private schools across California (and a small number of postings from other US states/Canadian provinces). Search by keyword, job category, job type/role, employment type, or fetch exact postings by ID or URL. Every job includes the full job summary, requirements/qualifications, required documents, contact details, and employer profile.
What this actor does
- Three modes:
search(keyword + filter search),byPostingIds(exact lookup by numeric posting ID),byUrls(exact lookup by job page URL) - Rich filters: job category (Certificated / Certificated Management / Classified / Classified Management), job type/role (66 specific roles), employment type (full/part time), state, specific school district (by numeric district ID), online-application availability, posted-within-days window, and sort order
- Full posting detail: complete job summary, requirements/qualifications, required application documents, number of openings, length of work year, employer description and logo, and hiring-contact name/email/phone
- Empty fields are omitted — every record only contains data that was actually found (district admins fill in these fields inconsistently, so the actor reports exactly what's published, nothing invented)
Output per job
| Field | Description |
|---|---|
postingId | Numeric EdJoin posting ID |
positionTitle | Job title |
districtName, districtUrl, districtLogoUrl | Hiring school district/organization |
city, state, countyName, zip | Location |
categoryId, categoryName | Top-level job category |
jobTypeId, jobType | Specific job type/role |
employmentType | Full Time / Part Time |
salaryInfo, payRangeFrom, payRangeTo, payRangePeriod, singleRate, singleRatePeriod | Salary as advertised |
numberOpenings | Number of open positions |
lengthOfWorkYear | Work-year schedule text |
jobSummary | Plain-text job definition/summary |
requirements | Plain-text requirements/qualifications |
requiredDocuments[] | Documents applicants must submit |
employerDescription | About-the-employer text |
contactName, contactEmail, contactPhone | Hiring contact |
onlineApp | Whether online application is available on EdJoin |
isSummerSchool | Summer-school flag |
postedDate, applicationDeadline, createdAt | Key dates (ISO 8601 UTC) |
postingUrl | Canonical job posting URL |
recordType | Always "job" |
scrapedAt | UTC scrape timestamp |
sourceUrl | Same as postingUrl |
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | select | search | search / byPostingIds / byUrls |
keywords | string | teacher | Free-text search query (mode=search) |
category | select | 0 (All) | Job category |
jobTypeIds | array (enum) | – | Filter by specific job type/role |
employmentType | select | – | Full / Part |
states | array (enum) | – | Filter by posting's state/province (client-side; see FAQ) |
counties | array (enum) | – | Filter by posting's California county, e.g. Los Angeles, San Diego, Alameda (client-side; see FAQ) |
districtId | integer | – | Filter to one specific school district by its numeric EdJoin district ID (server-side) |
onlineAppsOnly | boolean | false | Only postings that accept online applications |
postedWithinDays | select | 0 (any time) | 1 / 3 / 7 / 14 / 30 days |
sortBy | select | postingDate | postingDate / positionTitle / districtName |
sortOrder | select | desc | asc / desc |
postingIds | array | – | Numeric posting IDs (mode=byPostingIds) |
startUrls | array | – | Job page URLs (mode=byUrls) |
fetchFullDetails | boolean | true | Fetch each posting's detail page for the richer field set above |
maxItems | integer | 50 | Maximum number of jobs to return (1–2000) |
Example: California teaching vacancies, posted this week
{"mode": "search","keywords": "teacher","category": "1","postedWithinDays": "7","sortBy": "postingDate","maxItems": 50}
Example: fetch specific postings by ID
{"mode": "byPostingIds","postingIds": [2260175, 2259549]}
Example: fetch specific postings by URL
{"mode": "byUrls","startUrls": [{ "url": "https://www.edjoin.org/Home/JobPosting/2260175" }]}
Use cases
- Education recruitment agencies monitoring new California teaching/classified vacancies by role
- Job aggregators syndicating California K-12 job postings
- Labour-market researchers tracking district hiring volume by job type/category
- District HR teams benchmarking postings, salaries, and openings against peer districts
FAQ
Does this require login or an API key? No. EdJoin.org job search and job postings are public; no account, cookies, or API key are needed.
What geography does this cover?
EdJoin.org is overwhelmingly California-focused — the vast majority of postings are from California school districts and county offices of education, with an occasional posting from another US state or Canadian province. The states and counties filters are applied client-side against each posting's own listed state/county (EdJoin's own state/region search parameters do not reliably filter server-side), so filtering to a non-California state will typically return few or no results — that reflects the real composition of the job board, not a bug in the actor.
Why do some jobs have fewer fields than others? EdJoin lets each school district fill in whichever detail-page sections it wants (job summary, requirements, required documents, etc. are all optional per posting). The actor reports exactly what each district published — it never fabricates a missing field.
How fresh is the data? Every run queries EdJoin.org's live job-search endpoint directly — there is no caching layer.
Why does fetchFullDetails matter?
The search-results endpoint only returns a compact summary (title, district, location, salary, dates). Enabling fetchFullDetails (on by default) fetches each job's detail page for the job summary, requirements, required documents, employer profile, and hiring contact — at the cost of one extra request per job.