# Plumguide Property Search Scraper (`stealth_mode/plumguide-property-search-scraper`) Actor

Scrape property listings from PlumGuide.com, the curated luxury vacation rental platform. Extract pricing, discounts, availability, and proximity data from search results. Ideal for travel analytics, competitive pricing intelligence, and property management insights.

- **URL**: https://apify.com/stealth\_mode/plumguide-property-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

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

## PlumGuide Property Search Scraper: Extract Luxury Vacation Rental Data

### Understanding PlumGuide and Its Premium Rental Market

PlumGuide curates high-end vacation rentals globally, accepting only properties that pass rigorous quality standards. Unlike mass-market platforms, PlumGuide focuses on design-forward, professionally managed homes in prime locations. This selectivity makes it valuable for luxury travel analysis, premium property benchmarking, and understanding high-end rental dynamics.

The platform displays dynamic pricing, promotional discounts, and location proximity—data critical for property managers optimizing rates and travelers analyzing value. Manual comparison across dates, locations, and guest counts is impractical. This scraper automates extraction, delivering structured datasets for pricing analysis, market research, and competitive intelligence.

### What This Scraper Extracts and Target Users

The scraper processes PlumGuide search result pages—the listings displayed after setting location, dates, and guest parameters. It captures property-level data visible in search views.

**Extracted Data:**

**Listing:** Property identifier and basic information linking to full details.

**Origin:** Source or listing origin designation within PlumGuide's system.

**Nightly Price:** Current per-night rate for specified dates and guest count.

**Discount Percentage:** Applied promotional discount (e.g., 15% off).

**Total Price Without Discount / Nightly Price Without Discount:** Original pricing before discounts, enabling true cost comparison.

**Total Price:** Final booking cost after discounts for the entire stay.

**Is Price Syncing:** Flag indicating if pricing is synchronizing with external systems (useful for identifying dynamic pricing properties).

**Is Non Refundable:** Indicates non-refundable booking terms.

**Dates:** Check-in/check-out dates for pricing context.

**Proximity:** Distance or travel time from search location center (e.g., "15 min to city center").

### Input Configuration

**Example Input:**

