# Secret Escapes Deal Intelligence Scraper (`viable_guard/secret-escapes-deal-intelligence`) Actor

Monitor public Secret Escapes luxury hotel and travel deals: date-specific public price/availability signals, calendar-like date grid, discounts, sale end dates, destinations, badges, images, facilities, and optional detail-page metadata without login.

- **URL**: https://apify.com/viable\_guard/secret-escapes-deal-intelligence.md
- **Developed by:** [Matteo](https://apify.com/viable_guard) (community)
- **Categories:** Travel, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $9.00 / 1,000 secret escapes deal/date rows

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

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

## Secret Escapes Deal Intelligence Scraper

Extract public luxury travel and hotel deal intelligence from Secret Escapes without logging in.

This Actor monitors public Secret Escapes sale listings and returns structured deal rows: destination, hotel/deal title, sale URL, lead/rack rate display, discount percentage, sale end date, images, badges, facilities, optional public detail-page enrichment, **date-specific public price/availability signals**, and an optional **date grid mode** that checks multiple check-in dates to approximate a public availability calendar.

### What this Actor is best for

- Luxury travel deal monitoring
- Hospitality price/discount intelligence
- Affiliate/editorial travel research
- Destination deal feeds
- Competitor monitoring for boutique and luxury hotels
- Building alerts for limited-time Secret Escapes campaigns

### Availability: what is supported

This Actor now supports **date-specific public price and availability signals** when you pass both `checkin` and `checkout`.

It also supports **date grid mode**: provide `dateGrid: true`, `startDate`, `endDate`, `stayNights`, and `dateStepDays` to run multiple public date searches and output one row per deal/date combination. This gives buyers a calendar-like view of public Secret Escapes availability and price movement without logging in.

For date searches, Secret Escapes' public GraphQL response can return:

- `availabilityCheckin` and `availabilityCheckout`
- `availabilityOfferId`
- `totalPriceForDisplay`, e.g. `£371`
- `pricePerNightForDisplay`, e.g. `£186`
- `priceValueSuffixLabel`, e.g. `for 1 room, 2 nights`
- `hasDateSpecificPriceAvailability`: `true`

Important limitation: this is **not** a full room-level inventory calendar and it does not perform checkout. Exact room selection, member/checkout actions and final booking confirmation remain gated. Every result still includes:

- `hasRoomLevelAvailability`: `false`
- `requiresLoginForCheckoutAvailability`: `true`

Use this Actor for public date-level deal availability/pricing intelligence, not final booking confirmation.

### What data can you extract?

| Field | Description |
|---|---|
| `saleId` | Secret Escapes sale/deal ID |
| `title` | Deal title/editorial headline |
| `destinationName` | Hotel or destination display name |
| `city`, `country`, `continent` | Public location metadata when available |
| `url` | Public Secret Escapes deal URL |
| `leadRate`, `rackRate` | Public lead/rack-rate display strings |
| `checkin`, `checkout` input | Optional date search; when provided, public date-level availability/pricing is returned where available |
| `availabilityCheckin`, `availabilityCheckout`, `availabilityOfferId` | Date-specific public availability match and offer ID |
| `totalPriceForDisplay`, `pricePerNightForDisplay` | Public total and nightly price for requested dates |
| `hasDateSpecificPriceAvailability` | Whether Secret Escapes returned date-specific public availability/pricing |
| `dateGridMode`, `dateGridIndex`, `dateGridCheckin`, `dateGridCheckout`, `dateGridStayNights` | Calendar-like grid metadata when date grid mode is enabled |
| `discountPercent` | Visible discount percentage |
| `startsAt`, `endsAt` | Sale campaign dates where visible |
| `hasFlightsAvailable` | Whether flights are advertised as available |
| `badges` | Public labels such as time-limited or flights available |
| `topFacilities` | Facilities visible in the public sale data |
| `photoUrls` | Public image URLs |
| `description`, `propertyDetails` | Optional detail-page editorial text when `includeDetails` is enabled |
| `latitude`, `longitude` | Optional detail-page coordinates when visible |
| `availabilityScope` | Explicit availability limitation label |

### Example input

```json
{
  "territory": "UK",
  "query": "Lisbon",
  "dateGrid": true,
  "startDate": "2026-09-10",
  "endDate": "2026-09-17",
  "stayNights": 2,
  "dateStepDays": 2,
  "maxDateSearches": 4,
  "maxItems": 25,
  "includeDetails": true,
  "detailLimit": 10,
  "minDiscountPercent": 20
}
````

### Example output

```json
{
  "saleId": "A24723",
  "source": "Secret Escapes",
  "territory": "UK",
  "title": "Swanky Lisbon stay in the city centre",
  "destinationName": "BessaHotel Liberdade, Lisbon, Portugal",
  "country": "Portugal",
  "url": "https://www.secretescapes.com/bessahotel-liberdade-lisbon-portugal/sale-hotel",
  "discountPercent": 34,
  "leadRate": "£120",
  "rackRate": "£146",
  "availabilityCheckin": "2026-09-10",
  "availabilityCheckout": "2026-09-12",
  "dateGridMode": true,
  "dateGridIndex": 0,
  "dateGridCheckin": "2026-09-10",
  "dateGridCheckout": "2026-09-12",
  "dateGridStayNights": 2,
  "availabilityOfferId": "A22387",
  "totalPriceForDisplay": "£371",
  "pricePerNightForDisplay": "£186",
  "priceValueSuffixLabel": "for 1 room, 2 nights",
  "hasDateSpecificPriceAvailability": true,
  "hasFlightsAvailable": false,
  "availabilityScope": "date_level_public_price_availability_signals",
  "hasRoomLevelAvailability": false,
  "requiresLoginForCheckoutAvailability": true
}
```

### Input parameters

- `territory` — Secret Escapes territory code. `UK` is the main tested market.
- `query` — optional keyword/destination search.
- `checkin`, `checkout` — optional `YYYY-MM-DD` date search. Provide both to return public date-specific total price, nightly price, offer ID and availability signal where available.
- `dateGrid` — optional calendar-like mode. When `true`, the Actor generates multiple check-in/check-out searches and returns one row per deal/date combination.
- `startDate`, `endDate` — date grid boundaries. Generated checkout dates must be on or before `endDate`.
- `stayNights` — nights per generated stay.
- `dateStepDays` — spacing between generated check-ins. Use `1` for daily, `7` for weekly.
- `maxDateSearches` — safety cap for generated public date searches.
- `maxDealsPerDate` — in date grid mode, cap rows kept from each generated date search so the output covers multiple dates instead of filling up on the first date.
- `dateGridRequestDelaySecs` — polite delay between date grid searches.
- `maxItems` — maximum number of deal rows.
- `pageSize` — upstream page size, up to 100.
- `offset` — pagination offset.
- `travelTypes` — usually `HOTEL_ONLY`; `WITH_FLIGHTS` can return package-style deals.
- `withFlights` — shortcut to request flight-inclusive deals.
- `collections` — optional collection codes if known.
- `sortBy` — optional upstream sort value such as `DISCOUNT`, `PRICE_ASC`, `PRICE_DESC`, `NEWEST` if supported.
- `minPrice`, `maxPrice` — optional upstream price filters.
- `minDiscountPercent` — post-filter deals by discount.
- `includeDetails` — fetch public detail pages for descriptions, coordinates and full facilities.
- `detailLimit` — cap optional detail-page enrichment.
- `detailRequestDelaySecs` — polite delay between optional detail requests.
- `requestTimeoutSecs` — HTTP timeout.

### Pricing note

This Actor is lighter than full hotel inventory-calendar scrapers because it does not fetch room-level calendars. It is now stronger than a pure deal feed because it can run date-specific Secret Escapes searches and a calendar-like date grid, returning public total/nightly prices across multiple check-in dates. Recommended launch pricing remains around `$0.006` per output row if pay-per-event monetization is enabled; in date grid mode, each deal/date combination is one row.

### Compliance and source note

The Actor only uses public, non-login Secret Escapes pages and public GraphQL requests observed from public pages. It does not log in, bypass authentication, or perform checkout/member actions. You are responsible for complying with applicable laws and terms in your jurisdiction. This Actor is not affiliated with, endorsed by, or sponsored by Secret Escapes.

# Actor input Schema

## `territory` (type: `string`):

Secret Escapes market/territory code. UK is the main public site tested.

## `query` (type: `string`):

Optional keyword or destination query, e.g. Lisbon, Sicily, Maldives. Leave blank for all current sales.

## `checkin` (type: `string`):

Optional public date-search check-in in YYYY-MM-DD. Provide both checkin and checkout to return date-specific public price/availability signals.

## `checkout` (type: `string`):

Optional public date-search check-out in YYYY-MM-DD. Provide both checkin and checkout to return date-specific total price, nightly price and offer ID when Secret Escapes exposes them publicly.

## `dateGrid` (type: `boolean`):

Run multiple public date searches to build a calendar-like availability/price grid. Produces one row per deal/date combination until maxItems is reached.

## `startDate` (type: `string`):

First check-in date for dateGrid mode in YYYY-MM-DD. If omitted, checkin is used.

## `endDate` (type: `string`):

End boundary for dateGrid mode in YYYY-MM-DD. Generated checkout dates must be on or before this date. If omitted, checkout is used.

## `stayNights` (type: `integer`):

Number of nights per generated dateGrid stay.

## `dateStepDays` (type: `integer`):

Days between generated dateGrid check-ins. Use 1 for daily, 7 for weekly.

## `maxDateSearches` (type: `integer`):

Safety cap for dateGrid searches. Each generated date pair triggers a public Secret Escapes search.

## `maxDealsPerDate` (type: `integer`):

In dateGrid mode, maximum result rows kept from each generated date search. Defaults to pageSize.

## `dateGridRequestDelaySecs` (type: `number`):

Polite delay between dateGrid public search requests.

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

Maximum number of deal rows to extract.

## `pageSize` (type: `integer`):

Number of rows requested per public GraphQL page.

## `offset` (type: `integer`):

Start offset for pagination.

## `travelTypes` (type: `array`):

Secret Escapes public travel type filters. HOTEL\_ONLY is safest; WITH\_FLIGHTS can include packages with flights.

## `withFlights` (type: `boolean`):

Shortcut to request WITH\_FLIGHTS deals instead of HOTEL\_ONLY.

## `collections` (type: `array`):

Optional Secret Escapes collection codes if known. Leave empty for all public deals.

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

Optional upstream sort value if supported by Secret Escapes, e.g. DISCOUNT, PRICE\_ASC, PRICE\_DESC, NEWEST.

## `minPrice` (type: `integer`):

Optional minimum upstream price filter in the territory currency.

## `maxPrice` (type: `integer`):

Optional maximum upstream price filter in the territory currency.

## `minDiscountPercent` (type: `integer`):

Keep only deals with at least this discount percentage. Leave empty for no filter.

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

Fetch public deal detail pages for editorial description, property details, full facilities and lat/lng. Slower but richer.

## `detailLimit` (type: `integer`):

Maximum detail pages to enrich when includeDetails is enabled.

## `detailRequestDelaySecs` (type: `number`):

Polite delay between optional detail-page requests.

## `requestTimeoutSecs` (type: `integer`):

HTTP request timeout in seconds.

## Actor input object example

```json
{
  "territory": "UK",
  "query": "Lisbon",
  "dateGrid": false,
  "stayNights": 2,
  "dateStepDays": 1,
  "maxDateSearches": 14,
  "maxDealsPerDate": 3,
  "dateGridRequestDelaySecs": 0.4,
  "maxItems": 50,
  "pageSize": 50,
  "offset": 0,
  "travelTypes": [
    "HOTEL_ONLY"
  ],
  "withFlights": false,
  "collections": [],
  "includeDetails": false,
  "detailLimit": 10,
  "detailRequestDelaySecs": 0.4,
  "requestTimeoutSecs": 30
}
```

# 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 = {
    "territory": "UK",
    "query": "Lisbon",
    "travelTypes": [
        "HOTEL_ONLY"
    ],
    "collections": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("viable_guard/secret-escapes-deal-intelligence").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 = {
    "territory": "UK",
    "query": "Lisbon",
    "travelTypes": ["HOTEL_ONLY"],
    "collections": [],
}

# Run the Actor and wait for it to finish
run = client.actor("viable_guard/secret-escapes-deal-intelligence").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 '{
  "territory": "UK",
  "query": "Lisbon",
  "travelTypes": [
    "HOTEL_ONLY"
  ],
  "collections": []
}' |
apify call viable_guard/secret-escapes-deal-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=viable_guard/secret-escapes-deal-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Secret Escapes Deal Intelligence Scraper",
        "description": "Monitor public Secret Escapes luxury hotel and travel deals: date-specific public price/availability signals, calendar-like date grid, discounts, sale end dates, destinations, badges, images, facilities, and optional detail-page metadata without login.",
        "version": "0.4",
        "x-build-id": "w5WoyTGWtx6MEBdN5"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/viable_guard~secret-escapes-deal-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-viable_guard-secret-escapes-deal-intelligence",
                "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/viable_guard~secret-escapes-deal-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-viable_guard-secret-escapes-deal-intelligence",
                "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/viable_guard~secret-escapes-deal-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-viable_guard-secret-escapes-deal-intelligence",
                "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": {
                    "territory": {
                        "title": "Territory",
                        "type": "string",
                        "description": "Secret Escapes market/territory code. UK is the main public site tested.",
                        "default": "UK"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Optional keyword or destination query, e.g. Lisbon, Sicily, Maldives. Leave blank for all current sales."
                    },
                    "checkin": {
                        "title": "Check-in date",
                        "type": "string",
                        "description": "Optional public date-search check-in in YYYY-MM-DD. Provide both checkin and checkout to return date-specific public price/availability signals."
                    },
                    "checkout": {
                        "title": "Check-out date",
                        "type": "string",
                        "description": "Optional public date-search check-out in YYYY-MM-DD. Provide both checkin and checkout to return date-specific total price, nightly price and offer ID when Secret Escapes exposes them publicly."
                    },
                    "dateGrid": {
                        "title": "Date grid mode",
                        "type": "boolean",
                        "description": "Run multiple public date searches to build a calendar-like availability/price grid. Produces one row per deal/date combination until maxItems is reached.",
                        "default": false
                    },
                    "startDate": {
                        "title": "Date grid start date",
                        "type": "string",
                        "description": "First check-in date for dateGrid mode in YYYY-MM-DD. If omitted, checkin is used."
                    },
                    "endDate": {
                        "title": "Date grid end date",
                        "type": "string",
                        "description": "End boundary for dateGrid mode in YYYY-MM-DD. Generated checkout dates must be on or before this date. If omitted, checkout is used."
                    },
                    "stayNights": {
                        "title": "Stay nights",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Number of nights per generated dateGrid stay.",
                        "default": 2
                    },
                    "dateStepDays": {
                        "title": "Date step days",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Days between generated dateGrid check-ins. Use 1 for daily, 7 for weekly.",
                        "default": 1
                    },
                    "maxDateSearches": {
                        "title": "Max date searches",
                        "minimum": 1,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Safety cap for dateGrid searches. Each generated date pair triggers a public Secret Escapes search.",
                        "default": 14
                    },
                    "maxDealsPerDate": {
                        "title": "Max deals per date",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "In dateGrid mode, maximum result rows kept from each generated date search. Defaults to pageSize.",
                        "default": 3
                    },
                    "dateGridRequestDelaySecs": {
                        "title": "Delay between date searches",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "number",
                        "description": "Polite delay between dateGrid public search requests.",
                        "default": 0.4
                    },
                    "maxItems": {
                        "title": "Max deals",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of deal rows to extract.",
                        "default": 50
                    },
                    "pageSize": {
                        "title": "Page size",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Number of rows requested per public GraphQL page.",
                        "default": 50
                    },
                    "offset": {
                        "title": "Offset",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Start offset for pagination.",
                        "default": 0
                    },
                    "travelTypes": {
                        "title": "Travel types",
                        "type": "array",
                        "description": "Secret Escapes public travel type filters. HOTEL_ONLY is safest; WITH_FLIGHTS can include packages with flights.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "withFlights": {
                        "title": "Only deals with flights",
                        "type": "boolean",
                        "description": "Shortcut to request WITH_FLIGHTS deals instead of HOTEL_ONLY.",
                        "default": false
                    },
                    "collections": {
                        "title": "Collections",
                        "type": "array",
                        "description": "Optional Secret Escapes collection codes if known. Leave empty for all public deals.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "type": "string",
                        "description": "Optional upstream sort value if supported by Secret Escapes, e.g. DISCOUNT, PRICE_ASC, PRICE_DESC, NEWEST."
                    },
                    "minPrice": {
                        "title": "Min price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional minimum upstream price filter in the territory currency."
                    },
                    "maxPrice": {
                        "title": "Max price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional maximum upstream price filter in the territory currency."
                    },
                    "minDiscountPercent": {
                        "title": "Minimum discount %",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Keep only deals with at least this discount percentage. Leave empty for no filter."
                    },
                    "includeDetails": {
                        "title": "Enrich with detail pages",
                        "type": "boolean",
                        "description": "Fetch public deal detail pages for editorial description, property details, full facilities and lat/lng. Slower but richer.",
                        "default": false
                    },
                    "detailLimit": {
                        "title": "Detail page limit",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum detail pages to enrich when includeDetails is enabled.",
                        "default": 10
                    },
                    "detailRequestDelaySecs": {
                        "title": "Delay between detail pages",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "number",
                        "description": "Polite delay between optional detail-page requests.",
                        "default": 0.4
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "HTTP request timeout in seconds.",
                        "default": 30
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
