# Google Shopping Results Scraper (`fetch_cat/google-shopping-results-scraper`) Actor

Extract Google Shopping product results by keyword, country, language, price range, and max item count for price and merchant research.

- **URL**: https://apify.com/fetch\_cat/google-shopping-results-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** E-commerce, Marketing, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.23 / 1,000 item extracteds

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

## Google Shopping Results Scraper

Extract product cards from Google Shopping search results by keyword, country, language, and optional price range.

Use this actor to monitor product prices, compare sellers, find marketplace positioning, and export structured shopping data without copying result pages by hand.

### At a glance

- **Best for:** product price monitoring, merchant comparison, category research, paid-shopping snapshots, and ecommerce reporting.
- **Inputs:** product queries, country, language, result limit, optional price filters, and proxy settings.
- **Outputs:** one row per saved Google Shopping product card with title, price, merchant, rating, review count, shipping text, source URL, and timestamp.
- **Exports:** download CSV, JSON, Excel, XML, RSS, or use the Apify Dataset API.
- **Cost:** `$0.005` per run plus the `item` event for each saved product card.

### Ready-to-run examples

Use these saved Store examples as starting points. Open any example to prefill the Actor input, then adjust URLs, keywords, limits, or filters for your own run.

- **[Google Shopping gaming monitor scraper](https://apify.com/fetch_cat/google-shopping-results-scraper/examples/google-shopping-gaming-monitor-results)**
- **[Google Shopping skincare serum scraper](https://apify.com/fetch_cat/google-shopping-results-scraper/examples/google-shopping-skincare-serum-results)**
- **[Google Shopping Germany sneakers scraper](https://apify.com/fetch_cat/google-shopping-results-scraper/examples/google-shopping-de-sneakers-results)**
- **[Google Shopping UK air fryer price scraper](https://apify.com/fetch_cat/google-shopping-results-scraper/examples/google-shopping-uk-air-fryer-prices)**
- **[Google Shopping headphones under $100 scraper](https://apify.com/fetch_cat/google-shopping-results-scraper/examples/google-shopping-headphones-under-100)**
- **[Google Shopping laptops under $1000 scraper](https://apify.com/fetch_cat/google-shopping-results-scraper/examples/google-shopping-laptops-under-1000)**
- **[View all ready-to-run examples](https://apify.com/fetch_cat/google-shopping-results-scraper/examples)** (10 examples)

### What can it do?

Google Shopping Results Scraper searches Google Shopping for your product keywords and saves visible product result cards as a clean dataset.

| Capability | What it does |
| --- | --- |
| Search products | Run one Google Shopping query or a list of queries in the same job. |
| Target locale | Set country and language to compare localized shopping results. |
| Export product cards | Save titles, prices, merchants, ratings, review counts, shipping snippets, source URLs, and timestamps. |
| Filter prices | Optionally keep only products inside a minimum or maximum price range. |
| Control spend | Cap `maxItems` to keep test runs small and predictable. |

### Who is it for?

- **Ecommerce teams:** track how products appear in Google Shopping and compare visible offers.
- **Price intelligence teams:** monitor merchant prices, advertised pricing, and offer changes.
- **Marketplace analysts:** review ranking and seller coverage for product categories.
- **Agencies:** collect shopping snapshots for client reporting.
- **Product managers:** research comparable products before launch.
- **SEO and paid-shopping specialists:** understand competitive Shopping result pages by query and region.

### Why use this actor?

- Google Shopping pages are built for browsing, not spreadsheet exports.
- The actor converts result cards into flat JSON records.
- Each item is easy to export to CSV, Excel, Google Sheets, BigQuery, Snowflake, or your own API.
- Query and timestamp metadata make repeated runs easier to compare over time.
- The actor is designed for low-volume monitoring and research workflows.

### Output fields

| Field | Description |
| --- | --- |
| `query` | Search term that produced the item |
| `position` | Result position in the saved output |
| `productTitle` | Product title |
| `priceText` | Displayed price text |
| `priceValue` | Numeric price when available |
| `currency` | Currency inferred from the displayed symbol |
| `merchant` | Merchant or seller snippet |
| `productUrl` | Product link when available from the result markup |
| `imageUrl` | Product image URL when available |
| `rating` | Star rating |
| `reviewCount` | Number of reviews |
| `shipping` | Delivery or shipping snippet |
| `sourceUrl` | Google Shopping page URL used for extraction |
| `scrapedAt` | Time the result was saved |

### Output example

```json
{
  "query": "coffee maker",
  "position": 1,
  "productTitle": "Keurig K-Classic Coffee Maker K-Cup Pod Single Serve",
  "priceText": "$129.99",
  "priceValue": 129.99,
  "currency": "USD",
  "merchant": "Keurig.com",
  "productUrl": null,
  "imageUrl": null,
  "rating": 4.3,
  "reviewCount": 9700,
  "shipping": "Free delivery by Thu",
  "sourceUrl": "http://www.google.com/search?tbm=shop&udm=28&q=coffee+maker&hl=en&gl=US&num=100",
  "scrapedAt": "2026-06-30T10:00:00.000Z"
}
````

### Pricing

This actor uses pay-per-event pricing.

A small `$0.005` start event is charged once per run, and an `item` event is charged for each saved Google Shopping product card.

Current BRONZE pricing is `$0.00037886` per saved product card, about `$0.38` per 1,000 saved items, with lower per-item prices on higher Apify tiers.

Only saved product cards are charged as item events. For a typical 20-result research run, cost stays low because only saved results are charged.

Use a low `maxItems` value when testing a new query list.

### How to use

1. Open the actor on Apify.
2. Add one or more shopping queries.
3. Choose a country code such as `US`, `GB`, `CA`, `AU`, or `DE`.
4. Choose a language code such as `en`, `es`, `de`, or `fr`.
5. Set `maxItems` to the number of products you want.
6. Optionally add `minPrice` or `maxPrice`.
7. Keep proxy enabled for best reliability.
8. Start the run.
9. Download the dataset as JSON, CSV, Excel, XML, or RSS.

### Input configuration

| Setting | JSON key | What it does |
| --- | --- | --- |
| Shopping queries | `queries` | Product names, category phrases, SKUs, model numbers, or comparison keywords such as `coffee maker`, `running shoes`, or `4k monitor`. |
| Maximum results | `maxItems` | Total saved product cards across all queries. If you enter 3 queries and set `maxItems` to 60, the run stops after 60 total records. |
| Country | `country` | Two-letter country code such as `US`, `GB`, `CA`, `AU`, or `DE`. Google Shopping availability and ranking vary by region. |
| Language | `language` | Google interface language for snippets, such as `en`, `es`, `de`, or `fr`. |
| Minimum price | `minPrice` | Optional post-extraction filter that keeps products at or above this numeric price. |
| Maximum price | `maxPrice` | Optional post-extraction filter that keeps products at or below this numeric price. |
| Proxy configuration | `proxyConfiguration` | Optional proxy settings. Google may return interstitial or rate-limit pages without a suitable proxy on larger runs. |

### Tips for better results

- **Use specific product keywords:** model names and SKU-like phrases work better for merchant-level price comparison.
- **Use category keywords for landscape research:** broader phrases are useful when you want a market overview.
- **Start small:** test a few queries before scheduling larger recurring jobs.
- **Keep batches focused:** compare one region and product type at a time.
- **Use timestamps:** compare the same query over days or weeks.
- **Avoid vague one-word terms:** they often return mixed products that are harder to analyze.

### Common workflows

- **Price monitoring:** schedule the same query every day and compare `priceValue` by title and merchant.
- **Competitive research:** run category terms and review which brands and stores appear most often.
- **Assortment discovery:** search model names and collect alternative sellers or similar products.
- **Agency reporting:** export CSV files for client dashboards and shopping landscape reports.
- **Product launch research:** compare titles, ratings, review counts, and shipping offers for adjacent products.

### Integrations

- **Google Sheets:** review product cards manually or share quick reports.
- **BigQuery or Snowflake:** store long-term price intelligence and category snapshots.
- **Make or Zapier:** create no-code scheduled alerts.
- **Apify webhooks:** notify your app when a run finishes.
- **Apify API:** trigger runs from internal dashboards.
- **CSV exports:** support spreadsheet-based reporting.

### API usage

#### Node.js

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/google-shopping-results-scraper').call({
  queries: ['coffee maker'],
  country: 'US',
  language: 'en',
  maxItems: 20
});
console.log(run.defaultDatasetId);
```

#### Python

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/google-shopping-results-scraper').call(run_input={
    'queries': ['coffee maker'],
    'country': 'US',
    'language': 'en',
    'maxItems': 20,
})
print(run['defaultDatasetId'])
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~google-shopping-results-scraper/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"queries":["coffee maker"],"country":"US","language":"en","maxItems":20}'
```

### MCP and AI agents

You can connect this actor to AI tools through the official Apify MCP server.

Use the MCP server URL with the actor tool enabled:

```text
https://mcp.apify.com?tools=fetch_cat/google-shopping-results-scraper
```

Add it in Claude Code:

```bash
claude mcp add apify-google-shopping "https://mcp.apify.com?tools=fetch_cat/google-shopping-results-scraper"
```

Or configure an MCP client with JSON:

```json
{
  "mcpServers": {
    "apify-google-shopping": {
      "url": "https://mcp.apify.com?tools=fetch_cat/google-shopping-results-scraper"
    }
  }
}
```

The default Apify MCP server can search and run Actors. The focused URL exposes only this Actor to clients that support tool-scoped MCP connections.

Example prompts:

- "Search Google Shopping for coffee makers in the US and summarize price ranges."
- "Compare merchants for running shoes and list products with ratings above 4.5."
- "Find the first 20 Google Shopping results for wireless mouse and export titles and prices."

### Scheduling

Use Apify schedules for recurring price snapshots.

Daily runs are useful for fast-changing categories.

Weekly runs are often enough for market landscape reports.

Keep `maxItems` aligned with the number of products you actually review.

### Data quality notes

Google Shopping layouts and snippets can vary by country, language, query, and time.

Some cards may not expose every field.

`productUrl` and `imageUrl` can be `null` when Google renders those values through an interactive viewer instead of a direct visible link.

The actor saves fields only when they are visible or parseable from the result card.

### Troubleshooting

#### Why did my run return no results?

Check that the query has Google Shopping results in the selected country.

Try a lower `maxItems` value.

Keep proxy enabled.

If Google returns an interstitial, wait and retry with a smaller batch.

#### Why are some fields null?

Google does not show every field on every card.

For example, some results do not show ratings, reviews, shipping, images, or direct product links.

#### Why do prices differ by location?

Google Shopping ranking and merchant availability are localized.

Use the same `country` and `language` values when comparing repeated runs.

### Limits

This actor is intended for public Google Shopping result cards.

It does not log in to Google.

It does not open merchant checkout pages.

It does not scrape private account data.

It does not guarantee identical output for every locale because Google changes layouts frequently.

### Legality

This actor extracts publicly visible search-result information.

You are responsible for using the data lawfully and respecting applicable terms, privacy rules, and platform policies.

Do not use scraped data for prohibited, deceptive, or privacy-invasive purposes.

Consult legal counsel if your use case has regulatory requirements.

### Related actors

Explore related actors from `fetch_cat` for ecommerce, search, and product intelligence workflows:

- [Shopify Products Scraper](https://apify.com/fetch_cat/shopify-products-scraper)
- [AliExpress Products Scraper](https://apify.com/fetch_cat/aliexpress-products-scraper)
- [Walmart Products Scraper](https://apify.com/fetch_cat/walmart-products-scraper)
- [Bing Search Results Scraper](https://apify.com/fetch_cat/bing-search-results-scraper)
- [Website Contact Finder](https://apify.com/fetch_cat/website-contact-finder)

### FAQ

#### Can I scrape multiple keywords in one run?

Yes. Add multiple values to `queries` and set a total `maxItems` cap.

#### Can I target another country?

Yes. Set `country` to a two-letter code such as `GB`, `CA`, `AU`, or `DE`.

#### Can I filter by price?

Yes. Use `minPrice` and `maxPrice` to filter extracted results after the page is parsed.

#### Can I schedule monitoring?

Yes. Use Apify schedules and export each run's dataset for trend analysis.

#### Does it scrape product detail pages?

No. Version 0.1 focuses on result cards because they are the safest and fastest unit for search monitoring.

#### What happens if Google changes the page?

The actor includes defensive parsing and clear failure messages. If the layout changes significantly, rerun with a small query and report the issue.

### Changelog

- 2026-07-02 - Change: Fixed German Google Shopping example runs to return localized product results (APIA-1163)

- 2026-07-02 - Feature: Added ready-to-run Google Shopping example tasks on the Apify Store (APIA-1154)

- 2026-07-02 - Feature: Launched Google Shopping Results Scraper on Apify Store (APIA-1151)
  - This actor is now publicly available at https://apify.com/fetch\_cat/google-shopping-results-scraper.

#### 0.1

Initial version for Google Shopping keyword result extraction.

### Support

If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.

# Actor input Schema

## `queries` (type: `array`):

Google Shopping keywords to search. Use product names, SKUs, categories, or comparison terms.

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

Total number of Google Shopping product results to save across all queries.

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

Two-letter Google Shopping country/region code, for example US, GB, CA, AU, or DE.

## `language` (type: `string`):

Google interface language code, for example en, es, de, fr, or it.

## `minPrice` (type: `number`):

Optional numeric lower price filter applied after extraction.

## `maxPrice` (type: `number`):

Optional numeric upper price filter applied after extraction.

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

Google blocks most direct traffic. The default uses Apify's GOOGLE\_SERP proxy group; keep it enabled unless you provide an equivalent proxy.

## Actor input object example

```json
{
  "queries": [
    "coffee maker"
  ],
  "maxItems": 20,
  "country": "US",
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "GOOGLE_SERP"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "coffee maker"
    ],
    "country": "US",
    "language": "en",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "GOOGLE_SERP"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/google-shopping-results-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 = {
    "queries": ["coffee maker"],
    "country": "US",
    "language": "en",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["GOOGLE_SERP"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/google-shopping-results-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 '{
  "queries": [
    "coffee maker"
  ],
  "country": "US",
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "GOOGLE_SERP"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call fetch_cat/google-shopping-results-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Shopping Results Scraper",
        "description": "Extract Google Shopping product results by keyword, country, language, price range, and max item count for price and merchant research.",
        "version": "0.1",
        "x-build-id": "ePaR3zfNGZijpyXGk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fetch_cat~google-shopping-results-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fetch_cat-google-shopping-results-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/fetch_cat~google-shopping-results-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fetch_cat-google-shopping-results-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/fetch_cat~google-shopping-results-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fetch_cat-google-shopping-results-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",
                "required": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Shopping queries",
                        "minItems": 1,
                        "type": "array",
                        "description": "Google Shopping keywords to search. Use product names, SKUs, categories, or comparison terms.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Total number of Google Shopping product results to save across all queries.",
                        "default": 20
                    },
                    "country": {
                        "title": "Country code",
                        "minLength": 2,
                        "maxLength": 2,
                        "type": "string",
                        "description": "Two-letter Google Shopping country/region code, for example US, GB, CA, AU, or DE.",
                        "default": "US"
                    },
                    "language": {
                        "title": "Language code",
                        "type": "string",
                        "description": "Google interface language code, for example en, es, de, fr, or it.",
                        "default": "en"
                    },
                    "minPrice": {
                        "title": "Minimum price",
                        "minimum": 0,
                        "type": "number",
                        "description": "Optional numeric lower price filter applied after extraction."
                    },
                    "maxPrice": {
                        "title": "Maximum price",
                        "minimum": 0,
                        "type": "number",
                        "description": "Optional numeric upper price filter applied after extraction."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Google blocks most direct traffic. The default uses Apify's GOOGLE_SERP proxy group; keep it enabled unless you provide an equivalent proxy.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "GOOGLE_SERP"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