```json
{
  "urls": [
    "https://www.plumguide.com/search?adults=1&children=1&datepickerType=calendar&infants=1&location=London&pets=1&placeId=ChIJdd4hrwug2EcRmSrV3Vo6llI"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 50
}
````

**Parameter Details:**

**urls:** PlumGuide search result page URLs. Construct these by performing searches on PlumGuide with desired filters (location, dates, guests, pets). The URL encodes all search parameters—adults, children, infants, dates, location. Copy URLs directly from your browser after setting search criteria.

**ignore\_url\_failures:** Set `true` for robustness when scraping multiple URLs. Individual failures won't halt the entire run—critical for batch processing across locations or date ranges.

**max\_items\_per\_url:** Maximum properties to extract per search page (default 20, max typically 50). PlumGuide displays 20-30 results per page. Set higher for comprehensive extraction or lower for testing.

**Building Search URLs:** Manually search PlumGuide with target parameters (location: "Paris," adults: 2, dates: specific range). Copy resulting URL. Modify parameters in URL directly for variations (change `adults=2` to `adults=4`) or perform new searches for different locations.

### Output Structure and Field Meanings

**Sample Output:**

```json
{
  "listing": {
    "listing_id": 61534,
    "name": "Morning Journal ",
    "photos": [
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/224c1990-e5c8-4ca7-9548-71923edca650..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/811d4ad6-dc29-43ad-8a62-c0072a1d2693..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/8fa1a793-1dab-4341-b844-152af9092aeb..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/4a214ca7-8789-4be4-abc1-f52f31762356..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/89fc2b53-4c85-489e-8229-ac4a121dd27a..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/184848db-3795-400a-9556-81a6ced27ef7..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/a3096204-401a-4579-9177-6c94a23080f8..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/f9503765-0f41-4b48-894c-1a9c8db66d9a..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/f6df85b1-224f-4008-9a60-9b8632a590c2..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/9cd6e23b-b1fc-41d5-b1fc-744427ea7023..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/9e74823b-0368-4fbe-8946-3ac25b86ed0f..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/bea359c3-6d0a-436e-8452-5126633185a5..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/a6e3a729-c009-4eb4-822f-ba9e9775e423..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/19e896e2-8351-429d-bf4c-9882c21fac6c..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/7608cdc0-ef86-412e-ba36-a6379cf01729..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/1bc0464a-2f8c-496f-8a7f-3397c55a62ac..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/2bdfdeed-0fc4-4f9e-9f82-f905dea4bf18..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/f5b155a1-cc84-42a3-8035-2439e44f818d..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/2a2c0a9e-2d0d-4c11-971a-0662d3fdfb1d..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/fc6ffa6d-ce3f-4276-82ab-2d691040d9c7..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/21905115-52f5-4fe2-a420-36425b4c657c..jpeg",
      "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/94e649eb-7362-4a87-bb21-ad3806032ebc..jpeg"
    ],
    "featured_image_url": "https://i.plumcache.com/listings/9e5d3032-dfec-43fe-b69a-e37def97b961/224c1990-e5c8-4ca7-9548-71923edca650..jpeg",
    "bathroom_count": 2,
    "bedroom_count": 1,
    "guest_count": 2,
    "short_location": "Bayswater, London",
    "latitude": 51.5135618,
    "longitude": -0.1943577,
    "cancellation_policy_id": 10,
    "property_type": null,
    "is_exclusive": false,
    "tracking": {
      "city": "London",
      "region": "Greater London",
      "country": "United Kingdom",
      "neighbourhood": "Bayswater",
      "place_id": "ChIJdd4hrwug2EcRmSrV3Vo6llI",
      "__typename": "LocationTracking"
    },
    "slug": "morning-journal",
    "__typename": "Listing"
  },
  "origin": "default",
  "nightly_price": null,
  "discount_percentage": null,
  "total_price_without_discount": null,
  "nightly_price_without_discount": null,
  "total_price": null,
  "is_price_syncing": false,
  "is_non_refundable": null,
  "dates": null,
  "proximity": null
}
```

**Listing:** Property object containing ID, name, and reference data. **Use:** Primary key for tracking specific properties, linking to detail pages, building property databases.

**Origin:** Listing source designation. **Use:** Understanding property management structure, filtering by listing type.

**Nightly Price:** Current per-night rate in local currency. **Use:** Real-time pricing analysis, rate comparisons across properties and dates.

**Discount Percentage:** Promotional discount applied (0 if none). **Use:** Identifying promotional strategies, calculating discount prevalence, evaluating true property value.

**Total Price Without Discount:** Full stay cost before promotions. **Use:** True cost comparison, understanding base pricing strategies.

**Nightly Price Without Discount:** Original per-night rate. **Use:** Benchmarking undiscounted rates, analyzing discount depth.

**Total Price:** Final booking cost after discounts. **Use:** Actual cost analysis, budget filtering, price competitiveness assessment.

**Is Price Syncing:** Boolean indicating dynamic pricing updates. **Use:** Identifying properties using automated pricing tools, understanding rate fluidity.

**Is Non Refundable:** Refund policy indicator. **Use:** Filtering by booking flexibility, analyzing pricing vs. policy tradeoffs.

**Dates:** Check-in and check-out dates for this pricing. **Use:** Contextualizing prices, tracking seasonal variations, date-specific analysis.

**Proximity:** Location proximity metrics. **Use:** Value-for-distance analysis, filtering by location convenience.

### Implementation Guide

**1. Define Search Parameters:** Decide location, dates, guest composition (adults/children/infants), and pets. Test searches on PlumGuide to ensure results match expectations.

**2. Collect Search URLs:** Perform searches manually, copy URLs. For multi-market analysis, create URLs for different locations. For seasonal analysis, vary dates.

**3. Configure Input:** Build JSON with URL list. Set `max_items_per_url` to 50 for full pages or 20 for standard extraction. Enable `ignore_url_failures` for multi-URL runs.

**4. Run Scraper:** Launch via Apify. Processing 5 search URLs with 30 properties each typically completes in 2-4 minutes.

**5. Validate Output:** Check pricing logic (total\_price = nightly\_price × nights), verify dates match URLs, ensure proximity data is present.

**6. Export Data:** JSON for databases, CSV for spreadsheets, Excel for business reports.

**Error Handling:** Verify URLs are search result pages, not property detail pages. Check that date parameters are valid (future dates, check-out after check-in). Invalid guest counts may return empty results.

### Strategic Applications

**Dynamic Pricing Analysis:** Track how nightly rates fluctuate across booking windows. Compare early booking vs. last-minute pricing. Analyze discount timing and depth across seasons.

**Competitive Benchmarking:** Monitor competitor properties in same neighborhoods. Compare pricing for similar property types (2BR apartments, penthouses). Identify underpriced or overpriced listings relative to market.

**Seasonal Trend Tracking:** Scrape same locations monthly across different dates. Map peak season pricing surges, off-season discounts, and shoulder season patterns.

**Discount Strategy Intelligence:** Calculate discount prevalence by location and season. Analyze correlation between discount depth and booking terms (non-refundable rates get deeper discounts).

**Location Value Analysis:** Cross-reference proximity data with pricing. Identify value opportunities—lower-priced properties near key attractions. Map price-per-proximity curves.

**Market Entry Research:** Assess competitive landscapes before launching properties. Understand typical pricing ranges, discount expectations, and market saturation in target neighborhoods.

### Maximizing Data Value

**Multi-Date Comparison:** Scrape same location with different date ranges weekly. Track how pricing evolves as dates approach. Identify optimal booking windows.

**Guest Count Sensitivity:** Run searches varying adult/children counts for same property/dates. Analyze per-person pricing increments and family-friendly discount patterns.

**Historical Database:** Archive scraped data with timestamps. Calculate average nightly rates over time, track property additions/removals, measure market growth.

**Enrichment Integration:** Combine with property detail scrapers for amenities, reviews, and photos. Merge with local event calendars to correlate pricing with major events.

**Quality Checks:** Flag anomalies—properties with zero discounts when others show 20%, prices outside 2 standard deviations from mean, proximity data missing. Validate total\_price calculations.

**Refresh Cadence:** Luxury rental pricing changes frequently. Weekly scraping captures promotional campaigns and seasonal adjustments. Daily scraping during peak booking seasons tracks high-velocity changes.

### Best Practices

**Systematic URL Building:** For comprehensive market coverage, systematically vary URL parameters—all major neighborhoods in a city, standard date ranges (weekends, week-long stays), typical guest counts (couples, families).

**Date Range Strategy:** Scrape both near-term (next 30 days) for immediate pricing and far-term (6-12 months) for seasonal patterns. Mix weekday and weekend searches.

**Data Validation:** Implement checks ensuring nightly\_price × nights ≈ total\_price (accounting for cleaning fees in totals). Verify discount\_percentage matches price reduction calculations.

**Respectful Scraping:** Space large runs over time. Avoid overwhelming PlumGuide with simultaneous requests. Sustainable practices ensure continued data access.

### Conclusion

The PlumGuide Property Search Scraper transforms luxury vacation rental search data into actionable market intelligence. From dynamic pricing patterns to promotional strategies, this tool delivers insights for optimizing property performance, evaluating markets, and understanding high-end rental dynamics. Extract premium rental data today and gain competitive advantage in luxury hospitality.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the tour list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.plumguide.com/search?adults=1&children=1&datepickerType=calendar&infants=1&location=London&pets=1&placeId=ChIJdd4hrwug2EcRmSrV3Vo6llI"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.plumguide.com/search?adults=1&children=1&datepickerType=calendar&infants=1&location=London&pets=1&placeId=ChIJdd4hrwug2EcRmSrV3Vo6llI"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/plumguide-property-search-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 = {
    "urls": ["https://www.plumguide.com/search?adults=1&children=1&datepickerType=calendar&infants=1&location=London&pets=1&placeId=ChIJdd4hrwug2EcRmSrV3Vo6llI"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/plumguide-property-search-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 '{
  "urls": [
    "https://www.plumguide.com/search?adults=1&children=1&datepickerType=calendar&infants=1&location=London&pets=1&placeId=ChIJdd4hrwug2EcRmSrV3Vo6llI"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/plumguide-property-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Plumguide Property Search Scraper",
        "description": "Scrape property listings from PlumGuide.com, the curated luxury vacation rental platform. Extract pricing, discounts, availability, and proximity data from search results. Ideal for travel analytics, competitive pricing intelligence, and property management insights.",
        "version": "0.0",
        "x-build-id": "pe7qwKBy5byunmY6d"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~plumguide-property-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-plumguide-property-search-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/stealth_mode~plumguide-property-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-plumguide-property-search-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/stealth_mode~plumguide-property-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-plumguide-property-search-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": {
                    "urls": {
                        "title": "URLs of the tour list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the tour list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
