EDJOIN Education Jobs Scraper
Pricing
from $0.90 / 1,000 results
EDJOIN Education Jobs Scraper
[💰 $0.9 / 1K] Extract K-12 school jobs from EDJOIN, the largest US education job board. Filter by keyword, location, state, category, 66 position types, employment type and posting date. Get title, district, city, county, salary range, deadline, full description and hiring contact email.
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Turn EDJOIN — the largest US K-12 education job board, with roughly 18,400 live school and district postings — into a clean, structured dataset. Every row carries the job title, hiring district, county, salary range, application deadline, the full job description and the district's named hiring contact with their email address. Built for education recruiters, K-12 staffing agencies, EdTech sales teams and workforce researchers who need current district hiring data without opening thousands of posting pages by hand.
Why This Scraper?
- The hiring contact's name and email on essentially every posting — full-detail runs return the district's actual hiring manager and a direct email address; across two separate 250-job runs both fields came back populated on 250 of 250 postings each time. That is the difference between a job list and a lead list.
- 66 position types, not just "teacher" — target exact roles such as Teacher - Special Education, School Psychologist, Language, Hearing and Speech, Food Service Staff, Transportation Staff or Elementary School Principal, and stack as many as you like in a single run.
- State filtering that genuinely filters — 22 states and territories that actually carry live EDJOIN postings, each resolved down to its individual counties, so "Oregon" returns Oregon districts instead of California districts that merely have "Oregon" in their name.
- The whole board, not the 30% EDJOIN's own links hand you — EDJOIN's shareable search links quietly restrict results to postings with no online application: roughly 5,400 jobs instead of 18,400. This actor collects both kinds by default, and only narrows when you deliberately ask it to.
- Salary on every single row, whether or not you turn on full details — structured pay range low and high, the pay unit (Annually, Per Hour, Monthly, Daily), free-text single-rate strings like
$3,106.20 / $3,452.36 (with Speech Language Certificate), and the district's own additional salary note. - Four staffing categories and five employment types — Certificated, Certificated Management, Classified and Classified Management, crossed with Full time, Part time, Temporary, Remote and Management.
- Complete job text, not a truncated teaser — the full description, the Requirements / Qualifications block, required credentials, required skills, length of work year (for example "185 Days + 2 Days New Teacher Orientation") and the district's EEO and additional-information section.
- Salary-schedule and benefits documents attached to each job — full-detail runs also collect the district's "Links Related To This Job" list, typically salary schedules, formal job descriptions and benefits PDFs, as titled links.
- Newest-first ordering with a visible cap — ask for the 500 freshest postings and get the 500 freshest, not an arbitrary slice of the board. Application deadlines come back on every row, so you always know what is still open.
Use Cases
Recruitment & Staffing
- Build district outreach lists for the credentials you place — special education, speech and language, school psychology, school nursing.
- Spot chronic understaffing by tracking which districts repeatedly re-post substitute and paraprofessional roles.
- Run a daily feed of brand-new openings and push them straight into your applicant tracking system.
- Reach the named hiring contact directly instead of routing through a generic district inbox.
EdTech & Vendor Sales Intelligence
- Find districts staffing up in Information Technology / Computer Services ahead of a procurement cycle.
- Watch for new Superintendent, Assistant Superintendent and Director-level hires — leadership turnover reliably precedes new vendor decisions.
- Segment target accounts by county, district and staffing category to prioritise territory coverage.
Compensation Benchmarking
- Compare annual pay ranges for the same position type across counties and districts.
- Separate hourly, daily, monthly and annual pay units before you average anything.
- Re-run the same search monthly and track how published salary schedules shift over a school year.
Labor-Market & Policy Research
- Measure teacher-shortage pressure by counting open certificated roles per county over time.
- Quantify the classified-versus-certificated hiring split across an entire state.
- Study how long postings stay open by comparing posting date against application deadline.
- Analyse summer-school and recruitment-centre hiring waves separately using the flags on each row.
Job Boards & Aggregators
- Power a K-12-focused job board with structured postings, full descriptions and district logos.
- De-duplicate cleanly across repeated runs using the stable posting ID on every row.
- Populate listing pages with street addresses, ZIP codes, employment types and closing dates.
Getting Started
In the Apify Console you pick State, Job Category and Position Types from dropdowns of
plain English names. If you write the input as JSON instead, those three fields take
EDJOIN's own short code for each option — "state": "24" is California. Every code is
listed in the Input Reference below, and each example here spells out what its codes mean.
Simple keyword search
{"searchKeyword": "special education teacher","maxResults": 100}
Fresh openings for specific roles in one state
{"state": "24","positionTypes": ["9", "65"],"postedWithinDays": 7,"sortBy": "desc","maxResults": 500}
California, limited to Teacher - Special Education and School Psychologist, posted in the last week, newest first.
Ready-made EDJOIN links
{"startUrls": ["https://www.edjoin.org/Home/Jobs?keywords=school%20psychologist","https://www.edjoin.org/Home/JobPosting/2258100"],"includeJobDetails": true,"maxResults": 200}
Mix full search pages and individual postings — results are merged and de-duplicated.
Everything dialled in
{"searchKeyword": "counselor","location": "Sacramento","state": "24","jobCategory": "1","positionTypes": ["16"],"employmentType": "Full","applicationType": "true","postedWithinDays": 30,"includeJobDetails": true,"sortBy": "desc","maxResults": 1000}
Counselor roles near Sacramento, California (24), certificated category (1), the
Counselor position type (16), full time, online applications only, posted in the last
month. Note that Application Type is a quoted string — "true", not true.
Input Reference
What to Collect
| Parameter | Type | Default | Description |
|---|---|---|---|
searchKeyword | string | "teacher" | Job title, keyword, or the name of a school district or county office (e.g. "school psychologist", "Mt. Diablo Unified"). Leave blank to collect everything matching your filters. |
location | string | "" | City, county or ZIP code to search near (e.g. "Sacramento", "94519"). Matched loosely, so a place name can also pull in districts with that word in their name. |
state | string | — | Restrict to a single state or territory. A dropdown of state names in the Console; in JSON, the state's code. All 22 options carry live postings: California 24, Washington 84, Michigan 46, Arizona 21, New York 57, Oregon 68, Kansas 38, Idaho 34, Nevada 52, Florida 30, Minnesota 47, Tennessee 78, Colorado 25, Maryland 44, New Jersey 55, District of Columbia 28, Hawaii 33, Indiana 36, North Carolina 59, North Dakota 60, Pennsylvania 70, Texas 79. |
startUrls | array | [] | Paste EDJOIN search links or links to individual job postings. Each is collected as its own task and results are merged and de-duplicated. Overrides the keyword, location, state and filter fields. maxResults applies to the whole run, so the first links can use up the budget before later ones start. A link to a single posting returns that page's own fields; a search link additionally carries position type, category, county and the structured pay range. |
Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
jobCategory | string | — | EDJOIN's top-level staffing category. In JSON, its code: Certificated 1, Certificated Management 2, Classified 3, Classified Management 4. Leave blank for all four. |
positionTypes | array | — | Pick any number of the 66 specific position types, from Teacher - Kindergarten through Superintendent, Custodial / Facilities / Maintenance and Confidential Employee. Ticked by name in the Console; in JSON, a list of codes — for example Teacher - K-6 48, Teacher - Special Education 9, Counselor 16, School Psychologist 65, Teacher Assistant / Aide / Paraprofessional 23, Custodial / Facilities / Maintenance 26. The full 66 are in the Console dropdown. Leave empty for every type. |
employmentType | string | — | Full (full time), Part, Temporary, Remote, or Management. Remote is genuinely rare on a school-jobs board. |
applicationType | string | — | "true" for online application only, "false" for no online application — quoted strings, not booleans. Leave blank to collect both, which is the widest result set; roughly three quarters of EDJOIN jobs accept online applications. |
postedWithinDays | integer | 0 | Only jobs posted in the last N days — 1 for the past 24 hours, 7 for a week, 31 for a month. 0 includes postings of any age. |
Output Detail
| Parameter | Type | Default | Description |
|---|---|---|---|
includeJobDetails | boolean | true | Open each posting to collect the full description, requirements, required credentials and skills, length of work year, street address, ZIP, number of openings, district logo, related documents and the hiring contact's name and email. Turn off for a faster, lighter run that keeps the results-list summary. |
Sorting & Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
sortBy | string | "desc" | Newest first or Oldest first. Newest first is the right choice whenever you also set a maximum. |
maxResults | integer | 100 | Cap on jobs collected. Set to 0 to collect every job matching your search. Results arrive in pages and the run always keeps the whole page it is on, so you may receive a few extra results beyond your limit. Duplicates are removed, so a search whose pages overlap can also finish a few short of the cap. Any number from 10 to 1,000 comes back exactly; EDJOIN's smallest page is 10 jobs, so a cap below 10 still returns 10. The cap covers the whole run, not each Start URL. |
Output
One row per job posting. Fields marked below as detail fields are filled in when includeJobDetails is on.
{"postingId": 2258100,"url": "https://www.edjoin.org/Home/JobPosting/2258100","title": "School Psychologist (2026-27 School Year)","jobType": "School Psychologist","jobTypeId": 65,"jobCategory": "Certificated","categoryId": 1,"employmentType": "Full Time","numberOpenings": 2,"onlineApplication": true,"isSummerSchool": false,"isRecruitmentCenter": false,"districtName": "Mt. Diablo Unified School District","districtLogo": "https://edjoinprodstoragewest.blob.core.windows.net/customerlogos/logo1320.png","employerUrl": "https://www.edjoin.org/mdusd","streetAddress": "1936 Carlotta Drive","city": "Concord","countyName": "Contra Costa","countyId": 7,"fullCountyName": "Contra Costa County, CA","state": "California","stateId": 24,"zip": "94519","salary": "$66,925.60 - $123,398.70 Annually","salaryType": "Pay Range","payRangeFrom": 66925.6,"payRangeTo": 123398.7,"payRangeUnit": "Annually","salaryInfo": "Placement on the salary schedule is based on verified prior experience.","datePosted": "2026-07-24T00:00:00+00:00","applicationDeadline": "2026-08-22T00:00:00+00:00","createdAt": "2026-07-24T09:12:00+00:00","scrapedAt": "2026-07-31T14:02:11+00:00","jobSummary": "Provide psychological services to students across three elementary sites.","description": "Under the direction of the Director of Special Education, the School Psychologist conducts assessments, participates in IEP teams...","requirements": "Valid California Pupil Personnel Services Credential with School Psychology authorization. Three letters of recommendation dated within the last 12 months.","educationRequirements": "Master's degree in School Psychology or a closely related field","requiredSkills": "Psychoeducational assessment, IEP development, crisis response, bilingual Spanish preferred","workHours": "185 Days + 2 Days New Teacher Orientation","commentsAndOtherInformation": "The District is an equal opportunity employer and does not discriminate on the basis of race, color, national origin...","contactName": "Jennifer Alvarez","contactEmail": "jalvarez@mdusd.org","relatedLinks": [{ "title": "Certificated Salary Schedule 2026-27", "url": "https://www.edjoin.org/.../salary-schedule.pdf" },{ "title": "Job Description", "url": "https://www.edjoin.org/.../school-psychologist.pdf" }]}
Core Job Fields
| Field | Type | Description |
|---|---|---|
postingId | integer | EDJOIN posting ID — stable de-duplication key across runs |
url | string | Direct link to the posting on EDJOIN |
title | string | Position title as advertised by the district |
jobType | string | Position type label, e.g. "Teacher - K-6", "School Psychologist" |
jobTypeId | integer | Numeric position type ID |
jobCategory | string | Certificated, Certificated Management, Classified, or Classified Management |
categoryId | integer | Numeric staffing category ID |
employmentType | string | e.g. "Full Time", "Part Time, Remote" |
numberOpenings | integer | Number of positions on this posting (detail) |
onlineApplication | boolean | Whether the district accepts an EDJOIN online application |
isSummerSchool | boolean | Flagged as a summer-school position |
isRecruitmentCenter | boolean | Posted through an EDJOIN recruitment centre |
Employer & Location
| Field | Type | Description |
|---|---|---|
districtName | string | Hiring school district or county office of education |
districtLogo | string | District logo image URL (detail) |
employerUrl | string | The district's own EDJOIN listings page (detail) |
streetAddress | string | Street address of the work site (detail) |
city | string | City |
countyName | string | County name |
countyId | integer | Numeric county ID |
fullCountyName | string | e.g. "Contra Costa County, CA" |
state | string | Full state name, e.g. "California" |
stateId | integer | Numeric state ID |
zip | string | ZIP code (detail) |
Compensation
| Field | Type | Description |
|---|---|---|
salary | string | Ready-to-display summary, e.g. "$66,925.60 - $123,398.70 Annually" |
salaryType | string | "Pay Range" or "Single Rate" |
payRangeFrom | number | Numeric bottom of the pay range |
payRangeTo | number | Numeric top of the pay range |
payRangeUnit | string | Annually, Per Hour, Monthly, Daily |
singleRate | string | Flat-rate text when the district posts one rate rather than a range |
singleRateUnit | string | Unit that applies to the flat rate |
salaryInfo | string | District's free-text note on placement, stipends and differentials |
Dates
| Field | Type | Description |
|---|---|---|
datePosted | string | When the district published the posting (ISO 8601) |
applicationDeadline | string | Closing date for applications (ISO 8601) |
createdAt | string | When the record was created on EDJOIN (ISO 8601) |
scrapedAt | string | When this row was collected (ISO 8601) |
Job Detail & Contact
| Field | Type | Description |
|---|---|---|
jobSummary | string | District-written summary of the role (detail) |
description | string | Full job description and essential duties (detail) |
requirements | string | Requirements / Qualifications — credentials, documents and experience (detail) |
educationRequirements | string | Degree or credential required, where the district states one (detail) |
requiredSkills | string | Skills and competencies listed on the posting (detail) |
workHours | string | Length of work year, e.g. "185 Days + 2 Days New Teacher Orientation" (detail) |
commentsAndOtherInformation | string | EEO statement and additional district information (detail) |
contactName | string | Named hiring contact at the district (detail) |
contactEmail | string | Hiring contact's email address (detail) |
relatedLinks | array | Titled links attached to the job — salary schedules, job descriptions, benefits documents (detail) |
Tips for Best Results
- Leave Application Type blank unless you truly need one kind. EDJOIN's own shareable links restrict results to postings with no online application, which drops roughly 70% of the board. Blank is the widest and usually the right answer.
- Use State rather than Location for anything geographic. Location is a loose text match, so
"Washington"will surface California districts named "Washington Unified". State resolves to real counties and filters properly. - Pair Newest first with a maximum for monitoring runs.
postedWithinDays: 1plussortBy: "desc"and a modest cap gives you a clean daily delta feed instead of re-collecting the whole board. - Turn off full job details when you only need a market snapshot. Salary range, district, county, employment type, posting date and application deadline all come from the results list, so a details-off run is much faster — and still fully priced-out for compensation analysis.
- Turn full job details on whenever you want contacts. The hiring contact's name and email live only on the posting page, alongside the full description, credentials and salary-schedule links. This single switch is what turns a job feed into an outreach list.
- Watch the pay unit before you compare numbers. Classified roles are frequently posted Per Hour or Monthly while certificated roles are Annually — normalise on
payRangeUnitfirst, and note thatsingleRateis descriptive text (it can carry conditions like "with Speech Language Certificate"), not a plain number. - Split very large sweeps by state, county or category. EDJOIN will not serve past roughly 100,000 results within one search, and narrower searches also cost less because filtering happens before results are returned.
- De-duplicate on
postingId. Districts occasionally re-post the same role under a new title, and posting ID is the only field guaranteed stable across runs.
Pricing
From $0.90 per 1,000 results — cheaper than the alternatives on the store, with far more filtering and the hiring contact included. Bronze, Silver and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.105 | $0.100 | $0.095 | $0.090 |
| 1,000 | $1.05 | $1.00 | $0.95 | $0.90 |
| 10,000 | $10.50 | $10.00 | $9.50 | $9.00 |
| 100,000 | $105.00 | $100.00 | $95.00 | $90.00 |
A result is one job posting — one row in your dataset. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee. Standard Apify platform fees apply on top.
Integrations
Export data in JSON, CSV, Excel, XML or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n — Workflow automation, straight into your CRM or ATS
- Google Sheets — Direct spreadsheet export for compensation tracking
- Slack / Email — Notifications when new postings match your search
- Webhooks — Trigger your own systems the moment a run finishes
- Apify API — Full programmatic access and scheduling
Legal & Ethical Use
This actor collects publicly available job postings that EDJOIN publishes for candidates to read. Use the data responsibly and in line with EDJOIN's terms of service.
Hiring contact names and email addresses are published by school districts specifically so that applicants and interested parties can reach them. If you use these details for outreach, you remain responsible for complying with applicable anti-spam, marketing and data-protection laws in your jurisdiction — including CAN-SPAM, GDPR and CCPA where they apply — and for honouring opt-out requests. Do not use the data to harass individuals or to misrepresent an affiliation with any district. You are responsible for how you use the data you collect.