# MusicBrainz Scraper (`crawlerbros/musicbrainz-scraper`) Actor

Scrape MusicBrainz, the open music encyclopedia with 2M+ artists, 4M+ releases, and 30M+ recordings. Search artists, albums, songs, labels, and works. No API key required. Covers all genres and countries.

- **URL**: https://apify.com/crawlerbros/musicbrainz-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## MusicBrainz Scraper

Scrape **MusicBrainz** — the world's most comprehensive open music encyclopedia with 2M+ artists, 4M+ releases, and 30M+ recordings. Search artists, albums, songs, labels, and compositions. **No API key required.**

### What does MusicBrainz Scraper do?

This actor gives you structured data from MusicBrainz including:
- **Artists** — bands, solo artists, orchestras with genres, aliases, country, and active years
- **Releases** — albums, EPs, singles, compilations with track counts, labels, and catalog numbers
- **Recordings** — individual tracks/songs with duration, ISRCs, and parent releases
- **Labels** — record labels with country, founded year, and aliases
- **Any entity by MBID** — fetch full details using a MusicBrainz ID

MusicBrainz is a community-maintained open database, freely accessible with no authentication required.

### Supported Modes

| Mode | Description |
|------|-------------|
| `searchArtists` | Search bands and musicians by name, type, country, or genre tag |
| `searchReleases` | Search albums, singles, EPs with filters for type, artist, and year range |
| `searchRecordings` | Search individual songs/tracks by title, artist, or release |
| `byMBID` | Fetch complete details for any artist, release, recording, label, or work by ID |
| `searchLabels` | Search record labels by name and country |

### Input

| Field | Type | Description |
|-------|------|-------------|
| `mode` | select | What to search: `searchArtists`, `searchReleases`, `searchRecordings`, `byMBID`, `searchLabels` |
| `query` | text | Name/keyword to search (required for search modes) |
| `artistType` | select | Filter by type: Person, Group, Orchestra, Choir, Character, Other |
| `country` | text | ISO 3166-1 alpha-2 country code (e.g. `US`, `GB`, `DE`) |
| `tag` | text | Genre/style tag filter (e.g. `rock`, `jazz`, `classical`) |
| `releaseType` | select | Filter releases: Album, Single, EP, Compilation, Soundtrack, Live, etc. |
| `artistName` | text | Filter releases/recordings by artist name |
| `fromYear` | integer | Filter releases from this year (1900–2100) |
| `toYear` | integer | Filter releases up to this year (1900–2100) |
| `releaseTitle` | text | Filter recordings by album/release title |
| `mbid` | text | MusicBrainz UUID for byMBID mode |
| `entityType` | select | Entity type for byMBID: artist, release, recording, label, work |
| `maxItems` | integer | Max records to return (1–500, default: 25) |

### Output

