# AutoScout24 All-Country Scraper (`fayoussef/autoscout24`) Actor

Our autoscout24 scraper makes it simple to collect listings at scale and in all countries. Works on autoscout24.de, .at, .fr, .it, .es, .nl, .be, .lu and .com

- **URL**: https://apify.com/fayoussef/autoscout24.md
- **Developed by:** [youssef farhan](https://apify.com/fayoussef) (community)
- **Categories:** Automation, Lead generation, Integrations
- **Stats:** 30 total users, 3 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## AutoScout24 Scraper — Extract Car Listings & Dealer Data Across Europe

Scrape AutoScout24 car listings from any European AutoScout24 domain and extract 50+ structured fields per vehicle — price, full specs, mileage, categorized equipment, GPS coordinates, dealer contact details, CO₂ data, and every photo URL. Built for car dealers, automotive market researchers, leasing firms, and data aggregators who need clean, cross-border vehicle data from Europe's largest car marketplace. At $0.50 per 1,000 results it is the lowest-priced AutoScout24 scraper on the Apify Store.

Works on **autoscout24.de, .at, .fr, .it, .es, .nl, .be, .lu and .com** — paste any search URL and the actor auto-detects the country and language.

### What you get

**Listing info**
- `listing_id`, `listing_url` — unique ID and canonical localized URL
- `status` — Active or Inactive
- `created_at` — ad creation timestamp
- `offer_type` — Used, New, or Demo
- `ad_tier`, `is_mia` — ad placement metadata

**Pricing**
- `price` — numeric EUR value
- `price_formatted` — display string (e.g. "€ 9,200")
- `price_negotiable`, `is_final_price`, `vat_deductible` — VAT and negotiation flags

**Vehicle specs**
- `make`, `model`, `model_version`
- `body_type`, `body_color`, `paint_type`, `vehicle_type`
- `transmission`, `drive_train`, `fuel_type`, `fuel_type_formatted`
- `power_kw`, `power_hp`, `displacement_ccm`, `cylinders`, `gears`
- `doors`, `seats`, `weight_kg`
- `co2_emission`, `has_particle_filter`
- `fuel_consumption_combined`, `fuel_consumption_formatted`

**History & condition**
- `first_registration`, `first_registration_raw`
- `mileage_km`, `mileage_formatted`
- `had_accident`, `full_service_history`, `non_smoking`, `new_inspection`
- `previous_owners`, `legal_category`

**Equipment (categorized)**
- `equipment_comfortAndConvenience`, `equipment_safetyAndSecurity`, `equipment_entertainmentAndMedia`, `equipment_extras` — each a JSON array with a matching `_count`
- `total_equipment_count` — total options across all categories

**Location**
- `country`, `city`, `zip`, `street`
- `latitude`, `longitude` — exact GPS coordinates

**Seller / Dealer**
- `seller_id`, `seller_type`, `is_dealer`
- `seller_company`, `seller_contact_name`
- `seller_phone`, `seller_phone_raw` — formatted and dial-ready
- `dealer_homepage`, `dealer_region`, `warranty_exists`, `leads_range`

**Media**
- `main_image` — primary photo URL
- `all_images` — full array of photo URLs
- `image_count`, `has_360_view`

**Description**
- `description` — full listing text, HTML stripped

### Sample output

```json
{
  "listing_id": "53a8e594-eb3a-4871-9252-1e37b6d29816",
  "listing_url": "https://www.autoscout24.com/offers/53a8e594-eb3a-4871-9252-1e37b6d29816",
  "status": "Active",
  "created_at": "2025-09-30T12:17:46.407Z",
  "make": "BMW",
  "model": "114",
  "model_version": "114i CarPlay*Sièges Chauffants*Garantie",
  "body_type": "Sedan",
  "body_color": "White",
  "first_registration": "04/2014",
  "mileage_km": 136130,
  "mileage_formatted": "136,130 km",
  "power_kw": 75,
  "power_hp": 102,
  "transmission": "Manual",
  "drive_train": "Rear Wheel Drive",
  "fuel_type_formatted": "Gasoline",
  "doors": 5,
  "seats": 5,
  "had_accident": false,
  "full_service_history": true,
  "price": 9200,
  "price_formatted": "€ 9,200",
  "vat_deductible": false,
  "total_equipment_count": 44,
  "equipment_comfortAndConvenience": ["Cruise control", "Navigation system"],
  "equipment_entertainmentAndMedia": ["Apple CarPlay", "Bluetooth"],
  "country": "BE",
  "city": "Tubize",
  "zip": "1480",
  "latitude": 50.69989,
  "longitude": 4.20648,
  "seller_company": "Urban Car",
  "seller_phone": "+32 (0)474 - 734924",
  "is_dealer": true,
  "warranty_exists": true,
  "image_count": 15,
  "main_image": "https://prod.pictures.autoscout24.net/listing-images/53a8e594.jpg/1280x960.webp"
}
````

### Use cases

- ✓ Used car dealers tracking competitor pricing by make, model, and country across AutoScout24's European coverage
- ✓ Automotive market researchers building EUR-denominated price indices for new and used vehicles
- ✓ Leasing and fleet companies monitoring residual values and comparable listings in Germany, France, and Italy
- ✓ Data aggregators feeding pan-European vehicle comparison and valuation platforms
- ✓ Insurance and finance teams appraising vehicle portfolios against live market data
- ✓ Analysts studying equipment prevalence, fuel-type trends, and CO₂ distribution across the market

### Pricing

| Event | Price | Real example |
|---|---|---|
| Per 1,000 results | $0.50 | 20,000 listings across Germany & France ≈ **$10.00** |

The first page of results is **free** — test the output before any paid run. No credit card needed to start.

### How it works

- **Input** one or more AutoScout24 search URLs (any make, model, country, price, or year filter).
- Set `start_page` and `end_page` to scrape an exact range, or leave them empty to scrape every page.
- Up to 100 concurrent workers fetch listing and detail pages in parallel for fast runs.
- Duplicate detection and stagnation checks stop the run cleanly when no new listings appear.
- Progress is saved to a **resumable state key** — interrupted runs pick up where they stopped.
- **Output** lands in the Apify dataset; export as JSON, CSV, or Excel from the UI or REST API.
- Schedule daily or weekly runs with Apify's built-in scheduler; optional Telegram alert on completion.

### Why this scraper

- **50+ fields per listing** — the most complete AutoScout24 dataset on the Store, including categorized equipment, GPS coordinates, CO₂ data, and VAT flags.
- **Lowest price on the Store** at $0.50/1,000 results — competing actors charge 2–4× more.
- **Equipment pre-categorized** into Comfort, Safety, Entertainment, and Extras with item counts — usable for filtering or scoring with no extra parsing.
- **Resumable runs** — long scrapes across large markets never lose progress on restart.
- **Auto multi-locale** — one actor handles every European AutoScout24 domain; no per-country setup.

### Input example

```json
{
  "start_urls": [
    {"url": "https://www.autoscout24.de/lst/bmw/1er?atype=C&desc=1&sort=age"},
    {"url": "https://www.autoscout24.fr/lst/audi/a3?atype=C&sort=price"}
  ],
  "start_page": 1,
  "end_page": 20
}
```

Omit `end_page` to scrape all available pages for each search.

### FAQ

**Which AutoScout24 countries are supported?**
All of them. Paste a search URL from autoscout24.de, .at, .fr, .it, .es, .nl, .be, .lu, or .com — the actor detects the domain and language automatically.

**Can I scrape one specific dealer's inventory?**
Yes. Open the dealer page, find their customer ID (`cId`), and pass a search URL like `https://www.autoscout24.de/lst?cId=5742&sort=age`. The dealer's full stock is then scraped page by page. Dealer (`/haendler/...`) profile URLs are not accepted directly — use the `cId` search URL instead.

**Does it handle anti-bot blocking?**
Yes. Runs route through Apify residential proxies by default, with automatic retries and exponential backoff. You can also supply your own proxy URL.

**What output formats are available?**
JSON, CSV, and Excel — from the Apify dataset UI and the REST API.

**Are equipment lists arrays or strings?**
Arrays. Each category (`equipment_comfortAndConvenience`, etc.) is a JSON array with a matching `_count` field for easy filtering.

**How fresh is the data?**
Live. Every run fetches current listings directly from AutoScout24 at request time — nothing is cached.

**Does it support scheduling and resuming?**
Yes. Use Apify's scheduler for automated daily or weekly runs; resumable state means interrupted runs continue without re-scraping.

**Can I use it via API or MCP?**
Yes — callable via the Apify REST API and as an MCP server for AI agents (Claude, ChatGPT, Cursor). See below.

### Use via API or MCP

Call this actor programmatically via the Apify REST API:

```
POST https://api.apify.com/v2/acts/fayoussef~autoscout24/runs?token=YOUR_TOKEN
```

Or connect it as an MCP server for AI agents (Claude, ChatGPT, Cursor):

```
https://mcp.apify.com/actors/fayoussef~autoscout24
```

Full API docs: <https://docs.apify.com/api/v2>

### Need a custom scraper?

Need different fields, AutoScout24 combined with Mobile.de or other portals, or a fully managed pipeline into your CRM? Visit [automationbyexperts.com](https://automationbyexperts.com) for custom builds, retainers, and data-as-a-service.

# Actor input Schema

## `start_urls` (type: `array`):

URLs to start with

## `start_page` (type: `integer`):

Page number to start scraping from (1-indexed). Leave empty to start from page 1.

## `end_page` (type: `integer`):

Page number to stop scraping at (1-indexed, inclusive). Leave empty to scrape all available pages.

## `max_concurrency` (type: `integer`):

Maximum number of concurrent tasks or threads to run

## `proxy_url` (type: `string`):

Provide your own proxy URL to reduce errors and avoid getting banned. Leave empty if you want to use Apify proxies instead.

## Actor input object example

```json
{
  "start_urls": [
    {
      "url": "https://www.autoscout24.com/lst/bmw/1-series-(all)/bt_compact?atype=C&cy=B&damaged_listing=exclude&desc=1&powertype=kw&search_id=11w9zrzgw35&sort=age&ustate=N%2CU"
    }
  ],
  "max_concurrency": 50
}
```

# Actor output Schema

## `results` (type: `string`):

Autoscout24 Scraper

# 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 = {
    "start_urls": [
        {
            "url": "https://www.autoscout24.com/lst/bmw/1-series-(all)/bt_compact?atype=C&cy=B&damaged_listing=exclude&desc=1&powertype=kw&search_id=11w9zrzgw35&sort=age&ustate=N%2CU"
        }
    ],
    "proxy_url": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("fayoussef/autoscout24").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 = {
    "start_urls": [{ "url": "https://www.autoscout24.com/lst/bmw/1-series-(all)/bt_compact?atype=C&cy=B&damaged_listing=exclude&desc=1&powertype=kw&search_id=11w9zrzgw35&sort=age&ustate=N%2CU" }],
    "proxy_url": "",
}

# Run the Actor and wait for it to finish
run = client.actor("fayoussef/autoscout24").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 '{
  "start_urls": [
    {
      "url": "https://www.autoscout24.com/lst/bmw/1-series-(all)/bt_compact?atype=C&cy=B&damaged_listing=exclude&desc=1&powertype=kw&search_id=11w9zrzgw35&sort=age&ustate=N%2CU"
    }
  ],
  "proxy_url": ""
}' |
apify call fayoussef/autoscout24 --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AutoScout24 All-Country Scraper",
        "description": "Our autoscout24 scraper makes it simple to collect listings at scale and in all countries. Works on autoscout24.de, .at, .fr, .it, .es, .nl, .be, .lu and .com",
        "version": "0.0",
        "x-build-id": "1Rn6lmOtKW7xsXpep"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fayoussef~autoscout24/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fayoussef-autoscout24",
                "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/fayoussef~autoscout24/runs": {
            "post": {
                "operationId": "runs-sync-fayoussef-autoscout24",
                "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/fayoussef~autoscout24/run-sync": {
            "post": {
                "operationId": "run-sync-fayoussef-autoscout24",
                "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": [
                    "start_urls"
                ],
                "properties": {
                    "start_urls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "URLs to start with",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "start_page": {
                        "title": "Start Page",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Page number to start scraping from (1-indexed). Leave empty to start from page 1."
                    },
                    "end_page": {
                        "title": "End Page",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Page number to stop scraping at (1-indexed, inclusive). Leave empty to scrape all available pages."
                    },
                    "max_concurrency": {
                        "title": "Maximum Concurrency",
                        "type": "integer",
                        "description": "Maximum number of concurrent tasks or threads to run",
                        "default": 50
                    },
                    "proxy_url": {
                        "title": "Custom Proxy URL (Recommended)",
                        "type": "string",
                        "description": "Provide your own proxy URL to reduce errors and avoid getting banned. Leave empty if you want to use Apify proxies instead."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
