# EU Business & Company Registry API (`lentic_clockss/eu-business-data-search`) Actor

Search across 21 EU business data sources in parallel — ECB supervised banks, ESMA investment firms, EBA credit institutions, EIOPA insurance registers, Eurostat trade statistics, TARIC customs tariff, and EU sanctions list. All from official European regulatory databases.

- **URL**: https://apify.com/lentic\_clockss/eu-business-data-search.md
- **Developed by:** [kane liu](https://apify.com/lentic_clockss) (community)
- **Categories:** Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## 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

## EU Business Data Search

Search **21 official European business data sources** in a single API call — financial institution registries (ECB, EBA, EIOPA, ESMA), capital markets reference data, Eurostat trade and economy statistics, TARIC customs tariff, EU sanctions list, and more. All data comes directly from European regulatory databases through the SIP Public Data Gateway.

### What is EU Business Data Search?

EU Business Data Search is an Apify Actor that queries official European Union data sources for business, financial institution, and trade information. Instead of navigating dozens of separate EU portals (ECB, ESMA, EBA, EIOPA, Eurostat, EUR-Lex), you search them all at once with a single keyword.

The Actor uses the **SIP Public Data Gateway** — a unified API layer that normalizes responses from 21 EU business-related data products into a consistent format. No browser automation, no scraping — just fast, reliable HTTPS API calls.

### Why use EU Business Data Search?

- **One search, 21 sources** — Query ECB supervised banks, ESMA investment firms, EBA authorized institutions, EIOPA insurance registers, and Eurostat statistics in parallel
- **Official government data** — All sources are public EU regulatory databases, not scraped web pages
- **Structured JSON output** — Every record includes source metadata (`_product_id`, `_source`, `_search_term`, `_collected_at`) for traceability
- **Category toggles** — Enable or disable institution registries, capital markets, trade data, and governance sources to focus your search
- **No API keys needed for EU sources** — SIP handles authentication with upstream EU APIs; you only need one SIP API key

#### Use cases

| Who | What |
|-----|------|
| **Compliance teams** | KYB checks against ECB/EBA/ESMA authorized entity registries and EU sanctions list |
| **Financial analysts** | Cross-reference banks and investment firms across ECB, EBA, EIOPA, and ESMA registers |
| **Trade & customs professionals** | Look up TARIC tariff codes, Eurostat trade flows, and customs classifications |
| **Research firms** | Access Eurostat business demographics, labor market data, and CORDIS research funding |
| **RegTech companies** | Bulk-query EU regulatory registries for entity verification and monitoring |

### What data can EU Business Data Search extract?

| Source | Data type | Example fields |
|--------|-----------|----------------|
| ECB supervised banks | Significant/less-significant institutions | name, country, lei_code, type |
| ECB MFI list | Monetary financial institutions | name, country, category, head_office |
| EBA credit institutions | Authorized credit institutions | name, country, competent_authority |
| EBA payment institutions | Authorized payment service providers | name, country, authorization_status |
| EIOPA insurance register | Insurance undertakings across EU | name, country, nca, type_of_undertaking |
| EIOPA IORP register | Occupational pension funds | name, country, nca |
| ESMA investment firms | Authorized investment firms | name, country, services |
| ESMA FIRDS | Financial instrument reference data | instrument_name, isin, venue |
| ESMA DVCAP | Double volume cap data | venue, instrument, volume |
| Eurostat trade | EU trade statistics | reporter, partner, product, trade_value |
| Eurostat business demographics | Enterprise births, deaths, survival | country, indicator, value |
| TARIC customs | Integrated tariff of the EU | goods_nomenclature, description, duty_rate |
| EU sanctions list | Consolidated sanctions | name, entity_type, program, listed_on |
| Transparency Register | EU lobby organizations | name, category, registration_date |
| VIES VAT | VAT number validation | country_code, vat_number, valid, name |

### How to search EU business data

1. Open the Actor in Apify Console
2. Enter one or more search terms (e.g. "Deutsche Bank", "Allianz", "BASF")
3. Choose which data categories to include (institution registries are on by default)
4. Click **Start** — the Actor queries all enabled sources in parallel
5. Download results as JSON, CSV, or Excel from the dataset tab

#### Example input

```json
{
  "searchTerms": ["Deutsche Bank", "Allianz"],
  "includeInstitutionRegistries": true,
  "includeCapitalMarkets": true,
  "includeTradeEconomy": false,
  "includeGovernanceCompliance": false,
  "maxResultsPerSource": 50
}
````

### Output

Each row is a record from an EU data source, enriched with metadata:

```json
{
  "name": "Deutsche Bank AG",
  "country": "DE",
  "lei_code": "7LTWFZYICNSX8D621K86",
  "type": "Significant supervised entity",
  "_product_id": "eu_ecb_supervised_banks",
  "_source": "ecb_supervised_banks",
  "_search_term": "Deutsche Bank",
  "_collected_at": "2026-04-08T12:00:00Z"
}
```

Results can be exported in JSON, CSV, XML, Excel, or HTML formats directly from the Apify dataset.

### How much does it cost to search EU business data?

The Actor charges per data record returned using Apify's pay-per-event model. Typical costs:

- **Small search** (1 term, default sources): ~$0.05–0.15 depending on matches
- **Bulk research** (10 terms, all 21 sources): ~$0.50–2.00

Platform compute costs are minimal since the Actor makes lightweight API calls with no browser overhead. You can set `maxResultsPerSource` to control the volume and cost per run.

### Data sources (21 EU products)

| Category | Sources | Count |
|----------|---------|-------|
| Institution registries | EBA credit institutions, EBA payment institutions, ECB supervised banks (SIs), ECB less-significant institutions (LSIs), ECB MFI list, EIOPA insurance register, EIOPA IORP register, ESMA investment firms | 8 |
| Capital markets | ESMA DVCAP, ESMA FIRDS, ESMA FITRS, ESMA SSR exempted shares | 4 |
| Trade & economy | TARIC customs tariff, Eurostat trade, Eurostat business demographics, Eurostat labor market | 4 |
| Governance & compliance | CORDIS research projects, EU sanctions consolidated list, Transparency Register, GLEIF OC mapping, VIES VAT validation | 5 |

### FAQ

**Is it legal to access this data?**
Yes. All 21 data sources are official public EU databases provided by European regulatory agencies (ECB, EBA, EIOPA, ESMA, Eurostat, European Commission). The Actor accesses them through authorized API endpoints.

**Do I need separate API keys for each EU source?**
No. The SIP gateway handles authentication with upstream EU APIs. You only need one SIP API key, configured as an Actor environment variable.

**What about VIES VAT validation?**
VIES is a lookup service, not a search engine. Use a specific VAT number as the search term (e.g. "DE123456789") with the Governance & Compliance toggle enabled. Generic keywords will return no VIES results.

**How current is the data?**
Data freshness depends on each source's update cycle. ECB/EBA/EIOPA registries update daily to weekly. Eurostat statistics are typically quarterly. The SIP gateway caches results briefly for performance but always fetches from official upstream APIs.

**Can I integrate results into my application?**
Yes. Use the Apify API to trigger runs programmatically and retrieve results as JSON. The Actor is also available as an MCP tool for AI agent workflows.

### Use as MCP Tool (AI Agent Integration)

This Actor works as an MCP tool — AI agents (Claude, GPT, Cursor) can discover and run it automatically.

#### Quick setup (Claude Desktop / Cursor / VS Code)

Add to your MCP config:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com",
      "headers": {
        "Authorization": "Bearer YOUR_APIFY_TOKEN"
      }
    }
  }
}
```

Then ask your AI: *"Search for Deutsche Bank in EU business registries"*

#### Direct API call

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("lentic_clockss/eu-business-data-search").call(
    run_input={"searchTerms": ["Deutsche Bank"], "maxResultsPerSource": 50}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

### Other Data API Actors

- [US Business Entity Data API](https://apify.com/lentic_clockss/us-business-entity-search)
- [UK Government Data API](https://apify.com/lentic_clockss/uk-data-search)
- [Switzerland Government Data API](https://apify.com/lentic_clockss/switzerland-data-search)
- [Taiwan Government Data API](https://apify.com/lentic_clockss/taiwan-data-search)

# Actor input Schema

## `searchTerms` (type: `array`):

Company names, keywords, or identifiers to search (e.g. 'Deutsche Bank', 'Allianz', 'Volkswagen'). Each term is searched across all enabled EU data sources in parallel.

## `includeInstitutionRegistries` (type: `boolean`):

Search EBA credit/payment institutions, ECB supervised banks and MFI list, EIOPA insurance/pension registers, and ESMA investment firms (8 sources covering all EU-authorized financial entities).

## `includeCapitalMarkets` (type: `boolean`):

Search ESMA regulatory datasets: Double Volume Cap (DVCAP), Financial Instruments Reference Data (FIRDS), transparency calculations (FITRS), and Short Selling Regulation exempted shares (4 sources).

## `includeTradeEconomy` (type: `boolean`):

Search TARIC customs tariff, Eurostat trade statistics, business demographics, and labor market data (4 sources).

## `includeGovernanceCompliance` (type: `boolean`):

Search EU sanctions consolidated list, Transparency Register (lobbyists), CORDIS research projects, GLEIF entity mapping, and VIES VAT validation. Note: VIES requires a specific VAT number as search term (5 sources).

## `maxResultsPerSource` (type: `integer`):

Maximum records to return per data source (gateway caps at 200).

## Actor input object example

```json
{
  "searchTerms": [
    "Deutsche Bank"
  ],
  "includeInstitutionRegistries": true,
  "includeCapitalMarkets": true,
  "includeTradeEconomy": true,
  "includeGovernanceCompliance": false,
  "maxResultsPerSource": 50
}
```

# Actor output Schema

## `businessRecords` (type: `string`):

Dataset containing financial institution registries, capital markets reference data, trade statistics, customs tariff, and EU sanctions from 21 European data sources.

# 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 = {
    "searchTerms": [
        "Deutsche Bank"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lentic_clockss/eu-business-data-search").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 = { "searchTerms": ["Deutsche Bank"] }

# Run the Actor and wait for it to finish
run = client.actor("lentic_clockss/eu-business-data-search").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 '{
  "searchTerms": [
    "Deutsche Bank"
  ]
}' |
apify call lentic_clockss/eu-business-data-search --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EU Business & Company Registry API",
        "description": "Search across 21 EU business data sources in parallel — ECB supervised banks, ESMA investment firms, EBA credit institutions, EIOPA insurance registers, Eurostat trade statistics, TARIC customs tariff, and EU sanctions list. All from official European regulatory databases.",
        "version": "0.1",
        "x-build-id": "rwOa3EnRApOM1F8wL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lentic_clockss~eu-business-data-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lentic_clockss-eu-business-data-search",
                "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/lentic_clockss~eu-business-data-search/runs": {
            "post": {
                "operationId": "runs-sync-lentic_clockss-eu-business-data-search",
                "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/lentic_clockss~eu-business-data-search/run-sync": {
            "post": {
                "operationId": "run-sync-lentic_clockss-eu-business-data-search",
                "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": [
                    "searchTerms"
                ],
                "properties": {
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Company names, keywords, or identifiers to search (e.g. 'Deutsche Bank', 'Allianz', 'Volkswagen'). Each term is searched across all enabled EU data sources in parallel.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeInstitutionRegistries": {
                        "title": "Include financial institution registries",
                        "type": "boolean",
                        "description": "Search EBA credit/payment institutions, ECB supervised banks and MFI list, EIOPA insurance/pension registers, and ESMA investment firms (8 sources covering all EU-authorized financial entities).",
                        "default": true
                    },
                    "includeCapitalMarkets": {
                        "title": "Include capital markets reference data",
                        "type": "boolean",
                        "description": "Search ESMA regulatory datasets: Double Volume Cap (DVCAP), Financial Instruments Reference Data (FIRDS), transparency calculations (FITRS), and Short Selling Regulation exempted shares (4 sources).",
                        "default": true
                    },
                    "includeTradeEconomy": {
                        "title": "Include trade & economy data",
                        "type": "boolean",
                        "description": "Search TARIC customs tariff, Eurostat trade statistics, business demographics, and labor market data (4 sources).",
                        "default": true
                    },
                    "includeGovernanceCompliance": {
                        "title": "Include governance & compliance",
                        "type": "boolean",
                        "description": "Search EU sanctions consolidated list, Transparency Register (lobbyists), CORDIS research projects, GLEIF entity mapping, and VIES VAT validation. Note: VIES requires a specific VAT number as search term (5 sources).",
                        "default": false
                    },
                    "maxResultsPerSource": {
                        "title": "Max results per source",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum records to return per data source (gateway caps at 200).",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
