# WhatClinic.com Clinic Scraper (`haketa/whatclinic-scraper`) Actor

Scrape clinic listings from WhatClinic.com — global healthcare directory with 120K+ clinics across 160+ countries. Extract name, reviews, prices, treatments, service scores and contact info by category, country and city.

- **URL**: https://apify.com/haketa/whatclinic-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Automation, Developer tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.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

## WhatClinic.com Clinic Scraper

Extract clinic listings from **[WhatClinic.com](https://www.whatclinic.com)** — the world's largest healthcare clinic directory with 120K+ listed clinics across 160+ countries. Covers hair transplant, cosmetic surgery, dental, eye surgery, fertility, physiotherapy and more.

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue)](https://apify.com)
[![No Browser](https://img.shields.io/badge/Engine-HTML%20%2B%20Cheerio-green)]()

---

### What It Does

Scrapes WhatClinic.com listing pages and optionally fetches individual clinic profiles. Returns structured JSON for each clinic including name, service score, reviews, prices, treatments, address and staff.

**Default run (prefill input):** Scrapes hair loss clinics in Turkey, completes in under 2 minutes, and produces a non-empty dataset.

---

### How It Works

WhatClinic uses server-side rendering — all listing data is in the HTML. This actor:

1. Fetches category × country listing pages via `got-scraping`
2. Parses clinic cards from the DOM using Cheerio
3. Extracts name, score, reviews, price, awards and profile URL
4. Paginates via `?page=2`, `?page=3` etc.
5. Optionally fetches each clinic's profile page for rich data (address, treatments, hours, staff)

No browser or Playwright needed — pure HTTP + HTML parsing.

---

### Input

#### Quick Start (Default)

The actor runs out of the box with no configuration:

```json
{
  "categories": ["hair-loss"],
  "countries": ["turkey"],
  "maxListings": 50,
  "maxPages": 5
}
````

#### Full Example

```json
{
  "categories": ["hair-loss", "dental", "cosmetic-surgery"],
  "countries": ["turkey", "thailand", "hungary"],
  "cities": [],
  "minServiceScore": 7.0,
  "scrapeDetails": true,
  "maxListings": 500,
  "maxPages": 20,
  "requestDelay": 1500,
  "maxConcurrency": 1
}
```

#### Parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `categories` | array | `["hair-loss"]` | Category slugs (see list below) |
| `countries` | array | `["turkey"]` | Country slugs |
| `cities` | array | `[]` | City paths (optional, narrows search) |
| `startUrls` | array | `[]` | Direct listing or profile URLs |
| `minServiceScore` | number | `0` | Minimum WhatClinic ServiceScore (0-10) |
| `scrapeDetails` | boolean | `false` | Fetch profile pages for rich data. **Set `true` for production.** |
| `maxListings` | integer | `50` | Total clinics cap (0 = unlimited) |
| `maxPages` | integer | `5` | Pages per search task |
| `proxyConfiguration` | object | Apify auto | Proxy settings |
| `requestDelay` | integer (ms) | `1000` | Delay between requests |
| `maxConcurrency` | integer | `1` | Parallel requests |

***

### Categories

| Slug | Category |
|---|---|
| `hair-loss` | Hair Loss / Hair Transplant |
| `cosmetic-surgery` | Cosmetic / Plastic Surgery |
| `dental` | Dental Treatments |
| `eye-surgery` | Eye Surgery / LASIK |
| `fertility` | Fertility / IVF |
| `physiotherapy` | Physiotherapy |
| `skin-care` | Skin Care / Dermatology |
| `weight-loss` | Weight Loss / Bariatric Surgery |

***

### Countries (Popular)

#### Medical Tourism Hubs

| Slug | Country | Top Categories |
|---|---|---|
| `turkey` | Turkey | Hair transplant, dental, cosmetic surgery |
| `thailand` | Thailand | Cosmetic surgery, dental |
| `hungary` | Hungary | Dental |
| `india` | India | Fertility, dental, eye surgery |
| `spain` | Spain | Fertility, dental |
| `mexico` | Mexico | Dental, cosmetic surgery, weight loss |
| `poland` | Poland | Dental |
| `czech-republic` | Czech Republic | Dental |
| `south-korea` | South Korea | Cosmetic surgery |
| `brazil` | Brazil | Cosmetic surgery |

#### Other Countries

| Slug | Country |
|---|---|
| `uk` | United Kingdom |
| `usa` | United States |
| `ireland` | Ireland |
| `uae` | United Arab Emirates |
| `germany` | Germany |
| `colombia` | Colombia |
| `costa-rica` | Costa Rica |
| `croatia` | Croatia |
| `egypt` | Egypt |
| `philippines` | Philippines |

***

### City Paths

City slugs follow WhatClinic's URL hierarchy. Examples:

| Country | City Path | City |
|---|---|---|
| Turkey | `istanbul-province/istanbul` | Istanbul |
| Turkey | `antalya-province/antalya` | Antalya |
| Turkey | `izmir-province/izmir` | Izmir |
| Thailand | `bangkok` | Bangkok |
| Hungary | `budapest` | Budapest |
| India | `mumbai` | Mumbai |
| India | `new-delhi` | New Delhi |
| Spain | `barcelona` | Barcelona |
| Mexico | `tijuana` | Tijuana |

***

### Output

#### Search Mode (`scrapeDetails: false`)

Fast extraction from listing cards:

```json
{
  "clinicName": "Vera Clinic",
  "profileUrl": "https://www.whatclinic.com/hair-loss/turkey/.../vera-clinic",
  "category": "Hair Loss",
  "country": "Turkey",
  "city": "Istanbul",
  "serviceScore": 7.6,
  "serviceScoreLabel": "Very Good",
  "reviewCount": 236,
  "priceFrom": "TL157772",
  "priceCurrency": "TRY",
  "priceNumeric": 157772,
  "awards": ["Customer Service Award 2025"],
  "searchCategory": "hair-loss",
  "searchCountry": "turkey",
  "scrapedAt": "2026-04-30T09:00:00Z"
}
```

#### Detail Mode (`scrapeDetails: true`)

Rich data from clinic profile pages:

```json
{
  "clinicName": "Vera Clinic",
  "profileUrl": "https://www.whatclinic.com/hair-loss/turkey/.../vera-clinic",
  "category": "Hair Loss",
  "country": "Turkey",
  "city": "Istanbul",
  "district": "Kartal",
  "address": "Kordonboyu, Turgut Özal Blv. No: 47, 34860 Kartal/İstanbul",
  "serviceScore": 7.6,
  "serviceScoreLabel": "Very Good",
  "reviewCount": 236,
  "averageRating": 4.8,
  "priceFrom": "TL157772",
  "treatments": ["FUE Hair Transplant", "DHI Hair Transplant", "Sapphire FUE"],
  "openingHours": {
    "monday": "08:00 - 21:00",
    "saturday": "08:00 - 21:00",
    "sunday": "Closed"
  },
  "staffNames": ["Dr. Ahmet Yildiz"],
  "awards": ["Customer Service Award 2025"],
  "description": "Vera Clinic is a leading hair transplant clinic...",
  "photos": ["https://..."],
  "scrapedAt": "2026-04-30T09:00:00Z"
}
```

***

### Key Fields

#### ServiceScore

WhatClinic's proprietary quality metric (0-10) based on patient feedback, response time and clinic engagement. Labels: Excellent (9+), Very Good (7-9), Good (5-7).

#### Price Data

Prices are parsed into structured format:

- `priceFrom` — original display text ("TL157772", "From €1,500")
- `priceCurrency` — detected currency (TRY, EUR, GBP, USD, THB, INR, HUF, PLN)
- `priceNumeric` — parsed numeric value for comparison

#### Awards

WhatClinic awards clinics for consistent quality: "Customer Service Award 2025", "Global Patients' Choice Award" etc.

***

### Modes

#### Search Mode (default, fast)

Set `scrapeDetails: false`. Extracts basic data from listing cards. ~50+ clinics per minute.

#### Detail Mode (rich data)

Set `scrapeDetails: true`. Fetches each clinic's profile page. ~3-5 clinics per minute. Returns full address, treatments, opening hours, staff and descriptions.

#### Direct URL Mode

Pass individual clinic profile URLs in `startUrls`:

```json
{
  "startUrls": [
    { "url": "https://www.whatclinic.com/hair-loss/turkey/istanbul-province/istanbul/kartal/vera-clinic" }
  ],
  "scrapeDetails": true
}
```

***

### Use Cases

- **Medical tourism agencies** — compare clinics by score, price and reviews across countries
- **Healthcare market research** — clinic density, pricing and category analysis by region
- **Digital marketing agencies** — lead lists for clinics, competitor analysis
- **Insurance companies** — accredited clinic directories for health tourism coverage
- **Price comparison tools** — treatment cost benchmarking across countries
- **Clinic operators** — competitive intelligence and market positioning

***

### Technical Notes

- **Architecture**: WhatClinic serves static HTML (server-side rendered). No browser needed.
- **Phone numbers**: Loaded via JavaScript — not available without browser rendering.
- **Rate limiting**: Moderate. Default delay of 1000ms is safe. Increase for high-volume runs.
- **Pagination**: ~15-20 clinics per page. Pages accessed via `?page=N`.

***

### Cost & Performance

| Mode | Speed | CU per 100 clinics |
|---|---|---|
| Search only (`scrapeDetails: false`) | ~50+/min | ~0.005 |
| With details (`scrapeDetails: true`) | ~3-5/min | ~0.03 |

***

### Changelog

| Version | Date | Notes |
|---|---|---|
| 1.0.0 | 2026-04-30 | Initial release — Cheerio extraction, 8 categories, multi-country, service score filter, detail page enrichment |

# Actor input Schema

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

Treatment categories to scrape. Options: 'hair-loss', 'cosmetic-surgery', 'dental', 'eye-surgery', 'fertility', 'physiotherapy', 'skin-care', 'weight-loss'. Leave empty for all.

## `countries` (type: `array`):

Country slugs to search. Examples: 'turkey', 'thailand', 'hungary', 'india', 'spain', 'mexico', 'uk', 'usa', 'brazil', 'poland'. See README for full list.

## `cities` (type: `array`):

City slugs to narrow search. Leave empty to search entire country. Format depends on URL structure. Examples for Turkey: 'istanbul-province/istanbul', 'antalya-province/antalya', 'izmir-province/izmir'.

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

Direct WhatClinic.com listing or profile URLs. Overrides category/country/city if provided.

## `minServiceScore` (type: `number`):

Only scrape clinics with ServiceScore >= this value. 0 = no filter. Range: 0-10.

## `scrapeDetails` (type: `boolean`):

Fetch individual clinic profile pages for rich data: full address, opening hours, treatments, prices, staff, description. Slower but much more complete.

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

Maximum total clinics to scrape. Set 0 for unlimited.

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

Maximum pages per category × country combination. Set 0 for unlimited.

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

Proxy settings. Residential proxy recommended for high volume.

## `requestDelay` (type: `integer`):

Delay between requests in milliseconds.

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

Parallel requests. Keep low (1-3) to avoid rate limiting.

## Actor input object example

```json
{
  "categories": [
    "hair-loss"
  ],
  "countries": [
    "turkey"
  ],
  "cities": [],
  "startUrls": [],
  "minServiceScore": 0,
  "scrapeDetails": false,
  "maxListings": 50,
  "maxPages": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "requestDelay": 1000,
  "maxConcurrency": 1
}
```

# Actor output Schema

## `clinicName` (type: `string`):

Clinic display name

## `profileUrl` (type: `string`):

Full WhatClinic profile URL

## `category` (type: `string`):

Treatment category

## `country` (type: `string`):

Country name

## `city` (type: `string`):

City name

## `district` (type: `string`):

District or area

## `address` (type: `string`):

Full street address

## `phone` (type: `string`):

Contact phone number

## `serviceScore` (type: `string`):

WhatClinic ServiceScore (0-10)

## `serviceScoreLabel` (type: `string`):

Very Good / Good / Excellent etc.

## `interactionCount` (type: `string`):

Number of patient interactions

## `reviewCount` (type: `string`):

Number of verified reviews

## `averageRating` (type: `string`):

Average review rating

## `awards` (type: `string`):

WhatClinic awards array

## `priceFrom` (type: `string`):

Starting price display text

## `priceCurrency` (type: `string`):

Price currency code

## `priceNumeric` (type: `string`):

Parsed numeric price

## `openingHours` (type: `string`):

Daily opening hours object

## `treatments` (type: `string`):

Available treatments array

## `treatmentPrices` (type: `string`):

Treatment prices array

## `staffNames` (type: `string`):

Doctor/specialist names

## `description` (type: `string`):

Clinic description text

## `photos` (type: `string`):

Clinic photo URLs

## `verified` (type: `string`):

WhatClinic verified clinic

## `promoted` (type: `string`):

Promoted/featured listing

## `searchCategory` (type: `string`):

Category used to find this clinic

## `searchCountry` (type: `string`):

Country used to find this clinic

## `searchCity` (type: `string`):

City used to find this clinic

## `scrapedAt` (type: `string`):

ISO timestamp when scraped

# 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 = {
    "categories": [
        "hair-loss"
    ],
    "countries": [
        "turkey"
    ],
    "cities": [],
    "startUrls": [],
    "maxListings": 50,
    "maxPages": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/whatclinic-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 = {
    "categories": ["hair-loss"],
    "countries": ["turkey"],
    "cities": [],
    "startUrls": [],
    "maxListings": 50,
    "maxPages": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/whatclinic-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 '{
  "categories": [
    "hair-loss"
  ],
  "countries": [
    "turkey"
  ],
  "cities": [],
  "startUrls": [],
  "maxListings": 50,
  "maxPages": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/whatclinic-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WhatClinic.com Clinic Scraper",
        "description": "Scrape clinic listings from WhatClinic.com — global healthcare directory with 120K+ clinics across 160+ countries. Extract name, reviews, prices, treatments, service scores and contact info by category, country and city.",
        "version": "0.0",
        "x-build-id": "hMe0qmvAmbl4Ku41i"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/haketa~whatclinic-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-haketa-whatclinic-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/haketa~whatclinic-scraper/runs": {
            "post": {
                "operationId": "runs-sync-haketa-whatclinic-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/haketa~whatclinic-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-haketa-whatclinic-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": {
                    "categories": {
                        "title": "Categories",
                        "type": "array",
                        "description": "Treatment categories to scrape. Options: 'hair-loss', 'cosmetic-surgery', 'dental', 'eye-surgery', 'fertility', 'physiotherapy', 'skin-care', 'weight-loss'. Leave empty for all.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "countries": {
                        "title": "Countries",
                        "type": "array",
                        "description": "Country slugs to search. Examples: 'turkey', 'thailand', 'hungary', 'india', 'spain', 'mexico', 'uk', 'usa', 'brazil', 'poland'. See README for full list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "cities": {
                        "title": "Cities (optional)",
                        "type": "array",
                        "description": "City slugs to narrow search. Leave empty to search entire country. Format depends on URL structure. Examples for Turkey: 'istanbul-province/istanbul', 'antalya-province/antalya', 'izmir-province/izmir'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Direct WhatClinic.com listing or profile URLs. Overrides category/country/city if provided.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "minServiceScore": {
                        "title": "Min Service Score",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "number",
                        "description": "Only scrape clinics with ServiceScore >= this value. 0 = no filter. Range: 0-10.",
                        "default": 0
                    },
                    "scrapeDetails": {
                        "title": "Scrape Detail Pages",
                        "type": "boolean",
                        "description": "Fetch individual clinic profile pages for rich data: full address, opening hours, treatments, prices, staff, description. Slower but much more complete.",
                        "default": false
                    },
                    "maxListings": {
                        "title": "Max Listings",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum total clinics to scrape. Set 0 for unlimited.",
                        "default": 50
                    },
                    "maxPages": {
                        "title": "Max Pages per Search",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum pages per category × country combination. Set 0 for unlimited.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. Residential proxy recommended for high volume."
                    },
                    "requestDelay": {
                        "title": "Request Delay (ms)",
                        "minimum": 0,
                        "maximum": 30000,
                        "type": "integer",
                        "description": "Delay between requests in milliseconds.",
                        "default": 1000
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Parallel requests. Keep low (1-3) to avoid rate limiting.",
                        "default": 1
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
