# Wuzzuf Jobs Scraper (`solidcode/wuzzuf-scraper`) Actor

\[💰 $0.9 / 1K] Extract job postings from Wuzzuf, the leading job board for Egypt and the MENA region. Search by keyword and location, filter by career level, job type, workplace, and posting date — each result includes title, company, location, salary, skills, full description, and apply link.

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

## Pricing

from $0.90 / 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

## Wuzzuf Jobs Scraper

Pull live job postings from Wuzzuf — Egypt and the wider MENA region's leading job board — with the full job description, required skills, salary, company name and logo, and an ISO-8601 posting timestamp on every row. Search by keyword and location, narrow with five career-level and six job-type filters, or paste Wuzzuf search URLs to clone a filtered search you already built. Built for recruiters, talent-sourcing teams, and job-market analysts who need a clean, structured Wuzzuf dataset without copy-pasting postings one page at a time.

### Why This Scraper?

- **Full job description on every row — no second pass** — each posting arrives with both `descriptionHtml` and a clean `descriptionText`, plus the employer's required `skills` and `categories`, all from the single results page. No per-job follow-up fetch, no half-empty rows.
- **Five career-level filters** — Student/Internship, Entry Level, Experienced, Manager/Supervisor, and Senior Management, selectable in any combination.
- **Six employment-type filters** — Full Time, Part Time, Freelance/Project, Internship, Shift Based, and Volunteering.
- **Three workplace arrangements with a derived `isRemote` flag** — On-site, Remote, and Hybrid, plus a true/false `isRemote` boolean computed per job so you can split remote roles instantly.
- **Posting-window targeting for scheduled runs** — limit to the last 24 hours, last week, or last month — ideal for a daily or weekly run that picks up only the newest openings.
- **ISO-8601 timestamps, converted to UTC** — `postedAt` is normalized from Wuzzuf's local Cairo time to clean UTC, alongside a human-friendly `postedAtText` ("3 days ago").
- **Stable `jobId` on every posting** — Wuzzuf's own job identifier, so you can deduplicate, upsert, and track the same role across repeated runs.
- **Company name and logo captured** — `companyName` plus a `companyLogo` image URL for building branded candidate-facing lists or employer dashboards.
- **Paste-and-go Wuzzuf URLs** — build any filtered search on wuzzuf.net, paste the URL into `startUrls`, and the actor reproduces it exactly, pagination included.

### Use Cases

**Recruitment & Talent Sourcing**
- Build candidate-facing job feeds filtered to specific roles, cities, and seniority
- Track which companies are actively hiring for a given skill set
- Surface remote and hybrid openings across Egypt and MENA in one list
- Monitor newly posted roles daily and reach out before competitors do

**Job Market Research**
- Map hiring demand by category, city, and career level
- Track full-time vs. freelance vs. internship mix over time
- Measure how quickly listings appear and refresh using `postedAt`
- Compare on-site, remote, and hybrid adoption across industries

**Salary & Skills Benchmarking**
- Collect disclosed salary ranges where employers publish them
- Extract the required `skills` list to map in-demand competencies per role
- Compare skill requirements across career levels for the same job title
- Build category-level reports on what employers ask for

**Lead Generation for Recruiters & Vendors**
- Build lists of companies hiring in a target sector or city
- Identify employers posting high volumes of openings
- Pair `companyName` and `companyLogo` for outreach collateral
- Target firms hiring for roles your service or product supports

**Job-Seeker Aggregation**
- Power a niche job board with structured, deduplicated Wuzzuf listings
- Send keyword-based alerts on fresh postings within the last 24 hours
- Feed openings into a personal tracking sheet with direct apply links

### Getting Started

#### Search by Keyword

The simplest run — one keyword, default result cap:

