# Glovo Scraper (`solidcode/glovo-scraper`) Actor

\[💰 $2.0 / 1K] Extract Glovo store listings and product/menu data across restaurants, groceries, pharmacy & beauty, and shops. Scrape any city by name or paste store links to get ratings, delivery fees, ETAs, promotions, and prices.

- **URL**: https://apify.com/solidcode/glovo-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **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.

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

## Glovo Scraper

Pull store listings and full menus from Glovo across every city the platform operates in — restaurants, grocery stores, pharmacies, and retail shops, complete with ratings, delivery fees, ETAs, promotions, and per-item prices. Built for food-delivery market analysts, q-commerce competitive-intelligence teams, and restaurant-supply lead generators who need fresh Glovo catalog and pricing data without collecting it merchant by merchant.

### Why This Scraper?

- **4 store verticals in one actor** — restaurants, groceries, pharmacy & beauty, and retail shops, all reachable from a single city + vertical picker. No raw category paths to memorize.
- **Full menu and catalog extraction** — every product on a store comes back with name, description, numeric price, display price, currency, image URL, and the menu section it sits in, each linked to its parent store.
- **Store economics most scrapers skip** — base and effective delivery fee, a free-delivery flag, delivery ETA, distance, rating percentage, vote count, and live open/closed availability on every store row.
- **Top-rated and new-store badges** — `isTopRated` and `isNew` flags plus active promotions (type, benefit, description), so you can spot rising merchants and live deals at a glance.
- **9 interface languages** — English, Spanish, Portuguese, Italian, French, German, Polish, Ukrainian, and Romanian for localized store and product names that match the local market.
- **Cuisine and sub-type filtering** — narrow a vertical to a niche like burgers, pizza, or sushi to build a focused competitor set instead of the whole city.
- **Direct store-link mode** — paste specific Glovo store links and the actor scrapes exactly those merchants, products included, for precise competitor tracking.
- **Grocery deep-catalog drilldown** — walks subcategory aisles to pull thousands of items from large supermarkets, sampling the top aisles up to roughly 3,000 products per store to keep runs predictable.

### Use Cases

**Market Research**
- Map every restaurant, grocer, and pharmacy operating in a Glovo city
- Compare delivery-fee structures and ETAs across an entire vertical
- Track which merchants carry top-rated or new-store badges in a market

**Competitive Intelligence**
- Watch a named competitor's full menu and prices with direct store links
- Benchmark a chain's offering across multiple cities and languages
- Detect new entrants in a vertical from the `isNew` badge

**Price Monitoring**
- Track item-level prices over time for a basket of grocery products
- Compare the same dish or product across competing stores in one city
- Flag delivery-fee or free-delivery-threshold changes between runs

**Menu & Catalog Aggregation**
- Build a unified product feed across dozens of stores in a vertical
- Power a price-comparison or aggregator site with structured catalog rows
- Localize the same catalog into 9 languages for multi-market listings

**Lead Generation for Restaurant Suppliers**
- Build outreach lists of restaurants by cuisine sub-type and city
- Prioritize prospects by rating, vote count, and promotion activity
- Enrich a target list with store links, ETAs, and delivery economics

### Getting Started

#### Discover a Vertical in One City

The simplest run — all restaurants in Barcelona, store listings only:

