# EdJoin $1💰 Education Jobs, Districts & School Hiring (`abotapi/edjoin-scraper`) Actor

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.

- **URL**: https://apify.com/abotapi/edjoin-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Jobs, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 80.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 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.

| Field | Example |
| --- | --- |
| 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. |
| postalCode | 90000-0000 |
| addressRegion | California |
| employerUrl | https://www.edjoin.org/sample |
| employerLogo | https://edjoinprodstoragewest.blob.core.windows.net/customerlogos/logo000000000.png |
| educationRequirements | Valid California Teaching Credential |
| skills | BA/BS plus subject-matter competence |
| description | See attachment on original job posting |
| offsiteUrl | https://www.example.com/apply |
| scrapedAt | 2026-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:

```json
{
  "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):

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

Statewide classified jobs by category and state:

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

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

```json
{
  "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

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| mode | string | search | search = keyword + filters; url = paste links |
| keywords | string | teacher | Job title, keyword or organization (search mode) |
| location | string | (empty) | Free-text location to narrow the search |
| jobTypeIds | array | (empty) | Restrict to job-type numeric IDs (see jobTypeId in output) |
| categoryId | integer | (empty) | 1 Certificated, 2 Classified, 3 Management, 4 Other |
| stateId | integer | (empty) | EdJoin state ID (24 = California) |
| onlineApplicationOnly | boolean | false | Only jobs accepting an EdJoin online application |
| postedWithinDays | integer | 0 | Only jobs posted within N days (0 = no limit) |
| sortBy | string | newest | newest or oldest first |
| urls | array | (example) | EdJoin search or job-posting URLs (url mode) |
| fetchDetails | boolean | true | Fetch each job's detail page for the richer fields |
| maxListings | integer | 20 | Primary cap on total jobs (0 = unlimited) |
| maxPages | integer | 500 | Safety ceiling on pages per search (200 jobs each); leave at max and cap with maxListings |
| maxResidentialRequests | integer | 0 | Cap on residential requests per run (0 = unlimited) |
| proxy | object | Apify datacenter | Connection. Datacenter is the cheapest and is enough |

### Output example

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

```json
{
  "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.

# Actor input Schema

## `mode` (type: `string`):

search = enter keyword, location and filters. url = paste EdJoin search or job-posting URLs.

## `keywords` (type: `string`):

Job title, keyword or organization to search for, e.g. 'teacher', 'principal', 'speech pathologist'. Leave empty to list everything.

## `location` (type: `string`):

Free-text location to narrow the search, e.g. 'Los Angeles', 'San Diego', a county or a ZIP. Leave empty for statewide / all.

## `jobTypeIds` (type: `array`):

Restrict to specific EdJoin job types by numeric ID (see the jobTypeId field in any output record). Example: 4 = Teacher - Middle Grades, 9 = Teacher - Special Education, 23 = Teacher Assistant / Aide. Multiple IDs are OR-combined.

## `categoryId` (type: `integer`):

Restrict to one EdJoin category by numeric ID (see categoryId in output). 1 = Certificated, 2 = Classified, 3 = Management, 4 = Other. Leave empty for all.

## `stateId` (type: `integer`):

Restrict to one state by EdJoin state ID (see stateId in output; 24 = California, which holds the vast majority of postings). Leave empty for all.

## `onlineApplicationOnly` (type: `boolean`):

ON: only return jobs that accept an EdJoin online application. OFF / unset: include all jobs.

## `postedWithinDays` (type: `integer`):

Only jobs posted within the last N days. 0 = no date limit.

## `sortBy` (type: `string`):

Order of results. Newest first is the EdJoin default.

## `urls` (type: `array`):

Paste EdJoin search URLs (https://www.edjoin.org/Home/Jobs?keywords=teacher\&location=\&searchType=all) or job-posting URLs (https://www.edjoin.org/Home/JobPosting/2231157). Multi-URL supported.

## `fetchDetails` (type: `boolean`):

ON: each job gets contact name + email, full street address, application deadline, length of work year, education + experience requirements, skills, job summary, full description, employer logo, offsite application link and attachment (one extra request per job). OFF: faster, listing-card fields only (still ~35 fields).

## `maxListings` (type: `integer`):

Primary limit: overall cap on jobs across all searches/URLs. The run stops as soon as this many jobs are collected. Set to 0 for unlimited (then Max pages becomes the ceiling).

## `maxPages` (type: `integer`):

Safety ceiling on how many result pages (up to 200 jobs each) to walk per search. Leave at the maximum and let Max jobs do the capping; only lower this if you specifically want to limit by pages instead of by job count.

## `proxy` (type: `object`):

Datacenter (the default) is the cheapest and is sufficient for EdJoin. Switch to Residential only if you see rejections.

## `maxResidentialRequests` (type: `integer`):

Hard cap on how many requests may use residential proxy in one run. When the cap is reached the run downgrades to the backup pool / datacenter so a flapping site cannot silently run up residential cost. Only relevant if you enable Residential proxy above.

## Actor input object example

```json
{
  "mode": "search",
  "keywords": "teacher",
  "onlineApplicationOnly": false,
  "postedWithinDays": 0,
  "sortBy": "newest",
  "urls": [
    "https://www.edjoin.org/Home/Jobs?keywords=teacher&location=&searchType=all"
  ],
  "fetchDetails": true,
  "maxListings": 20,
  "maxPages": 500,
  "proxy": {
    "useApifyProxy": true
  },
  "maxResidentialRequests": 0
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "search",
    "keywords": "teacher",
    "urls": [
        "https://www.edjoin.org/Home/Jobs?keywords=teacher&location=&searchType=all"
    ],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/edjoin-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "search",
    "keywords": "teacher",
    "urls": ["https://www.edjoin.org/Home/Jobs?keywords=teacher&location=&searchType=all"],
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/edjoin-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "keywords": "teacher",
  "urls": [
    "https://www.edjoin.org/Home/Jobs?keywords=teacher&location=&searchType=all"
  ],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call abotapi/edjoin-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EdJoin $1💰 Education Jobs, Districts & School Hiring",
        "description": "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.",
        "version": "1.0",
        "x-build-id": "0D0YrMPnCpNUitBM9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~edjoin-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-edjoin-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/abotapi~edjoin-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-edjoin-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/abotapi~edjoin-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-edjoin-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "search = enter keyword, location and filters. url = paste EdJoin search or job-posting URLs.",
                        "default": "search"
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "string",
                        "description": "Job title, keyword or organization to search for, e.g. 'teacher', 'principal', 'speech pathologist'. Leave empty to list everything."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Free-text location to narrow the search, e.g. 'Los Angeles', 'San Diego', a county or a ZIP. Leave empty for statewide / all."
                    },
                    "jobTypeIds": {
                        "title": "Job type IDs",
                        "type": "array",
                        "description": "Restrict to specific EdJoin job types by numeric ID (see the jobTypeId field in any output record). Example: 4 = Teacher - Middle Grades, 9 = Teacher - Special Education, 23 = Teacher Assistant / Aide. Multiple IDs are OR-combined.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "categoryId": {
                        "title": "Category ID",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Restrict to one EdJoin category by numeric ID (see categoryId in output). 1 = Certificated, 2 = Classified, 3 = Management, 4 = Other. Leave empty for all."
                    },
                    "stateId": {
                        "title": "State ID",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Restrict to one state by EdJoin state ID (see stateId in output; 24 = California, which holds the vast majority of postings). Leave empty for all."
                    },
                    "onlineApplicationOnly": {
                        "title": "Online application only",
                        "type": "boolean",
                        "description": "ON: only return jobs that accept an EdJoin online application. OFF / unset: include all jobs.",
                        "default": false
                    },
                    "postedWithinDays": {
                        "title": "Posted within (days)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only jobs posted within the last N days. 0 = no date limit.",
                        "default": 0
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "newest",
                            "oldest"
                        ],
                        "type": "string",
                        "description": "Order of results. Newest first is the EdJoin default.",
                        "default": "newest"
                    },
                    "urls": {
                        "title": "URLs",
                        "type": "array",
                        "description": "Paste EdJoin search URLs (https://www.edjoin.org/Home/Jobs?keywords=teacher&location=&searchType=all) or job-posting URLs (https://www.edjoin.org/Home/JobPosting/2231157). Multi-URL supported.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch full job details",
                        "type": "boolean",
                        "description": "ON: each job gets contact name + email, full street address, application deadline, length of work year, education + experience requirements, skills, job summary, full description, employer logo, offsite application link and attachment (one extra request per job). OFF: faster, listing-card fields only (still ~35 fields).",
                        "default": true
                    },
                    "maxListings": {
                        "title": "Max jobs (0 = unlimited)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Primary limit: overall cap on jobs across all searches/URLs. The run stops as soon as this many jobs are collected. Set to 0 for unlimited (then Max pages becomes the ceiling).",
                        "default": 20
                    },
                    "maxPages": {
                        "title": "Max pages per search (safety ceiling)",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Safety ceiling on how many result pages (up to 200 jobs each) to walk per search. Leave at the maximum and let Max jobs do the capping; only lower this if you specifically want to limit by pages instead of by job count.",
                        "default": 500
                    },
                    "proxy": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Datacenter (the default) is the cheapest and is sufficient for EdJoin. Switch to Residential only if you see rejections.",
                        "default": {
                            "useApifyProxy": true
                        }
                    },
                    "maxResidentialRequests": {
                        "title": "Residential request budget (0 = unlimited)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Hard cap on how many requests may use residential proxy in one run. When the cap is reached the run downgrades to the backup pool / datacenter so a flapping site cannot silently run up residential cost. Only relevant if you enable Residential proxy above.",
                        "default": 0
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