```json
{
    "searchKeyword": "software engineer"
}
````

#### Keyword + Location + Filters

Narrow to entry-level, full-time roles in Cairo posted in the last week:

```json
{
    "searchKeyword": "accountant",
    "location": "Cairo",
    "careerLevel": ["entry_level"],
    "jobTypes": ["full_time"],
    "postedWithinDays": "within_1_week",
    "maxResults": 200
}
```

#### Remote Roles, Advanced

Remote and hybrid developer roles for experienced and manager levels:

```json
{
    "searchKeyword": "developer",
    "workplaceTypes": ["remote", "hybrid"],
    "careerLevel": ["experienced", "manager"],
    "jobTypes": ["full_time", "freelance"],
    "postedWithinDays": "within_1_month",
    "maxResults": 500
}
```

#### Clone a Search You Built on Wuzzuf

Apply filters on wuzzuf.net, copy the URL, and paste it:

```json
{
    "startUrls": ["https://wuzzuf.net/search/jobs/?q=data%20analyst&filters[city][0]=Giza"],
    "maxResults": 300
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchKeyword` | string | `"software engineer"` | Word or phrase matched across job title and description. Leave blank to collect all jobs matching the filters. |
| `startUrls` | array | `[]` | One or more Wuzzuf search-result URLs to scrape directly. When provided, these take priority over keyword and location. |
| `location` | string | `""` | Filter to an exact city name as it appears on Wuzzuf (e.g. `Cairo`, `Giza`, `Alexandria`). Must be the full English city name. Leave blank for any location. |

#### Filters

| Parameter | Type | Options | Description |
|-----------|------|---------|-------------|
| `careerLevel` | array | Student/Internship, Entry Level, Experienced, Manager/Supervisor, Senior Management | Only include jobs at these seniority levels. Empty = all. |
| `jobTypes` | array | Full Time, Part Time, Freelance/Project, Internship, Shift Based, Volunteering | Only include jobs of these employment types. Empty = all. |
| `workplaceTypes` | array | On-site, Remote, Hybrid | Only include jobs with these workplace arrangements. Empty = all. |
| `postedWithinDays` | string | Any time, Last 24 hours, Last week, Last month | Only include jobs posted within this time window. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Hard cap on total job rows returned. Set to `0` for no cap. The actor stops requesting new pages once the cap is hit but keeps the full last page. |

### Output

Each result is one job posting. Every row carries the full description, skills, and categories — there are no thin rows.

```json
{
    "title": "Senior Software Engineer",
    "companyName": "Example Tech",
    "companyLogo": "https://images.wuzzuf-data.net/files/company_logo/example-logo.png",
    "location": "Cairo, Egypt",
    "isRemote": false,
    "workplaceType": "On-site",
    "salary": "Confidential",
    "jobType": "Full Time",
    "careerLevel": "Experienced (Non-Manager)",
    "categories": ["IT/Software Development", "Engineering"],
    "skills": ["Python", "Django", "PostgreSQL", "REST APIs"],
    "postedAt": "2026-06-24T07:07:34+00:00",
    "postedAtText": "3 days ago",
    "descriptionHtml": "<p>We are looking for a Senior Software Engineer...</p>",
    "descriptionText": "We are looking for a Senior Software Engineer...",
    "url": "https://wuzzuf.net/jobs/p/example-senior-software-engineer",
    "jobId": "a1b2c3d4-...",
    "scrapedAt": "2026-06-27T13:01:55.501901+00:00"
}
```

#### Job Fields

| Field | Type | Description |
|-------|------|-------------|
| `title` | string | Job title as published. |
| `companyName` | string | Hiring company name (may be hidden for confidential listings). |
| `companyLogo` | string | URL of the company logo image, when available. |
| `location` | string | Job location (e.g. `Cairo, Egypt`). |
| `isRemote` | boolean | True when the role is remote-friendly. |
| `workplaceType` | string | Workplace arrangement: On-site, Remote, or Hybrid. |
| `salary` | string | Disclosed salary range, or `Confidential` when the employer hides it. |
| `jobType` | string | Employment type (Full Time, Part Time, Freelance/Project, etc.). |
| `careerLevel` | string | Seniority level required. |
| `categories` | array | Job categories/industries the posting belongs to. |
| `skills` | array | Skills the employer lists as required. |
| `postedAt` | string | Posting date/time in ISO 8601 UTC. |
| `postedAtText` | string | Friendly relative posting text ("3 days ago"). |
| `descriptionHtml` | string | Full job description with original HTML formatting. |
| `descriptionText` | string | Full job description as clean plain text. |
| `url` | string | Direct link to the job posting on Wuzzuf. |
| `jobId` | string | Wuzzuf's stable job identifier — use for deduplication. |
| `scrapedAt` | string | When the row was collected, in ISO 8601 UTC. |

### Tips for Best Results

- **Clone a filtered search instead of rebuilding it.** Apply every filter you want directly on wuzzuf.net, copy the resulting URL into `startUrls`, and the actor reproduces it exactly — handy for filters more specific than the dropdowns above.
- **Use `postedWithinDays` for scheduled runs.** Set it to `Last 24 hours` on a daily schedule (or `Last week` on a weekly one) so each run returns only fresh postings and you don't re-collect the same jobs.
- **Deduplicate on `jobId`, not `url`.** The `jobId` is Wuzzuf's stable identifier and is the reliable key for upserts across repeated runs.
- **Leave everything blank to collect the full current feed.** With no keyword and no filters, the actor walks the entire live listing set up to your `maxResults`.
- **Split remote roles with `isRemote`.** Filter the output on the `isRemote` boolean rather than parsing `workplaceType` text — it already accounts for remote-friendly hybrid roles.
- **Expect `Confidential` salaries.** Many Wuzzuf employers hide pay; rows where salary isn't published return `Confidential` rather than an empty value, so filter accordingly.
- **Set `maxResults` to `0` for a full sweep**, or keep a sensible cap for faster, cheaper sampling runs.

### Pricing

**From $0.90 per 1,000 results** — pay only for the jobs you collect, undercutting comparable Wuzzuf scrapers. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.11 | $0.10 | $0.10 | $0.09 |
| 1,000 | $1.05 | $1.00 | $0.95 | $0.90 |
| 10,000 | $10.50 | $10.00 | $9.50 | $9.00 |
| 100,000 | $105.00 | $100.00 | $95.00 | $90.00 |

A "result" is one job posting returned to your dataset. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available job-posting data for legitimate purposes such as recruitment, market research, and analytics. You are responsible for using the data in compliance with Wuzzuf's terms of service, applicable data-protection laws (including any handling of personal data contained in postings), and the intended, lawful purposes described above. Do not use collected data to spam, harass, or otherwise harm individuals or companies.

# Actor input Schema

## `searchKeyword` (type: `string`):

Word or phrase to match across job title and description (e.g. 'software engineer', 'accountant', 'sales'). Leave blank to collect all jobs matching the filters below.

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

Paste one or more Wuzzuf search-result URLs to scrape them directly (e.g. a search page you built on wuzzuf.net with your own filters applied). When provided, these take priority over the keyword and location above.

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

Filter to an exact city name as it appears on Wuzzuf (e.g. 'Cairo', 'Giza', 'Alexandria'). Must be the full English city name — partial text and governorate names are not matched. Leave blank for any location.

## `careerLevel` (type: `array`):

Only include jobs at these seniority levels. Leave empty to include all levels.

## `jobTypes` (type: `array`):

Only include jobs of these employment types. Leave empty to include all types.

## `workplaceTypes` (type: `array`):

Only include jobs with these workplace arrangements. Leave empty to include all.

## `postedWithinDays` (type: `string`):

Only include jobs posted within this time window. Great for daily or weekly scheduled runs that pick up just the newest postings. Wuzzuf supports three windows: last 24 hours, last week, and last month.

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

Hard cap on total job rows returned. Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper bound still applies to prevent runaway pagination). The actor stops requesting new pages once this number is hit but keeps the full last page even if it slightly overshoots.

## Actor input object example

```json
{
  "searchKeyword": "software engineer",
  "startUrls": [],
  "careerLevel": [],
  "jobTypes": [],
  "workplaceTypes": [],
  "postedWithinDays": "0",
  "maxResults": 100
}
```

# Actor output Schema

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

Table of jobs with the most useful fields — title, company, location, job type, posting date, and link.

## `details` (type: `string`):

Full per-job rows including salary, career level, skills, categories, and full 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 = {
    "searchKeyword": "software engineer",
    "startUrls": [],
    "location": "",
    "careerLevel": [],
    "jobTypes": [],
    "workplaceTypes": [],
    "postedWithinDays": "0",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/wuzzuf-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 = {
    "searchKeyword": "software engineer",
    "startUrls": [],
    "location": "",
    "careerLevel": [],
    "jobTypes": [],
    "workplaceTypes": [],
    "postedWithinDays": "0",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/wuzzuf-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 '{
  "searchKeyword": "software engineer",
  "startUrls": [],
  "location": "",
  "careerLevel": [],
  "jobTypes": [],
  "workplaceTypes": [],
  "postedWithinDays": "0",
  "maxResults": 100
}' |
apify call solidcode/wuzzuf-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Wuzzuf Jobs Scraper",
        "description": "[💰 $0.9 / 1K] Extract job postings from Wuzzuf, the leading job board for Egypt and the MENA region. Search by keyword and location, filter by career level, job type, workplace, and posting date — each result includes title, company, location, salary, skills, full description, and apply link.",
        "version": "1.0",
        "x-build-id": "TSpXHqOfnn6tbaF5k"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~wuzzuf-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-wuzzuf-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/solidcode~wuzzuf-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-wuzzuf-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/solidcode~wuzzuf-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-wuzzuf-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": {
                    "searchKeyword": {
                        "title": "Search Keyword",
                        "type": "string",
                        "description": "Word or phrase to match across job title and description (e.g. 'software engineer', 'accountant', 'sales'). Leave blank to collect all jobs matching the filters below."
                    },
                    "startUrls": {
                        "title": "Wuzzuf Search URLs",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Paste one or more Wuzzuf search-result URLs to scrape them directly (e.g. a search page you built on wuzzuf.net with your own filters applied). When provided, these take priority over the keyword and location above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Filter to an exact city name as it appears on Wuzzuf (e.g. 'Cairo', 'Giza', 'Alexandria'). Must be the full English city name — partial text and governorate names are not matched. Leave blank for any location."
                    },
                    "careerLevel": {
                        "title": "Career Level",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include jobs at these seniority levels. Leave empty to include all levels.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "student",
                                "entry_level",
                                "experienced",
                                "manager",
                                "senior_management"
                            ],
                            "enumTitles": [
                                "Student / Internship",
                                "Entry Level",
                                "Experienced (Non-Manager)",
                                "Manager / Supervisor",
                                "Senior Management (CEO, GM, Director)"
                            ]
                        },
                        "default": []
                    },
                    "jobTypes": {
                        "title": "Job Types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include jobs of these employment types. Leave empty to include all types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "full_time",
                                "part_time",
                                "freelance",
                                "internship",
                                "shift_based",
                                "volunteering"
                            ],
                            "enumTitles": [
                                "Full Time",
                                "Part Time",
                                "Freelance / Project",
                                "Internship",
                                "Shift Based",
                                "Volunteering"
                            ]
                        },
                        "default": []
                    },
                    "workplaceTypes": {
                        "title": "Workplace",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include jobs with these workplace arrangements. Leave empty to include all.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "on_site",
                                "remote",
                                "hybrid"
                            ],
                            "enumTitles": [
                                "On-site",
                                "Remote",
                                "Hybrid"
                            ]
                        },
                        "default": []
                    },
                    "postedWithinDays": {
                        "title": "Posted Within",
                        "enum": [
                            "0",
                            "within_24_hours",
                            "within_1_week",
                            "within_1_month"
                        ],
                        "type": "string",
                        "description": "Only include jobs posted within this time window. Great for daily or weekly scheduled runs that pick up just the newest postings. Wuzzuf supports three windows: last 24 hours, last week, and last month.",
                        "default": "0"
                    },
                    "maxResults": {
                        "title": "Maximum Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Hard cap on total job rows returned. Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper bound still applies to prevent runaway pagination). The actor stops requesting new pages once this number is hit but keeps the full last page even if it slightly overshoots.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
