# Trip Tours Reviews Scraper (`stealth_mode/trip-tours-reviews-scraper`) Actor

Scrape detailed user reviews from Trip.com attraction and tour pages. Collect ratings, review text, images, reply threads, and 30+ fields per review — perfect for sentiment analysis, competitor research, and travel intelligence.

- **URL**: https://apify.com/stealth\_mode/trip-tours-reviews-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Travel
- **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

## Trip.com Tours Reviews Scraper: Extract Attraction Review Data at Scale

---

### What Is Trip.com?

Trip.com is one of the world's largest online travel platforms, offering bookings for flights, hotels, and tours alongside a rich library of user-generated attraction reviews. These reviews represent valuable, real-world sentiment data about destinations, theme parks, and guided experiences globally. Collecting this data manually is impractical at scale — the **Trip.com Tours Reviews Scraper** automates extraction from any attraction detail page.

---

### Overview

The **Trip.com Reviews Scraper** targets attraction and tour detail pages, pulling structured review records including ratings, written content, media, reply threads, and translation data. It is built for:

- **Travel brands** monitoring guest sentiment about competitor attractions
- **Data analysts** building review datasets for NLP or sentiment modeling
- **Tourism researchers** studying visitor feedback patterns
- **Product teams** benchmarking attraction performance across regions

---

### Input Format

The scraper accepts a simple JSON configuration:

```json
{
  "urls": [
    "https://www.trip.com/travel-guide/attraction/shanghai/shanghai-disney-resort-13412802?curr=USD&locale=en-XX&poiType=3&scene=ticket&ext-mixlist=ticket&ext-listlocate=0&lasttraceid="
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Field | Type | Description |
|---|---|---|
| `urls` | `array` | List of Trip.com attraction/tour detail page URLs to scrape. Add one per line or use bulk edit. |
| `max_items_per_url` | `integer` | Maximum number of reviews collected per URL. Default: `20`. Set higher (e.g., `200`) for comprehensive coverage. |
| `ignore_url_failures` | `boolean` | If `true`, the scraper continues running when a URL fails rather than halting the entire run. Recommended for bulk jobs. |

> **Tip:** Use the `locale=en-XX` parameter in your URL to retrieve English-language interface data. Swap `curr=USD` for your preferred currency if scraping pricing-adjacent content.

***

### Output Format

**Sample output**

```json
{
  "review_id": 704248728,
  "locale": "en-id",
  "client_auth": "F246FCC59F1E1E1DF65C8B3C74D48D9DA84893ADF5186D414FD638BE84ED0F1F",
  "head_image": "https://ak-d.tripcdn.com/images/0a203224x97r0kyh3E9AD.jpg",
  "username": "Tomtomm travel",
  "content": "I&rsquo;m happy I visited Disneyland using  Trip.com￼ &mdash; the booking process was easy, convenient, and cheaper compared to other apps.After purchasing the ticket, we received a barcode directly.When entering Disneyland, we only needed to show our passports for verification and entry.Make sure the passport number and full name are entered correctly during booking so everything goes smoothly without any issues.",
  "user_rating": 5.0,
  "create_time": 1779505277000,
  "helpful_like": 0,
  "review_images": [
    "https://ak-d.tripcdn.com/images/0EQ36224x99eblf22392D.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ2t224x99ebuzuaE88A.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ3n224x99ebt8l1824C.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ6l224x99ec1wyg11D4.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ3p224x99eblr8z98D0.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ2q224x99ebz9e65728.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ6c224x99ec98lt1CE2.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ1b224x99ebrgc53D97.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ3w224x99eblf2c0D16.jpg?proc=source%2ftrip"
  ],
  "thumbnail_image_url": [
    "https://ak-d.tripcdn.com/images/0EQ36224x99eblf22392D.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ2t224x99ebuzuaE88A.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ3n224x99ebt8l1824C.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ6l224x99ec1wyg11D4.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ3p224x99eblr8z98D0.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ2q224x99ebz9e65728.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ6c224x99ec98lt1CE2.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ1b224x99ebrgc53D97.jpg?proc=source%2ftrip",
    "https://ak-d.tripcdn.com/images/0EQ3w224x99eblf2c0D16.jpg?proc=source%2ftrip"
  ],
  "source": "",
  "ischeck": 2,
  "total_reply_count": 0,
  "replies": [],
  "has_voted": false,
  "user_url": "https://www.trip.com/travel-guide/personal-home/F246FCC59F1E1E1DF65C8B3C74D48D9DA84893ADF5186D414FD638BE84ED0F1F",
  "review_url": "/rn_ibu_traveling/_crn_config?CRNModuleName=RN_Product_IBU_Traveling&CRNType=1&transparentstatusbar=1&initialPage=TripShootCommentDetail&commentId=704248728",
  "review_h5_url": "https://www.trip.com/review/shanghai-disney-resort-13412802-704248728?locale=en-XX",
  "review_online_url": "https://www.trip.com/review/shanghai-disney-resort-13412802-704248728?locale=en-XX",
  "is_owner": false,
  "is_picked": false,
  "score_name": "Outstanding",
  "translate_content": null,
  "translate_locale": "en-XX",
  "is_supported_delete": false,
  "image_list": [
    {
      "cover_image_id": 2092263831,
      "cover_image_url": "https://ak-d.tripcdn.com/images/0EQ36224x99eblf22392D.jpg",
      "width": 1290,
      "height": 2293
    },
    {
      "cover_image_id": 2092263800,
      "cover_image_url": "https://ak-d.tripcdn.com/images/0EQ2t224x99ebuzuaE88A.jpg",
      "width": 2097,
      "height": 2796
    },
    {
      "cover_image_id": 2092263780,
      "cover_image_url": "https://ak-d.tripcdn.com/images/0EQ3n224x99ebt8l1824C.jpg",
      "width": 2097,
      "height": 2796
    },
    {
      "cover_image_id": 2092263799,
      "cover_image_url": "https://ak-d.tripcdn.com/images/0EQ6l224x99ec1wyg11D4.jpg",
      "width": 2097,
      "height": 2796
    },
    {
      "cover_image_id": 2092263779,
      "cover_image_url": "https://ak-d.tripcdn.com/images/0EQ3p224x99eblr8z98D0.jpg",
      "width": 2097,
      "height": 2796
    },
    {
      "cover_image_id": 2092263798,
      "cover_image_url": "https://ak-d.tripcdn.com/images/0EQ2q224x99ebz9e65728.jpg",
      "width": 2097,
      "height": 2796
    },
    {
      "cover_image_id": 2092263778,
      "cover_image_url": "https://ak-d.tripcdn.com/images/0EQ6c224x99ec98lt1CE2.jpg",
      "width": 2097,
      "height": 2796
    },
    {
      "cover_image_id": 2092263797,
      "cover_image_url": "https://ak-d.tripcdn.com/images/0EQ1b224x99ebrgc53D97.jpg",
      "width": 2097,
      "height": 2796
    },
    {
      "cover_image_id": 2092263777,
      "cover_image_url": "https://ak-d.tripcdn.com/images/0EQ3w224x99eblf2c0D16.jpg",
      "width": 2097,
      "height": 2796
    }
  ],
  "cover_image": {
    "cover_image_id": 2092263831,
    "cover_image_url": "https://ak-d.tripcdn.com/images/0EQ36224x99eblf22392D.jpg",
    "width": 1290,
    "height": 2293
  },
  "business_type": 70,
  "create_time_desc": "6 hours ago",
  "from_url": "https://www.trip.com/travel-guide/attraction/shanghai/shanghai-disney-resort-13412802?curr=USD&locale=en-XX&poiType=3&scene=ticket&ext-mixlist=ticket&ext-listlocate=0&lasttraceid="
}
```

Each review returns up to 30 fields organized across four areas:

#### Review Identity & Content

| Field | Meaning |
|---|---|
| `Review ID` | Unique Trip.com identifier for the review |
| `Content` | Full review text written by the user |
| `Translate Content` | Machine-translated version of the review (if available) |
| `Translate Locale` | Target language of the translation |
| `User Rating` | Numeric score given by the reviewer |
| `Score Name` | Label corresponding to the rating (e.g., "Excellent", "Good") |
| `Create Time` | Unix timestamp of when the review was submitted |
| `Create Time Description` | Human-readable relative time (e.g., "3 days ago") |
| `Source` | Platform or channel where the review originated |
| `Business Type` | Category of the reviewed business (e.g., attraction, tour) |

#### Author & Profile

| Field | Meaning |
|---|---|
| `Username` | Display name of the reviewer |
| `Head Image` | Reviewer's profile picture URL |
| `Locale` | Reviewer's locale/region setting |
| `Client Auth` | Client authentication token associated with the reviewer |
| `User URL` | Link to the reviewer's Trip.com profile |
| `Is Owner` | Whether the reviewer is the attraction's owner/operator |

#### Media

| Field | Meaning |
|---|---|
| `Review Images` | Array of image URLs attached to the review |
| `Thumbnail Image URL` | Compressed preview image for the review |
| `Image List` | Full-resolution image list associated with the review |
| `Cover Image` | Primary display image for the review card |

#### Engagement & Moderation

| Field | Meaning |
|---|---|
| `Helpful Like` | Number of users who marked the review as helpful |
| `Has Voted` | Whether the current session user has voted on this review |
| `Total Reply Count` | Total number of replies to the review |
| `Replies` | Array of reply objects (author, content, timestamp) |
| `Is Check` | Whether the review has passed moderation/verification |
| `Is Picked` | Whether the review is editorially highlighted |
| `Is Supported Delete` | Whether the review can be deleted by the current user |

#### URLs & References

| Field | Meaning |
|---|---|
| `Review URL` | Direct permalink to the review |
| `Review H5 URL` | Mobile-optimized review link |
| `Review Online URL` | Shareable public URL for the review |

***

### How to Use

1. **Find the attraction page** — Navigate to the target attraction on Trip.com (e.g., a theme park, museum, or tour). Copy the full URL from your browser.
2. **Paste into `urls`** — Add one or more URLs to the array. Each URL will be scraped independently up to `max_items_per_url`.
3. **Set item limit** — Use `max_items_per_url: 200` for comprehensive review coverage, or lower for quick sampling.
4. **Enable fault tolerance** — Keep `ignore_url_failures: true` for multi-URL runs to avoid stopping on a single bad link.
5. **Export** — Download results as JSON or CSV for use in Excel, Python, or your BI tool of choice.

**Common issues:**

- If reviews are missing, verify the URL includes `poiType` and `scene` parameters — these determine which review tab Trip.com loads.
- Translated content fields (`Translate Content`, `Translate Locale`) may be empty if Trip.com has not auto-translated the review.

***

### Use Cases & Business Value

- **Sentiment analysis:** Feed `Content` and `User Rating` fields into NLP pipelines to classify visitor sentiment by attraction type or region
- **Competitive benchmarking:** Compare `Score Name` distributions across rival attractions
- **Media mining:** Collect `Image List` data to analyze what visitors photograph most
- **Reply monitoring:** Use `Replies` and `Total Reply Count` to track how operators respond to feedback

***

### Conclusion

The **Trip.com Tours Reviews Scraper** turns publicly available attraction reviews into structured, analysis-ready datasets. With 30+ fields per record covering content, media, engagement, and metadata, it supports everything from quick reputation checks to large-scale travel research. Configure your URLs, set your limits, and start collecting.

# Actor input Schema

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

Add the URLs of the tours details 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.trip.com/travel-guide/attraction/shanghai/shanghai-disney-resort-13412802?curr=USD&locale=en-XX&poiType=3&scene=ticket&ext-mixlist=ticket&ext-listlocate=0&lasttraceid="
  ],
  "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.trip.com/travel-guide/attraction/shanghai/shanghai-disney-resort-13412802?curr=USD&locale=en-XX&poiType=3&scene=ticket&ext-mixlist=ticket&ext-listlocate=0&lasttraceid="
    ],
    "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/trip-tours-reviews-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.trip.com/travel-guide/attraction/shanghai/shanghai-disney-resort-13412802?curr=USD&locale=en-XX&poiType=3&scene=ticket&ext-mixlist=ticket&ext-listlocate=0&lasttraceid="],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/trip-tours-reviews-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.trip.com/travel-guide/attraction/shanghai/shanghai-disney-resort-13412802?curr=USD&locale=en-XX&poiType=3&scene=ticket&ext-mixlist=ticket&ext-listlocate=0&lasttraceid="
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/trip-tours-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Trip Tours Reviews Scraper",
        "description": "Scrape detailed user reviews from Trip.com attraction and tour pages. Collect ratings, review text, images, reply threads, and 30+ fields per review — perfect for sentiment analysis, competitor research, and travel intelligence.",
        "version": "0.0",
        "x-build-id": "1a4YnZnPukQ3X9hJI"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~trip-tours-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-trip-tours-reviews-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~trip-tours-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-trip-tours-reviews-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~trip-tours-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-trip-tours-reviews-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 tours details urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the tours details 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