#### Artist record
```json
{
  "mbid": "b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d",
  "name": "The Beatles",
  "sortName": "Beatles, The",
  "type": "Group",
  "country": "GB",
  "area": "United Kingdom",
  "beginArea": "Liverpool",
  "beginYear": 1960,
  "endYear": 1970,
  "isEnded": true,
  "genres": ["rock", "pop", "british invasion"],
  "aliases": ["Beatles", "Fab Four"],
  "disambiguation": "John, Paul, George, and Ringo",
  "relevanceScore": 100,
  "artistUrl": "https://musicbrainz.org/artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d",
  "scrapedAt": "2025-05-25T10:00:00+00:00"
}
````

#### Release record

```json
{
  "mbid": "b84ee12a-09ef-421b-82de-0441a926375b",
  "title": "Abbey Road",
  "type": "Album",
  "status": "Official",
  "date": "1969-09-26",
  "releaseYear": 1969,
  "country": "GB",
  "artistName": "The Beatles",
  "trackCount": 17,
  "label": "Apple Records",
  "catalogNumber": "PCS 7088",
  "genres": ["rock", "classic rock"],
  "releaseUrl": "https://musicbrainz.org/release/b84ee12a-09ef-421b-82de-0441a926375b",
  "scrapedAt": "2025-05-25T10:00:00+00:00"
}
```

#### Recording record

```json
{
  "mbid": "3e30b8d9-aabe-4beb-8f21-9ee2a591d089",
  "title": "Come Together",
  "artistName": "The Beatles",
  "duration": "4:19",
  "durationMs": 259000,
  "isVideo": false,
  "isrcs": ["GBAYE6800018"],
  "releases": ["Abbey Road"],
  "genres": ["rock", "classic rock"],
  "recordingUrl": "https://musicbrainz.org/recording/3e30b8d9-aabe-4beb-8f21-9ee2a591d089",
  "scrapedAt": "2025-05-25T10:00:00+00:00"
}
```

### Use Cases

- **Music discovery** — find artists, albums, and songs across all genres and countries
- **Discography research** — get complete release histories for any artist
- **Music metadata enrichment** — augment your music library with genres, ISRCs, and MBIDs
- **Label research** — find releases by a specific record label
- **Music data analytics** — build genre trend datasets and artist network graphs
- **Music app development** — power search and recommendation engines with rich metadata

### FAQ

**Q: Does this require an API key or registration?**
A: No. MusicBrainz provides a completely free public API. No account needed.

**Q: How much data is available?**
A: MusicBrainz has 2M+ artists, 4M+ releases, 30M+ recordings, and growing. It covers all genres and countries worldwide.

**Q: What is a MBID?**
A: A MusicBrainz ID (MBID) is a unique identifier in UUID format assigned to every entity in MusicBrainz. Use the `byMBID` mode with an MBID to fetch complete details for any entity.

**Q: Can I filter artists by genre?**
A: Yes. Use the `tag` field in `searchArtists` mode (e.g., `tag=rock`, `tag=jazz`).

**Q: Can I get all releases for a specific artist?**
A: Use `searchReleases` mode with `artistName` set to the artist you want. For precise results, use `byMBID` mode with the artist's MBID and `entityType=artist` which returns full discography details.

**Q: What languages does MusicBrainz cover?**
A: All languages. MusicBrainz is a global database with entries in every language and script.

**Q: Is there a rate limit?**
A: With the included User-Agent header, MusicBrainz allows 50 requests/second. This actor politely uses 10 req/sec.

**Q: Is this free to run on Apify?**
A: Yes. No proxy, no API key, no paid add-ons required. Runs on the Apify free plan.

# Actor input Schema

## `mode` (type: `string`):

What to search or fetch from MusicBrainz.

## `query` (type: `string`):

Name or keyword to search for (required for search modes).

## `artistType` (type: `string`):

Filter artists by type.

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

ISO 3166-1 alpha-2 country code to filter by (e.g. US, GB, DE, JP). Leave empty for all countries.

## `tag` (type: `string`):

Filter by genre tag (e.g. 'rock', 'jazz', 'classical', 'pop'). Case-insensitive.

## `releaseType` (type: `string`):

Filter releases by type.

## `artistName` (type: `string`):

Filter releases or recordings by artist name (e.g. 'The Beatles').

## `fromYear` (type: `integer`):

Filter releases from this year onwards (e.g. 2000).

## `toYear` (type: `integer`):

Filter releases up to and including this year (e.g. 2020).

## `releaseTitle` (type: `string`):

Filter recordings by the release/album they appear on.

## `mbid` (type: `string`):

The MusicBrainz ID (UUID format) of the entity to fetch.

## `entityType` (type: `string`):

The type of entity to fetch by MBID.

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

Maximum number of records to return per run.

## Actor input object example

```json
{
  "mode": "searchArtists",
  "query": "Beatles",
  "artistType": "",
  "releaseType": "",
  "mbid": "b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d",
  "entityType": "artist",
  "maxItems": 25
}
```

# Actor output Schema

## `musicData` (type: `string`):

Dataset containing all scraped MusicBrainz records.

# 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 = {
    "mode": "searchArtists",
    "query": "Beatles",
    "artistType": "",
    "releaseType": "",
    "mbid": "b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d",
    "entityType": "artist",
    "maxItems": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/musicbrainz-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 = {
    "mode": "searchArtists",
    "query": "Beatles",
    "artistType": "",
    "releaseType": "",
    "mbid": "b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d",
    "entityType": "artist",
    "maxItems": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/musicbrainz-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 '{
  "mode": "searchArtists",
  "query": "Beatles",
  "artistType": "",
  "releaseType": "",
  "mbid": "b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d",
  "entityType": "artist",
  "maxItems": 25
}' |
apify call crawlerbros/musicbrainz-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "MusicBrainz Scraper",
        "description": "Scrape MusicBrainz, the open music encyclopedia with 2M+ artists, 4M+ releases, and 30M+ recordings. Search artists, albums, songs, labels, and works. No API key required. Covers all genres and countries.",
        "version": "1.0",
        "x-build-id": "OkXboFsT0ZcKIP8Nq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~musicbrainz-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-musicbrainz-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/crawlerbros~musicbrainz-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-musicbrainz-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/crawlerbros~musicbrainz-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-musicbrainz-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "searchArtists",
                            "searchReleases",
                            "searchRecordings",
                            "byMBID",
                            "searchLabels"
                        ],
                        "type": "string",
                        "description": "What to search or fetch from MusicBrainz.",
                        "default": "searchArtists"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Name or keyword to search for (required for search modes).",
                        "default": "Beatles"
                    },
                    "artistType": {
                        "title": "Artist type (searchArtists only)",
                        "enum": [
                            "",
                            "Person",
                            "Group",
                            "Orchestra",
                            "Choir",
                            "Character",
                            "Other"
                        ],
                        "type": "string",
                        "description": "Filter artists by type.",
                        "default": ""
                    },
                    "country": {
                        "title": "Country filter",
                        "type": "string",
                        "description": "ISO 3166-1 alpha-2 country code to filter by (e.g. US, GB, DE, JP). Leave empty for all countries."
                    },
                    "tag": {
                        "title": "Tag/genre filter (searchArtists only)",
                        "type": "string",
                        "description": "Filter by genre tag (e.g. 'rock', 'jazz', 'classical', 'pop'). Case-insensitive."
                    },
                    "releaseType": {
                        "title": "Release type (searchReleases only)",
                        "enum": [
                            "",
                            "Album",
                            "Single",
                            "EP",
                            "Compilation",
                            "Soundtrack",
                            "Spokenword",
                            "Interview",
                            "Audiobook",
                            "Live",
                            "Remix",
                            "Other"
                        ],
                        "type": "string",
                        "description": "Filter releases by type.",
                        "default": ""
                    },
                    "artistName": {
                        "title": "Artist name filter",
                        "type": "string",
                        "description": "Filter releases or recordings by artist name (e.g. 'The Beatles')."
                    },
                    "fromYear": {
                        "title": "From year (searchReleases only)",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Filter releases from this year onwards (e.g. 2000)."
                    },
                    "toYear": {
                        "title": "To year (searchReleases only)",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Filter releases up to and including this year (e.g. 2020)."
                    },
                    "releaseTitle": {
                        "title": "Release title filter (searchRecordings only)",
                        "type": "string",
                        "description": "Filter recordings by the release/album they appear on."
                    },
                    "mbid": {
                        "title": "MusicBrainz ID (byMBID only)",
                        "type": "string",
                        "description": "The MusicBrainz ID (UUID format) of the entity to fetch."
                    },
                    "entityType": {
                        "title": "Entity type (byMBID only)",
                        "enum": [
                            "artist",
                            "release",
                            "recording",
                            "label",
                            "work"
                        ],
                        "type": "string",
                        "description": "The type of entity to fetch by MBID.",
                        "default": "artist"
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of records to return per run.",
                        "default": 25
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
