# We Work Remotely Scraper – Remote Jobs, Keywords & URLs (`abotapi/we-work-remotely-jobs-scraper`) Actor

Extract current remote job listings from weworkremotely.com. Use keyword search or WWR feed, category, and remote-jobs URLs. Returns clean job rows with title, company, category, region, tags, salary text, description matches, and filtered structured output.

- **URL**: https://apify.com/abotapi/we-work-remotely-jobs-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Jobs, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.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

## We Work Remotely Jobs Scraper

Extract current remote job listings from We Work Remotely into clean dataset rows for recruiting, lead sourcing, market tracking, and job alert workflows.

The scraper supports two clear modes:

- Keyword search: search current listings by terms such as `python`, `designer`, `support`, `sales`, or `manager`.
- URL list: read specific We Work Remotely feed, category, or remote-jobs URLs.

### Why use it

- Two input modes with explicit mode selection.
- Category, region, date, salary, company website, apply link, and description-length filters.
- More than 60 fields when full descriptions are enabled.
- Normalized URLs, category slugs, job slugs, posting dates, expiry dates, salary hints, domains, section text, technologies, and seniority hints.
- Optional MCP connector export for Notion, Linear, Airtable, and Apify after the dataset is written.

### Input modes

#### Keyword search

Use keyword mode when you want matching jobs from current WWR listings.

`All categories` scans all supported WWR category feeds and deduplicates jobs by listing URL before applying your keyword and filters. This gives broader coverage than the main feed alone.

Supported category selectors:

| Category | Use for |
| --- | --- |
| All categories | Broad discovery across supported categories |
| Programming | General engineering roles |
| Front-End Programming | Front-end and UI engineering roles |
| Back-End Programming | Backend and server-side roles |
| Full-Stack Programming | Full-stack roles |
| Design | Product, UI, UX, and graphic design roles |
| Customer Support | Support and success roles |
| Sales and Marketing | Sales, growth, and marketing roles |
| Product | Product management and product operations roles |
| DevOps and Sysadmin | Infrastructure, platform, SRE, and operations roles |
| Management and Finance | Leadership, operations, finance, and admin roles |

#### URL list

Use URL mode when you already know the WWR source to read.

Accepted URL examples:

