US Education / K12 Jobs API
Pricing
from $0.80 / 1,000 job records
US Education / K12 Jobs API
Find US education and K-12 job postings by role, location, employer, salary, posting age, employment type, remote status, and seniority.
Pricing
from $0.80 / 1,000 job records
Rating
0.0
(0)
Developer
Aspen Technology Labs, Inc.
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
4 hours ago
Last modified
Categories
Features
Share
US Education (Including K-12) Jobs API - JobsIndex by Aspen Tech Labs
This Actor provides direct access to education job postings across the United States, including K-12. It currently covers 250,000+ active US education jobs, sourced directly from employer career sites and applicant tracking systems and updated daily.
The dataset covers the full US education employment landscape, from pre-K and childcare through K-12 schools to colleges and universities. It includes roles such as teachers, paraprofessionals, school counselors, school nurses, principals, professors, deans, academic advisors, and athletic directors. Because the underlying Education category is intentionally broad, results include both K-12 and higher-education jobs.
Use title, sub-category, employer, and structured location filters to narrow the dataset toward pre-K, primary, or secondary education use cases. K-12 role coverage includes teachers, teaching assistants, early-childhood teachers, special-education teachers, counselors, school nurses, paraprofessionals, custodians, school directors, and principals. Records include location, posting age, and salary information where disclosed by the employer.
Use the broad dataset for sector-wide labor market research, or narrow it for school-focused job backfill, staffing workflows, EdTech recruiting tools, and teacher supply-and-demand analysis. It is also suited to academic and policy research by universities, labor economists, and think tanks studying US education employment trends, teacher shortages, and regional pay gaps, and can serve as a live, structured complement to slower government sources such as BLS or state education reports.
Need More or Something Different?
If this Actor is working well for you, we'd love a review. For more data, custom feeds, feedback, or questions, reach out through our website or by email. You can also explore JobMarketPulse, our labor and job market intelligence platform.
Built-In Search Preset
This Actor always enforces country=United States and category=Education. User input cannot replace either preset.
Because the enforced country and category take precedence over where and what in the current JobsIndex API, those free-text inputs are intentionally not exposed. Use the structured job and location filters below to narrow results without replacing the preset.
Quick Start
{"title": "Teacher","region": "Texas","size": 5}
Input Parameters
| Parameter | Description | Example |
|---|---|---|
salary | Salary amount or range filter. | 50000y-90000y |
country | Fixed preset. Runtime always uses United States. | United States |
region | State or region. | Texas |
city | City filter. | Houston |
postal_code | ZIP code filter. | 77002 |
metro_area | Metropolitan area filter. | Houston-Pasadena-The Woodlands, TX |
title | Education job title. | Teacher |
company_name | School district or employer name. | Houston Independent School District |
company_domain | Employer website domain. | houstonisd.org |
category | Fixed preset. Runtime always uses Education. | Education |
sub_category | More specific education role group. | Teacher |
industry | Employer industry. | Education |
posted | Relative posting age or ISO date. | 1w |
employment_type | Employment type. | Full-Time |
remote | Work arrangement: remote, on-site, or hybrid. | on-site |
seniority | Seniority level. | Entry Level |
page | Page number, starting from 0. | 0 |
size | Results per page, from 1 to 100. | 5 |
Location Filtering
The country is fixed to the United States. Narrow results with region, city, postal_code, and metro_area.
Salary Filter Format
Use NUMBER[UNIT] or NUMBER[UNIT]-NUMBER[UNIT]. Supported units are h, d, w, m, and y.
Examples: 25h-40h, 50000y-90000y.
Limits and Pagination
This Actor uses the JobsIndex jobs API. Results are paginated with page and size.
| Parameter | Default | Min | Max |
|---|---|---|---|
page | 0 | 0 | Depends on size and the item cap |
size | 5 | 1 | 100 |
Individual numeric bounds are checked before a run starts. Query-dependent pagination is checked after the run starts, as explained below.
One Run, One Page
Each run requests one page, not all available pages. size is the requested number of jobs for that page, with an absolute maximum of 100. Company filters can reduce the effective page size to 5 or 20; see Item Caps below.
For searches without company filters, the retrieval window is 1000 jobs: page * size must be less than 1000. The page number is zero-based.
size | Valid page range | First page outside the window |
|---|---|---|
| 100 | 0-9 | 10 |
| 20 | 0-49 | 50 |
| 10 | 0-99 | 100 |
| 1 | 0-999 | 1000 |
The last page can contain fewer jobs than requested. For example, page=12, size=80 starts at job 960 and can return up to 40 jobs. Narrow the search with filters to retrieve a different result set beyond the window; the Actor does not change the requested page or paginate automatically.
The input schema checks page and size individually. It cannot pre-validate their combination: page=10, size=100 passes the individual bounds but is rejected after a run starts, so the run can still finish as FAILED.
Item Caps
The maximum number of retrievable jobs depends on the query shape:
| Query shape | Max items | Effective max size | Over-size behavior |
|---|---|---|---|
| No company filter | 1000 | 100 | Validation error; not silently capped |
| Company filter plus another keyword or filter | 20 | 20 | Silent cap with capping metadata |
| Company filter only | 5 | 5 | Silent cap with capping metadata |
A company filter means company_name or company_domain. Another filter means a value in fields such as title, sub_category, industry, posted, salary, employment_type, remote, or seniority. The fixed country and category preset remains part of every request.
This Actor always applies the Education preset, so company-filtered requests normally use the 20-item company|keywords cap.
When capping applies, response metadata includes size_requested and size_capped_by: "company" for the 5-item cap or "company|keywords" for the 20-item cap. These fields are absent from uncapped responses.
No-company-filter requests are not silently capped. Requests beyond the 1000-item retrieval window can return 400 Item limit reached. Maximum of 1000 items can be retrieved.
Field Validation
Apify validates the input schema before creating a run, including requests made directly through the API. A schema violation returns HTTP 400 with error.type = invalid-input; no run is created. API clients should handle this response when starting the Actor; there is no run ID to poll or run error file to fetch.
| Input | Accepted values / limits |
|---|---|
page | Integer 0-999; the usable maximum also depends on size and query shape. |
size | Integer 1-100; company capping remains upstream. |
company_domain | A domain name only, e.g. example.com; 3-100 raw input characters. No protocol, path, port, or internal spaces. The API trims surrounding ASCII whitespace. |
posted | Recommended windows: 1d, 1w, 1m, 1y, or a real calendar date (YYYY, YYYY-MM, YYYY-MM-DD). Use 2-10 raw input characters. Surrounding ASCII whitespace is trimmed after the raw length check. Relative amounts use 1-4 digits without leading zeros. |
salary | 2-30 raw input characters. 1-9 digits plus h, d, w, m, or y; a range needs units on both ends, e.g. 20h-30h. Surrounding ASCII whitespace is trimmed. Decimals and currency prefixes are not accepted. |
employment_type | 2-50 raw input characters in total. Comma-separated values; 1-31 characters per item after trimming surrounding spaces. No empty items. |
seniority | 2-50 raw input characters in total. Comma-separated values; 1-31 characters per item after trimming surrounding spaces. No empty items. |
remote | remote, on-site, hybrid, or an empty string for no filter. |
| Other text fields | Raw input character ranges: region (2-80), city (2-100), postal_code (3-15), metro_area (2-100), title (2-200), company_name (2-150), sub_category (2-100), industry (2-100). Empty optional inputs remain allowed. |
Empty optional text fields are allowed and are omitted from the upstream request. Raw input length means the decoded string including surrounding whitespace, before API trimming, not URL-encoded bytes. The schema checks preliminary formats, list structure, and lengths, not whether a matching location, employer, role, or job exists. The API retains its detailed character checks, including permitted Unicode characters in list values. A valid search with no matching jobs succeeds with an empty dataset.
Query-dependent pagination, combined filters, and other backend-only checks remain upstream or runtime checks. If they reject a request after a run starts, the run can still finish as FAILED. Technical errors are not reported as successful searches.
Output
Each run stores job records in the default Apify dataset. The dataset schema includes an Overview table for the most useful fields and a Raw data (all fields) table for the complete JobsIndex record.
Example dataset item:
{"id": "example-education-job-id","title": "Teacher","title_raw": "High School Mathematics Teacher","company_name": "Example School District","company_domain": "example.com","category": "Education","sub_category": "Teacher","country": "United States","region": "Texas","city": "Houston","metro_area": "Houston-Pasadena-The Woodlands, TX","salary_value": "60000.00-78000.00","salary_currency": "USD","salary_unit": "YEAR","employment_type": "Full-Time","remote": "on-site","posted": "2026-08-01","url_source": "https://example.com/careers/mathematics-teacher","url_apply": "https://example.com/careers/mathematics-teacher/apply"}
Field availability depends on the source job posting.