```json
{
    "city": "Barcelona",
    "storeCategory": "food",
    "maxStores": 50
}
````

#### Filter to a Cuisine, Localized

Narrow Madrid restaurants to burger spots and return Spanish names:

```json
{
    "city": "Madrid",
    "storeCategory": "food",
    "categoryFilters": ["burgers"],
    "language": "es",
    "maxStores": 30
}
```

#### Specific Stores With Full Menus

Paste exact store links and pull every product for each:

```json
{
    "storeUrls": [
        "https://glovoapp.com/en/es/barcelona/stores/vicio-barcelona"
    ],
    "includeProducts": true
}
```

#### Full Vertical Sweep With Products

Scrape every grocery store in a city and collect each catalog:

```json
{
    "city": "Lisbon",
    "storeCategory": "groceries",
    "includeProducts": true,
    "maxStores": 20,
    "language": "pt"
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `city` | string | `"Barcelona"` | The Glovo city to scrape, by name (e.g. Barcelona, Lisbon, Madrid, Warsaw). Used to find the right country and stores. Leave the store links empty to discover stores in this city. |
| `storeCategory` | string | `"all"` | Which kind of stores to collect: All verticals, Food & Restaurants, Groceries, Pharmacy & Beauty, or Shops. "All verticals" covers everything Glovo offers in the city. |
| `categoryFilters` | string\[] | `[]` | Optionally narrow a vertical to specific cuisines or sub-types, one per line (e.g. `burgers`, `pizza`, `sushi`). Leave empty to scrape the whole vertical. |
| `storeUrls` | string\[] | `[]` | Paste specific Glovo store links to scrape exactly those stores, one per line. Products are always collected for these. Leave empty to discover stores from the city and vertical above. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeProducts` | boolean | `false` | Also collect the full product or menu list for each store. Restaurants and normal stores return their whole menu in full. Very large grocery and quick-commerce stores are **sampled** — the actor walks their top aisles to a safe depth and stops at roughly 3,000 products per store — so a big hypermarket's catalog may be partial. |
| `maxStores` | integer | `50` | How many stores to keep from this run. Each vertical returns up to about **50 stores** (Glovo's public listing limit), so a single vertical can't exceed ~50 no matter what you set here. To collect more, choose **All verticals** (each vertical adds its own ~50) or add several **Sub-type Filters** (each filter pulls its own set). Setting `0` removes our cap but not the ~50-per-vertical source limit. Start with 20–50 to test; if you turn on products, each store can add many extra rows. |
| `language` | string | `"en"` | Language for store and product names and descriptions: English, Spanish, Portuguese, Italian, French, German, Polish, Ukrainian, or Romanian. |

### Output

Every row carries a `recordType` field — `store` or `product` — so you can filter the dataset cleanly. Product rows are present only when **Include products** is enabled or when store links are supplied.

#### Store (`recordType: "store"`)

```json
{
    "recordType": "store",
    "title": "VICIO",
    "slug": "vicio-barcelona",
    "url": "https://glovoapp.com/en/es/barcelona/stores/vicio-barcelona",
    "rating": 93,
    "votes": "500+",
    "deliveryFeeBase": 1.99,
    "deliveryFeeEffective": 0,
    "isFreeDelivery": true,
    "currency": "EUR",
    "eta": "30-40 min",
    "distance": "1.2 km",
    "availability": "OPEN",
    "promotions": [
        { "type": "FREE_DELIVERY", "benefit": "Free delivery", "description": "Free delivery on orders over 15€" }
    ],
    "tag": "Burgers",
    "isTopRated": true,
    "isNew": false,
    "category": "food_1",
    "city": "Barcelona"
}
```

##### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"store"` |
| `title` | string | Store display name |
| `slug` | string | URL-friendly store identifier |
| `url` | string | Full Glovo store page link |
| `tag` | string | Store category tag (e.g. Burgers, Sushi) |
| `category` | string | The vertical the store was found under |
| `city` | string | City the store belongs to |

##### Delivery & Economics

| Field | Type | Description |
|-------|------|-------------|
| `rating` | number | Rating percentage (e.g. `93`) |
| `votes` | string | Number of ratings (e.g. `"500+"` or `"396"`) |
| `deliveryFeeBase` | number | Base delivery fee before discounts |
| `deliveryFeeEffective` | number | Effective fee after discounts (`0` when free) |
| `isFreeDelivery` | boolean | True when delivery is free |
| `currency` | string | Currency code for fees (EUR, PLN, etc.) |
| `eta` | string | Estimated delivery time (e.g. `"30-40 min"`) |
| `distance` | string | Distance from the city location |

##### Status & Badges

| Field | Type | Description |
|-------|------|-------------|
| `availability` | string | `"OPEN"` or `"CLOSED"` |
| `promotions` | object\[] | Active promotions, each `{ type, benefit, description }` |
| `isTopRated` | boolean | Top-rated badge |
| `isNew` | boolean | New-store badge |

#### Product (`recordType: "product"`)

```json
{
    "recordType": "product",
    "storeSlug": "vicio-barcelona",
    "storeName": "VICIO",
    "name": "Doble Bacon",
    "description": "Two smashed patties, bacon, cheddar and house sauce",
    "price": 11.5,
    "currency": "EUR",
    "priceDisplay": "11,50 €",
    "productId": "1234567",
    "categoryName": "Burgers",
    "imageUrl": "https://images.glovoapp.com/...",
    "city": "Barcelona"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"product"` |
| `storeSlug` | string | Parent store identifier (join key to its store row) |
| `storeName` | string | Parent store display name |
| `name` | string | Product or menu item name |
| `description` | string | Product description |
| `price` | number | Numeric price |
| `currency` | string | Currency code (EUR, etc.) |
| `priceDisplay` | string | Formatted price (e.g. `"11,50 €"`) |
| `productId` | string | Glovo product identifier |
| `categoryName` | string | Menu section the product sits in |
| `imageUrl` | string | Direct product image link |
| `city` | string | City context |

### Tips for Best Results

- **Maximize store coverage with breadth, not a bigger `maxStores`.** A single vertical returns up to about 50 stores — that's Glovo's public listing limit, so raising `maxStores` past 50 on one vertical won't add more. To collect more of a city, choose **All verticals** (each vertical adds its own ~50) or add several cuisine / sub-type filters (each filter pulls its own set of stores).
- **Expect a sample, not a full catalog, on the biggest grocery stores.** Restaurants and normal shops return their complete menu. Very large grocery and quick-commerce stores are sampled across their top aisles up to about 3,000 products per store, so a hypermarket's catalog may be partial — that keeps runs fast and predictable.
- **Leave products off when you only need store listings.** Both store rows and product rows count toward your results — `includeProducts` can multiply a run many times over, especially for grocery stores. Keep it off for a fast, cheap store census, and turn it on only when you need item-level data.
- **Control cost with `maxStores`.** When products are on, set a modest cap (10–30) so a single large grocery catalog doesn't balloon the result count. A grocery store can add several thousand product rows on its own.
- **Use store-link mode for precise competitor tracking.** Paste exact store links to scrape just the merchants you care about — products are always collected for those, so you get full menus without sweeping a whole vertical.
- **Match the language to the local market.** Set `language` to the country's language (e.g. `es` for Spain, `pt` for Portugal) so product names, descriptions, and menu sections read the way local customers see them.
- **Narrow with cuisine filters.** Adding `categoryFilters` like `burgers` or `sushi` trims a busy vertical down to a focused, comparable set of competitors.
- **Start small to validate.** Run 20–50 stores first to confirm the city, vertical, and language are right before scaling up to a full sweep.
- **Filter by `recordType` downstream.** Split the dataset into a clean store table and a product table using the `recordType` field, then join products back to stores on `storeSlug`.

### Pricing

**$2.00 per 1,000 results** — flat pay-per-result. No compute charges — you only pay per result returned.

| Results | Estimated Cost |
|---------|----------------|
| 100 | $0.20 |
| 1,000 | $2.00 |
| 10,000 | $20.00 |
| 100,000 | $200.00 |

A "result" is any row in the output dataset — a store or a product. Turning on full menu and catalog extraction adds product rows (many per store), so use `maxStores` and the products toggle to keep your result count where you want it.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom workflows on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate market research, competitive intelligence, price monitoring, and lead generation. You are responsible for complying with applicable laws and Glovo's terms of service, including making reasonable-rate requests and respecting how the data may be used. Do not use extracted data for spam, harassment, or any illegal purpose.

# Actor input Schema

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

The Glovo city to scrape, by name (e.g. Barcelona, Lisbon, Madrid, Warsaw). We use this to find the right country and stores. Leave the store links empty to discover stores in this city.

## `storeCategory` (type: `string`):

Which kind of stores to collect in the chosen city. 'All verticals' covers everything Glovo offers there.

## `categoryFilters` (type: `array`):

Optionally narrow a vertical to specific cuisines or sub-types, one per line (e.g. 'burgers', 'pizza', 'sushi'). Leave empty to scrape the whole vertical.

## `storeUrls` (type: `array`):

Paste specific Glovo store links to scrape exactly those stores, one per line (e.g. a 'glovoapp.com/.../stores/...' link). Products are always collected for these. Leave empty to discover stores from the city and vertical above.

## `includeProducts` (type: `boolean`):

Also collect the full product or menu list for each store. This adds a lot more results and takes longer. Restaurants and normal stores return their whole menu in full. Very large grocery and quick-commerce stores are sampled instead of fully listed: we walk their top aisles to a safe depth and stop at roughly 3,000 products per store, so a big hypermarket's catalog may be partial.

## `maxStores` (type: `integer`):

How many stores to keep from this run. Each store vertical (Food, Groceries, etc.) returns up to about 50 stores — that is Glovo's public listing limit, so a single vertical can never give you more than ~50 no matter what you set here. To get broader coverage, choose 'All verticals' (each vertical adds its own ~50) or add several Sub-type Filters (each filter pulls its own set of stores). Setting this to 0 removes our own cap, but the ~50-per-vertical source limit still applies. Tip: start with 20-50 to test. If you turn on products, each store can add many extra rows.

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

Language for store and product names and descriptions.

## Actor input object example

```json
{
  "city": "Barcelona",
  "storeCategory": "all",
  "categoryFilters": [],
  "storeUrls": [],
  "includeProducts": false,
  "maxStores": 50,
  "language": "en"
}
```

# Actor output Schema

## `stores` (type: `string`):

Table of stores with rating, votes, delivery fee, ETA, distance, availability, and promotions.

## `products` (type: `string`):

Product / menu item rows with name, description, price, and parent store (only present when 'Include products' is enabled or store links are supplied).

# 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 = {
    "city": "Barcelona",
    "storeCategory": "all",
    "categoryFilters": [],
    "storeUrls": [],
    "includeProducts": false,
    "maxStores": 50,
    "language": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/glovo-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 = {
    "city": "Barcelona",
    "storeCategory": "all",
    "categoryFilters": [],
    "storeUrls": [],
    "includeProducts": False,
    "maxStores": 50,
    "language": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/glovo-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 '{
  "city": "Barcelona",
  "storeCategory": "all",
  "categoryFilters": [],
  "storeUrls": [],
  "includeProducts": false,
  "maxStores": 50,
  "language": "en"
}' |
apify call solidcode/glovo-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Glovo Scraper",
        "description": "[💰 $2.0 / 1K] Extract Glovo store listings and product/menu data across restaurants, groceries, pharmacy & beauty, and shops. Scrape any city by name or paste store links to get ratings, delivery fees, ETAs, promotions, and prices.",
        "version": "1.0",
        "x-build-id": "5MHTexvxaQjY4B0f7"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~glovo-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-glovo-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/solidcode~glovo-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-glovo-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/solidcode~glovo-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-glovo-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": {
                    "city": {
                        "title": "City",
                        "type": "string",
                        "description": "The Glovo city to scrape, by name (e.g. Barcelona, Lisbon, Madrid, Warsaw). We use this to find the right country and stores. Leave the store links empty to discover stores in this city.",
                        "default": "Barcelona"
                    },
                    "storeCategory": {
                        "title": "Vertical",
                        "enum": [
                            "all",
                            "food",
                            "groceries",
                            "pharmacy-beauty",
                            "shops"
                        ],
                        "type": "string",
                        "description": "Which kind of stores to collect in the chosen city. 'All verticals' covers everything Glovo offers there.",
                        "default": "all"
                    },
                    "categoryFilters": {
                        "title": "Sub-type Filters (optional)",
                        "type": "array",
                        "description": "Optionally narrow a vertical to specific cuisines or sub-types, one per line (e.g. 'burgers', 'pizza', 'sushi'). Leave empty to scrape the whole vertical.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "storeUrls": {
                        "title": "Store Links (optional)",
                        "type": "array",
                        "description": "Paste specific Glovo store links to scrape exactly those stores, one per line (e.g. a 'glovoapp.com/.../stores/...' link). Products are always collected for these. Leave empty to discover stores from the city and vertical above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeProducts": {
                        "title": "Include products / menu items",
                        "type": "boolean",
                        "description": "Also collect the full product or menu list for each store. This adds a lot more results and takes longer. Restaurants and normal stores return their whole menu in full. Very large grocery and quick-commerce stores are sampled instead of fully listed: we walk their top aisles to a safe depth and stop at roughly 3,000 products per store, so a big hypermarket's catalog may be partial.",
                        "default": false
                    },
                    "maxStores": {
                        "title": "Max Stores",
                        "minimum": 0,
                        "type": "integer",
                        "description": "How many stores to keep from this run. Each store vertical (Food, Groceries, etc.) returns up to about 50 stores — that is Glovo's public listing limit, so a single vertical can never give you more than ~50 no matter what you set here. To get broader coverage, choose 'All verticals' (each vertical adds its own ~50) or add several Sub-type Filters (each filter pulls its own set of stores). Setting this to 0 removes our own cap, but the ~50-per-vertical source limit still applies. Tip: start with 20-50 to test. If you turn on products, each store can add many extra rows.",
                        "default": 50
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en",
                            "es",
                            "pt",
                            "it",
                            "fr",
                            "de",
                            "pl",
                            "uk",
                            "ro"
                        ],
                        "type": "string",
                        "description": "Language for store and product names and descriptions.",
                        "default": "en"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