```text
https://weworkremotely.com/remote-jobs.rss
https://weworkremotely.com/categories/remote-programming-jobs
https://weworkremotely.com/categories/remote-design-jobs.rss
````

URL mode ignores keyword terms and category selectors. The URLs define the source set.

### Filters

Filters apply after the source listings are read and normalized.

| Input | What it does |
| --- | --- |
| `regions` | Keeps listings whose region contains one of your values, such as `Anywhere in the World`, `United States`, or `Europe`. |
| `postedWithinDays` | Keeps listings posted within the selected age window. |
| `requireSalary` | Keeps only rows where salary text was found. |
| `requireCompanyWebsite` | Keeps only rows with a company website URL. |
| `requireApplyUrl` | Keeps only rows with an apply URL value. |
| `minDescriptionLength` | Keeps rows whose cleaned description text is at least this long. |
| `includeDetails` | Adds full description HTML/text and parsed description sections. |
| `maxItems` | Maximum number of matching rows to save. It is a cap, not a guarantee. If the selected keyword and filters only match 11 current jobs, the dataset will contain 11 rows even when `maxItems` is 20. |

### Data You Get

Typical rows include these field groups:

| Group | Fields |
| --- | --- |
| Job identity | `jobId`, `jobSlug`, `rowType`, `title`, `rawTitle`, `companyName` |
| URLs | `url`, `canonicalUrl`, `listingDomain`, `applyUrl`, `applicationUrl`, `externalApplyUrl`, `applyUrlIsExternal`, `applyUrlDomain` |
| Company | `companyWebsiteUrl`, `companyWebsiteDomain`, `companyLogoUrl`, `headquarters` |
| Location | `region`, `regionSlug`, `locationText`, `country`, `state`, `isRemote`, `isWorldwide` |
| Category and role | `category`, `categorySlug`, `jobType`, `employmentType`, `seniorityLevel`, `skills`, `skillsRaw`, `skillsSource`, `skillsCount`, `technologies`, `tags` |
| Dates | `postedAt`, `postedAtText`, `postedAgeDays`, `expiresAt`, `expiresAtText`, `expiresInDays`, `isExpired`, `scrapedAt` |
| Salary | `salaryText`, `salaryMin`, `salaryMax`, `salaryCurrency`, `hasSalary` |
| Description | `descriptionText`, `descriptionHtml`, `descriptionLength`, `sectionHeadings`, `descriptionSections`, `aboutCompanyText`, `responsibilitiesText`, `requirementsText`, `benefitsText` |
| Source metadata | `sourceUrl`, `sourceType`, `searchKeyword`, `hasCompanyWebsite`, `externalLinks`, `externalLinkCount` |

### Field Notes

- `maxItems` limits saved matches; it does not create more jobs than the selected source and filters currently match.
- `skills` and `skillsRaw` come from the WWR feed when present. `skillsSource` marks those values as WWR-sourced.
- `technologies` and `seniorityLevel` are derived from the listing text to make filtering and post-processing easier.
- `applyUrl` is the WWR listing URL when WWR does not expose a separate external apply URL in the feed. Use `applyUrlIsExternal` and `externalApplyUrl` to distinguish this.
- `externalLinks` captures non-WWR links found in the description, including company URLs and application links when present.
- `descriptionSections`, `aboutCompanyText`, `responsibilitiesText`, `requirementsText`, and `benefitsText` are populated when `includeDetails` is enabled and the listing text has recognizable sections.

### Example Input

Keyword search across all categories:

```json
{
  "mode": "keyword",
  "searchTerms": ["python"],
  "categories": ["all"],
  "includeDetails": true,
  "maxItems": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  },
  "mcpConnectors": [],
  "maxNotifyListings": 50
}
```

URL list:

```json
{
  "mode": "url",
  "startUrls": [
    { "url": "https://weworkremotely.com/categories/remote-design-jobs" }
  ],
  "includeDetails": false,
  "maxItems": 10,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  },
  "mcpConnectors": []
}
```

### Example Output

```json
{
  "rowType": "job",
  "jobId": "ad0db063721b33ed",
  "jobSlug": "close-senior-software-engineer-backend-python-usa-only-100-remote-1",
  "title": "Senior Software Engineer - Backend/Python - USA Only (100% Remote)",
  "companyName": "Close",
  "category": "Back-End Programming",
  "region": "Anywhere in the World",
  "jobType": "Full-Time",
  "technologies": ["Python", "AWS", "PostgreSQL"],
  "seniorityLevel": "Senior",
  "postedAt": "2026-06-10T22:30:21Z",
  "expiresAt": "2026-07-10T22:30:21Z",
  "applyUrlIsExternal": false,
  "url": "https://weworkremotely.com/remote-jobs/close-senior-software-engineer-backend-python-usa-only-100-remote-1",
  "descriptionLength": 4200,
  "sourceType": "rss",
  "searchKeyword": "python"
}
```

### Export To Your Apps

MCP connector support is included. Select one or more authorized connectors in the `MCP connectors` input field to send a compact summary of saved jobs after the dataset is written.

Supported connector targets include Notion, Linear, Airtable, and Apify.

The connector export is separate from the dataset:

- Complete records stay in the Apify dataset.
- Connectors receive a compact text summary with key fields.
- `Max jobs to export per connector` limits how many saved rows are sent to each connector.
- For Notion, set `Notion parent page` to the page URL or page ID where new pages should be created.

If no connector is selected, the run only writes the dataset.

### Proxy

Apify Proxy is enabled by default with the standard pool. You can adjust the proxy field if your run environment needs a different route.

# Actor input Schema

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

Keyword search filters live WWR job feeds by search terms. URL list reads WWR feed, category, or remote-jobs URLs.

## `startUrls` (type: `array`):

Accepts WWR RSS feeds, category pages, category RSS feeds, and the main remote jobs page.

## `searchTerms` (type: `array`):

Search terms to match in current remote job listings.

## `categories` (type: `array`):

Restrict keyword search to selected WWR categories. Leave empty or choose All categories to scan all supported category feeds.

## `regions` (type: `array`):

Only keep listings whose region contains one of these values. Examples: Anywhere in the World, United States, Europe.

## `includeDetails` (type: `boolean`):

When enabled, each row includes full description HTML and cleaned description text.

## `maxItems` (type: `integer`):

Maximum number of matching job rows to save. The run can return fewer rows when the selected keywords and filters match fewer current listings.

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

Only keep jobs posted within this many days. Leave empty for no date filter.

## `requireSalary` (type: `boolean`):

Only keep rows where a salary hint was found in the listing text.

## `requireCompanyWebsite` (type: `boolean`):

Only keep rows with a company website URL.

## `requireApplyUrl` (type: `boolean`):

Only keep rows with an apply URL.

## `minDescriptionLength` (type: `integer`):

Only keep rows whose cleaned description text has at least this many characters.

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

Uses Apify Proxy by default with the standard datacenter pool. Adjust only if your run environment needs a different route.

## `mcpConnectors` (type: `array`):

Optionally send the scraped jobs into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → API & Integrations, then select it here. Notion gets a rich page-per-job export; other connectors receive a best-effort write/digest. Leave empty to skip — this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which job pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on how many jobs are written to each selected connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "keyword",
  "startUrls": [
    {
      "url": "https://weworkremotely.com/remote-jobs.rss"
    },
    {
      "url": "https://weworkremotely.com/categories/remote-programming-jobs"
    },
    {
      "url": "https://weworkremotely.com/categories/remote-design-jobs.rss"
    }
  ],
  "searchTerms": [
    "python"
  ],
  "categories": [
    "all"
  ],
  "includeDetails": true,
  "maxItems": 20,
  "requireSalary": false,
  "requireCompanyWebsite": false,
  "requireApplyUrl": false,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  },
  "maxNotifyListings": 50
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        {
            "url": "https://weworkremotely.com/remote-jobs.rss"
        },
        {
            "url": "https://weworkremotely.com/categories/remote-programming-jobs"
        },
        {
            "url": "https://weworkremotely.com/categories/remote-design-jobs.rss"
        }
    ],
    "searchTerms": [
        "python"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": []
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/we-work-remotely-jobs-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 = {
    "startUrls": [
        { "url": "https://weworkremotely.com/remote-jobs.rss" },
        { "url": "https://weworkremotely.com/categories/remote-programming-jobs" },
        { "url": "https://weworkremotely.com/categories/remote-design-jobs.rss" },
    ],
    "searchTerms": ["python"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": [],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/we-work-remotely-jobs-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 '{
  "startUrls": [
    {
      "url": "https://weworkremotely.com/remote-jobs.rss"
    },
    {
      "url": "https://weworkremotely.com/categories/remote-programming-jobs"
    },
    {
      "url": "https://weworkremotely.com/categories/remote-design-jobs.rss"
    }
  ],
  "searchTerms": [
    "python"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}' |
apify call abotapi/we-work-remotely-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "We Work Remotely Scraper – Remote Jobs, Keywords & URLs",
        "description": "Extract current remote job listings from weworkremotely.com. Use keyword search or WWR feed, category, and remote-jobs URLs. Returns clean job rows with title, company, category, region, tags, salary text, description matches, and filtered structured output.",
        "version": "0.1",
        "x-build-id": "rcwxFQQDQ6PZaj2fH"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~we-work-remotely-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-we-work-remotely-jobs-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~we-work-remotely-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-we-work-remotely-jobs-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~we-work-remotely-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-we-work-remotely-jobs-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": {
                    "mode": {
                        "title": "Input mode",
                        "enum": [
                            "keyword",
                            "url"
                        ],
                        "type": "string",
                        "description": "Keyword search filters live WWR job feeds by search terms. URL list reads WWR feed, category, or remote-jobs URLs.",
                        "default": "keyword"
                    },
                    "startUrls": {
                        "title": "We Work Remotely URLs",
                        "type": "array",
                        "description": "Accepts WWR RSS feeds, category pages, category RSS feeds, and the main remote jobs page.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "searchTerms": {
                        "title": "Keyword search terms",
                        "type": "array",
                        "description": "Search terms to match in current remote job listings.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "categories": {
                        "title": "Categories",
                        "type": "array",
                        "description": "Restrict keyword search to selected WWR categories. Leave empty or choose All categories to scan all supported category feeds.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "all",
                                "programming",
                                "front-end-programming",
                                "back-end-programming",
                                "full-stack-programming",
                                "design",
                                "customer-support",
                                "sales-and-marketing",
                                "product",
                                "devops-and-sysadmin",
                                "management-and-finance"
                            ],
                            "enumTitles": [
                                "All categories",
                                "Programming",
                                "Front-End Programming",
                                "Back-End Programming",
                                "Full-Stack Programming",
                                "Design",
                                "Customer Support",
                                "Sales and Marketing",
                                "Product",
                                "DevOps and Sysadmin",
                                "Management and Finance"
                            ]
                        },
                        "default": [
                            "all"
                        ]
                    },
                    "regions": {
                        "title": "Region filters",
                        "type": "array",
                        "description": "Only keep listings whose region contains one of these values. Examples: Anywhere in the World, United States, Europe.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeDetails": {
                        "title": "Include full description fields",
                        "type": "boolean",
                        "description": "When enabled, each row includes full description HTML and cleaned description text.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of matching job rows to save. The run can return fewer rows when the selected keywords and filters match fewer current listings.",
                        "default": 20
                    },
                    "postedWithinDays": {
                        "title": "Posted within days",
                        "minimum": 0,
                        "maximum": 3650,
                        "type": "integer",
                        "description": "Only keep jobs posted within this many days. Leave empty for no date filter."
                    },
                    "requireSalary": {
                        "title": "Require salary",
                        "type": "boolean",
                        "description": "Only keep rows where a salary hint was found in the listing text.",
                        "default": false
                    },
                    "requireCompanyWebsite": {
                        "title": "Require company website",
                        "type": "boolean",
                        "description": "Only keep rows with a company website URL.",
                        "default": false
                    },
                    "requireApplyUrl": {
                        "title": "Require apply URL",
                        "type": "boolean",
                        "description": "Only keep rows with an apply URL.",
                        "default": false
                    },
                    "minDescriptionLength": {
                        "title": "Minimum description length",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Only keep rows whose cleaned description text has at least this many characters."
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Uses Apify Proxy by default with the standard datacenter pool. Adjust only if your run environment needs a different route."
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send the scraped jobs into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → API & Integrations, then select it here. Notion gets a rich page-per-job export; other connectors receive a best-effort write/digest. Leave empty to skip — this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page",
                        "type": "string",
                        "description": "URL (or id) of the Notion page under which job pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max jobs to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on how many jobs are written to each selected connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
