# Idealist Scraper - Nonprofit & Social Impact Jobs | $3/1K (`santamaria-automations/idealist-scraper`) Actor

Extract nonprofit job listings from Idealist.org. Returns 43 fields: job title, organization, salary, description, location type (remote/onsite/hybrid), areas of focus, company details, contact details, posting date and more. Covers 10,000+ social impact positions. Pay-per-result: $3 per 1,000 jobs.

- **URL**: https://apify.com/santamaria-automations/idealist-scraper.md
- **Developed by:** [Ale](https://apify.com/santamaria-automations) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 5 total users, 3 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 job results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Idealist Scraper - Nonprofit Jobs & Social Impact Careers

Extract nonprofit and social impact job listings from [Idealist.org](https://www.idealist.org) -- the leading platform for nonprofit careers with 10,000+ active positions across program management, fundraising, advocacy, education, social work, and more. Get structured data including salaries, apply URLs, application deadlines, organization contact info, and location details. Check if specific job URLs are still active. Optionally enrich with company website, description, address, phone, email, and more. No code needed.

---

### What data can you extract?

Every job listing includes up to 43 structured fields:

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Unique job identifier |
| `title` | string | Job title |
| `company` | string | Organization name |
| `company_logo_url` | string | Organization logo URL |
| `company_profile_url` | string | Organization profile URL on Idealist |
| `company_id` | string | Organization unique ID |
| `company_website` | string | Organization website (enriched) |
| `company_description` | string | Organization about text (enriched) |
| `company_address` | string | Organization location, e.g. "San Rafael, CA, USA" (enriched) |
| `company_phone` | string | Organization contact phone (enriched) |
| `company_email` | string | Organization contact email (enriched) |
| `company_joined` | string | When the org joined Idealist, e.g. "November 2007" (enriched) |
| `company_job_count` | integer | Number of current job postings (enriched) |
| `location` | string | Full location (city, state, country) |
| `city` | string | City name |
| `state` | string | State/province code |
| `country` | string | Country code (US, CA, GB, etc.) |
| `location_type` | string | remote, onsite, or hybrid |
| `remote_ok` | boolean | Whether remote work is available |
| `tags` | string[] | Job functions (e.g. Marketing, Fundraising) |
| `areas_of_focus` | string[] | Impact areas (e.g. Education, Environment) |
| `job_type` | string[] | Full-time, part-time, contract, internship |
| `org_type` | string | Nonprofit, social enterprise, government, etc. |
| `professional_level` | string | Entry, professional, managerial, director, VP |
| `education` | string | Education requirement |
| `description_full` | string | Full job description (plain text) |
| `contact_email` | string | Email extracted from job description |
| `contact_phone` | string | Phone number extracted from job description |
| `contact_website` | string | Website extracted from job description |
| `apply_url` | string | Direct application link (external site) |
| `application_deadline` | string | Application deadline, e.g. "May 17, 2026" |
| `salary_min` | number | Minimum salary |
| `salary_max` | number | Maximum salary |
| `salary_currency` | string | Currency code (USD, EUR, GBP, etc.) |
| `salary_period` | string | year, month, hour, or week |
| `salary_text` | string | Formatted salary range (e.g. $50k - $65k/year) |
| `salary_notes` | string | Salary notes or benefits (e.g. "5% 401k match, insurance" or "Range starts at $115K, dependent upon experience") |
| `is_active` | boolean | Whether the job is still online (jobUrls mode only) |
| `posted_at` | string | Posting date (ISO 8601) |
| `source_url` | string | Direct link to job on Idealist |
| `source_platform` | string | Always "idealist.org" |
| `search_query` | string | Which search query or URL found the job |
| `scraped_at` | string | Scrape timestamp (ISO 8601) |

Fields marked **(enriched)** require `includeCompanyInfo: true`.

---

### Pricing

**$3 per 1,000 jobs** -- simple, predictable pricing.

| What | Price |
|------|-------|
| Actor start | **$0.001** |
| Per result | **$0.003** |

| Example | Cost |
|---------|------|
| 10 jobs | **$0.03** |
| 100 jobs | **$0.30** |
| 1,000 jobs | **$3.00** |

Every job includes the full description, salary, apply URL, deadline, and organization info. No hidden fees, no monthly subscription.

---

### Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client -- Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

**Apify MCP server URL:**

````

https://mcp.apify.com?tools=santamaria-automations/idealist-scraper

````

**Example prompts once connected:**

> "Use `idealist-scraper` to find nonprofit marketing jobs. Return the top 20 results as a table with title, organization, salary, and location."

> "Use `idealist-scraper` to extract remote nonprofit jobs in education with company info enabled. Show organization website and description."

---

### How to use

The scraper supports three input modes:

#### 1. Search URLs (recommended)

Go to [idealist.org/en/jobs](https://www.idealist.org/en/jobs), set up your filters, and paste the URL. **All filters are preserved automatically**, including keyword, location type, areas of focus, job type, org type, professional level, education, salary filter, and sort order.

```json
{
  "searchUrls": [
    "https://www.idealist.org/en/jobs?q=fundraising&locationType=REMOTE",
    "https://www.idealist.org/en/jobs?q=fund&areasOfFocus=CHILDREN_YOUTH&areasOfFocus=CLIMATE_CHANGE&hasSalary=true&jobType=FULL_TIME&locationType=ONSITE&locationType=REMOTE&orgType=NONPROFIT&professionalLevel=PROFESSIONAL&professionalLevel=ENTRY_LEVEL"
  ],
  "maxResults": 100
}
````

Supported URL parameters: `q` (keyword), `locationType` (REMOTE, ONSITE, HYBRID -- multi-select), `areasOfFocus`, `jobType`, `orgType`, `professionalLevel`, `education`, `hasSalary`, `sort`.

#### 2. Search Keywords

Enter one or more keywords. The scraper searches Idealist and returns matching jobs.

```json
{
  "searchQueries": ["social worker", "fundraising", "program manager"],
  "maxResultsPerQuery": 50
}
```

#### 3. Job URLs (alive check)

Paste individual job page URLs to check if they are still online. Returns `is_active: true` with full job data for active listings, or `is_active: false` for expired/removed jobs. Can be combined with searchUrls and searchQueries in the same run.

```json
{
  "jobUrls": [
    "https://www.idealist.org/en/nonprofit-job/cea6e1d37cb9431d8d51b0f5a98a584d-fundraising-operations-associate-inaturalist-san-rafael",
    "https://www.idealist.org/en/nonprofit-job/46a205ece33146c8acdd2e882e039960-staff-accountant-inaturalist-san-rafael"
  ],
  "includeCompanyInfo": true
}
```

#### 4. Company enrichment

Enable `includeCompanyInfo` to fetch each organization's profile page and extract their website, about text, address, phone, email, joined date, and current job count. Works with all input modes. Each unique company is fetched only once (deduplicated).

```json
{
  "searchQueries": ["program manager"],
  "maxResults": 50,
  "includeCompanyInfo": true,
  "maxConcurrency": 10
}
```

***

### Input reference

| Field | Type | Description |
|-------|------|-------------|
| `searchUrls` | string\[] | Pre-filtered search URLs from [idealist.org](https://www.idealist.org/en/jobs). All URL filters preserved. |
| `searchQueries` | string\[] | One or more search keywords. |
| `jobUrls` | string\[] | Individual job page URLs for alive checks. When provided, search modes are skipped. |
| `maxResultsPerQuery` | integer | Max results per keyword/URL (default 100). |
| `maxResults` | integer | Total cap across all search modes (default 10, 0 = unlimited). |
| `includeCompanyInfo` | boolean | Fetch organization profile pages for website, description, address, phone, email, joined date, and job count (default false). |
| `maxConcurrency` | integer | Parallel fetches for job details and company profiles (default 5, max 20). |
| `proxyConfiguration` | object | Proxy settings. Datacenter proxies work great. |

***

### Output example

```json
{
  "id": "cea6e1d37cb9431d8d51b0f5a98a584d",
  "title": "Fundraising Operations Associate",
  "company": "iNaturalist",
  "company_logo_url": "https://cdn.filestackcontent.com/i7laGiBgTAifQ3kt3Fl7",
  "company_profile_url": "https://www.idealist.org/en/nonprofit/fd7875cd-inaturalist-san-rafael",
  "company_id": "fd7875cd4cb041bcb6058ea0a8df406f",
  "company_website": "https://www.inaturalist.org",
  "company_description": "iNaturalist is one of the world's largest biodiversity platforms...",
  "company_address": "San Rafael, CA, USA",
  "company_phone": "4153206269",
  "company_email": "careers@inaturalist.org",
  "company_joined": "February 2024",
  "company_job_count": 2,
  "location": "US",
  "city": null,
  "state": null,
  "country": "US",
  "location_type": "remote",
  "remote_ok": true,
  "tags": ["Administrative", "Database Administration", "Development/Fundraising", "Operations"],
  "areas_of_focus": ["ANIMALS", "ENVIRONMENT", "SCIENCE_TECHNOLOGY"],
  "job_type": ["FULL_TIME"],
  "org_type": "NONPROFIT",
  "professional_level": "PROFESSIONAL",
  "education": "FOUR_YEAR_DEGREE",
  "description_full": "Join the expanding iNaturalist Fundraising Department in a new role...",
  "contact_email": "adrienne@inaturalist.org",
  "contact_phone": null,
  "contact_website": null,
  "apply_url": "https://app.beapplied.com/apply/kz6suueljc",
  "application_deadline": "May 17, 2026",
  "salary_min": 70310,
  "salary_max": 70310,
  "salary_currency": "USD",
  "salary_period": "year",
  "salary_text": "$70.3k - $70.3k/year",
  "salary_notes": "5% 401k match, insurance, FSA, HRA, generous vacation & leave",
  "is_active": null,
  "posted_at": "2026-04-28T16:57:23Z",
  "source_url": "https://www.idealist.org/en/nonprofit-job/cea6e1d37cb9431d8d51b0f5a98a584d-fundraising-operations-associate-inaturalist-san-rafael",
  "source_platform": "idealist.org",
  "search_query": "inaturalist",
  "scraped_at": "2026-05-08T07:54:15Z"
}
```

***

### Use cases

- **Nonprofit recruitment monitoring** -- track open positions across thousands of organizations
- **Social impact career research** -- analyze salary trends, required skills, and hiring patterns
- **Job freshness monitoring** -- use jobUrls mode to check if tracked positions are still active
- **Grant and program monitoring** -- identify organizations expanding programs by job postings
- **Competitor analysis** -- benchmark compensation and roles across the nonprofit sector
- **Workforce analytics** -- map nonprofit hiring by geography, focus area, and organization type
- **Lead generation** -- identify growing nonprofits hiring for roles you can support

***

### Speed

| Jobs | ~Time | Memory |
|------|-------|--------|
| 10 | **~5 seconds** | ~16 MB |
| 100 | **~20 seconds** | ~16 MB |
| 1,000 | **~3 minutes** | ~20 MB |
| 100 + company info | **~25 seconds** | ~20 MB |
| 10 alive checks | **~3 seconds** | ~16 MB |

Each job's detail page is fetched for apply URL, deadline, and benefits. Company profile fetches are parallelized and deduplicated.

***

### Integrations

This actor works with all Apify integrations:

- **API** -- trigger runs and download results programmatically
- **Webhooks** -- get notified when a run completes
- **Zapier & Make** -- connect to 5,000+ apps
- **Google Sheets** -- export directly to a spreadsheet
- **Slack, Email** -- get notifications with results

***

### Related actors

- [Indeed Scraper](https://apify.com/santamaria-automations/indeed-scraper) -- 60+ countries, salary & company enrichment
- [LinkedIn Jobs Scraper](https://apify.com/santamaria-automations/linkedin-jobs-scraper) -- LinkedIn job listings
- [RemoteOK Scraper](https://apify.com/nanoscrape/remoteok-scraper) -- Remote job listings
- [Welcome to the Jungle Scraper](https://apify.com/santamaria-automations/welcome-to-the-jungle-scraper) -- European tech jobs

***

Something not working? [Create an issue](https://console.apify.com/actors/HoSyIUUy4scgo3L7P/issues) and we'll fix it fast.

# Actor input Schema

## `searchUrls` (type: `array`):

Paste one or more Idealist search URLs. Go to idealist.org/en/jobs, set your filters (keyword, location, remote/onsite, job type, salary, org type, education, professional level), and copy the URL. All filters are preserved automatically.

## `searchQueries` (type: `array`):

One or more search keywords (e.g. 'fundraising', 'social worker', 'program manager'). Each runs as a separate search. Results are deduplicated across queries.

## `jobUrls` (type: `array`):

Paste individual job page URLs to check if they are still active. Returns is\_active (true/false) with full job data for active listings. Can be combined with searchUrls and searchQueries.

## `maxResultsPerQuery` (type: `integer`):

Maximum results per search URL or keyword.

## `maxResults` (type: `integer`):

Total cap across all queries and search URLs. Set to 0 for unlimited.

## `includeCompanyInfo` (type: `boolean`):

Fetch each organization's profile page and extract website, description, address, phone, email, joined date, and current job count. Adds ~1 second per unique company.

## `maxConcurrency` (type: `integer`):

Maximum number of parallel fetches for job detail pages and company profiles.

## `proxyConfiguration` (type: `object`):

Proxy configuration. Default uses Apify datacenter proxies.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.idealist.org/en/jobs"
  ],
  "maxResultsPerQuery": 100,
  "maxResults": 10,
  "includeCompanyInfo": false,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}
```

# Actor output Schema

## `jobListings` (type: `string`):

Dataset containing scraped nonprofit job listings with structured fields per record, optionally enriched with company profile data.

# 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 = {
    "searchUrls": [
        "https://www.idealist.org/en/jobs"
    ],
    "maxResultsPerQuery": 100,
    "maxResults": 10,
    "maxConcurrency": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("santamaria-automations/idealist-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 = {
    "searchUrls": ["https://www.idealist.org/en/jobs"],
    "maxResultsPerQuery": 100,
    "maxResults": 10,
    "maxConcurrency": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("santamaria-automations/idealist-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 '{
  "searchUrls": [
    "https://www.idealist.org/en/jobs"
  ],
  "maxResultsPerQuery": 100,
  "maxResults": 10,
  "maxConcurrency": 5
}' |
apify call santamaria-automations/idealist-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Idealist Scraper - Nonprofit & Social Impact Jobs | $3/1K",
        "description": "Extract nonprofit job listings from Idealist.org. Returns 43 fields: job title, organization, salary, description, location type (remote/onsite/hybrid), areas of focus, company details, contact details, posting date and more. Covers 10,000+ social impact positions. Pay-per-result: $3 per 1,000 jobs.",
        "version": "1.0",
        "x-build-id": "z8Fdim8oK8O2XyurS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/santamaria-automations~idealist-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-santamaria-automations-idealist-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/santamaria-automations~idealist-scraper/runs": {
            "post": {
                "operationId": "runs-sync-santamaria-automations-idealist-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/santamaria-automations~idealist-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-santamaria-automations-idealist-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",
                "properties": {
                    "searchUrls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "Paste one or more Idealist search URLs. Go to idealist.org/en/jobs, set your filters (keyword, location, remote/onsite, job type, salary, org type, education, professional level), and copy the URL. All filters are preserved automatically.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQueries": {
                        "title": "Search Keywords",
                        "type": "array",
                        "description": "One or more search keywords (e.g. 'fundraising', 'social worker', 'program manager'). Each runs as a separate search. Results are deduplicated across queries.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "jobUrls": {
                        "title": "Job URLs (Alive Check)",
                        "type": "array",
                        "description": "Paste individual job page URLs to check if they are still active. Returns is_active (true/false) with full job data for active listings. Can be combined with searchUrls and searchQueries.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResultsPerQuery": {
                        "title": "Max Results per Query",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum results per search URL or keyword.",
                        "default": 100
                    },
                    "maxResults": {
                        "title": "Max Total Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Total cap across all queries and search URLs. Set to 0 for unlimited.",
                        "default": 10
                    },
                    "includeCompanyInfo": {
                        "title": "Include Company Info",
                        "type": "boolean",
                        "description": "Fetch each organization's profile page and extract website, description, address, phone, email, joined date, and current job count. Adds ~1 second per unique company.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of parallel fetches for job detail pages and company profiles.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy configuration. Default uses Apify datacenter proxies.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": []
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
