# Pocamarket Scraper: K-Pop Photocard Marketplace Prices (포카마켓) (`kdatafactory/pocamarket-scraper`) Actor

Scrape Pocamarket (포카마켓), the global K-pop photocard marketplace: search the catalog for artist, member, card name/era, lowest USD asking price, discount, in-stock count, wish count, and image as clean JSON. Photocard + price data only, no seller identity. For resale price research.

- **URL**: https://apify.com/kdatafactory/pocamarket-scraper.md
- **Developed by:** [Seok June Park](https://apify.com/kdatafactory) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

## Pocamarket Scraper 🎴

Scrape **K-pop photocard listings and prices** from [Pocamarket](https://pocamarket.com) (포카마켓) — the global marketplace where fans buy and resell photocards — as clean, structured JSON. Search the catalog by artist, member, or card name and get the lowest USD asking price, discount, in-stock count, wish count, sales volume, and card image in one call.

Built for **photocard resale price research**, **collectible market analysis**, and **K-pop merch datasets**.

> **Try it free.** Apify's free plan includes $5 of monthly platform credit — roughly **2,000 results** from this actor, no credit card required. Set your input, click Start, and export JSON/CSV/Excel.

---

### What it does

This actor pulls data directly from Pocamarket's public catalog JSON API (the same one that powers pocamarket.com), so results are fast and complete — no fragile HTML scraping in the happy path. Give it a keyword and it returns every matching photocard in the catalog, newest listing first:

- **Search** — every photocard matching a keyword (e.g. `BTS`, `SEVENTEEN`, `ATEEZ`, `NewJeans`). The keyword matches artist/group, member, and card names.
- **Browse** — leave the keyword empty to page through the entire catalog (hundreds of thousands of cards).

Each record is one **photocard** with its **lowest current asking price** across sellers plus demand signals (wishes, units sold, units in stock).

> **Privacy first:** this actor collects **photocard + price data only**. Pocamarket's catalog API carries no seller nicknames, IDs, or profiles, and this actor never emits any seller-shop field — not even a seller country. Card images are the site's own CloudFront catalog thumbnails.

---

### Input

| Field | Type | Description |
|-------|------|-------------|
| `query` | string | Keyword to search (artist / member / card name). Leave empty to browse the whole catalog. |
| `maxItems` | integer | Max photocards to collect. Default `100`. |
| `fetchDetails` | boolean | If `true`, make one extra request per card to fill `card_type` and `album_era`. Roughly doubles run time. Default `false`. |
| `proxyConfiguration` | object | Proxy settings. Apify RESIDENTIAL recommended for large runs. |

#### Input example

```json
{
  "query": "SEVENTEEN",
  "maxItems": 100
}
````

```json
{
  "query": "ATEEZ",
  "maxItems": 200,
  "fetchDetails": true
}
```

***

### Output

Each photocard is one dataset record. Prices are in **USD** (Pocamarket's global marketplace prices in USD). `price_usd` is the lowest current asking price across all sellers of that card.

```json
{
  "source": "pocamarket",
  "listing_id": "275488",
  "artist": "Seventeen",
  "member": "THE 8",
  "name": "2024 SVT 8TH FAN MEETING SEVENTEEN in CARAT LAND Trading Card Set",
  "album_era": "2024.07",
  "card_type": "Fan meeting",
  "price_usd": 4.9,
  "discounted_price_usd": 4.9,
  "discount_rate": 0,
  "recent_price_usd": 4.9,
  "currency": "USD",
  "trade_type": "sale",
  "condition": null,
  "in_stock_count": 21,
  "sales_volume": 64,
  "wish_count": 447,
  "url": "https://pocamarket.com/search?photo_card_id=275488",
  "image_url": "https://d1sut5kn3lwnf7.cloudfront.net/media/photocard_blur/2025/01/08/cda39d39a55b440eba381d92cd71e401.jpg",
  "listed_at": "2026-07-09T09:58:46+09:00",
  "scraped_at": "2026-07-09T10:21:00+09:00"
}
```

A full 40-item sample from a real run is in [`samples/sample-output.json`](samples/sample-output.json).

| Field | Meaning |
|-------|---------|
| `source` | Always `"pocamarket"`. |
| `listing_id` | Pocamarket photocard id. |
| `artist` | Group / artist name (English). |
| `member` | Member name (English). |
| `name` | Card name — usually the album / era + release channel. |
| `album_era` | Release month (e.g. `"2024.07"`). **Only populated when `fetchDetails: true`**; otherwise `null`. |
| `card_type` | Card kind: `Album`, `Concert`, `Fan meeting`, `Lucky draw`, `POB`, etc. **Only reliably populated when `fetchDetails: true`**; in base mode it is a best-effort guess from the card name and is usually `null`. |
| `price_usd` | Lowest current asking price across sellers (USD). |
| `discounted_price_usd` | Discounted price if the card is in a promotion (else equal to `price_usd`). |
| `discount_rate` | Discount percentage (integer), `0` when not on sale. |
| `recent_price_usd` | The next-lowest / recent reference price, or `null`. |
| `currency` | Always `"USD"`. |
| `trade_type` | Always `"sale"` (Pocamarket's global marketplace is a straight resale surface). |
| `condition` | Not exposed by the catalog API — always `null`. See *Known limitations*. |
| `in_stock_count` | How many copies of this card are currently listed for sale. |
| `sales_volume` | How many copies have sold. |
| `wish_count` | How many users have wishlisted this card (demand signal). |
| `url` | Card page URL on pocamarket.com. |
| `image_url` | Catalog card image (CloudFront thumbnail). |
| `listed_at` | Latest listing time for this card (KST, UTC+9). |
| `scraped_at` | ISO-8601 timestamp (KST, UTC+9). |

#### Known limitations (so you only pay for what works)

- **`card_type` and `album_era`** come from a per-card detail endpoint. They are populated only when you set `fetchDetails: true`. In the default fast mode they are `null` (a lightweight name-based `card_type` guess is attempted but usually can't determine the type). Turn on `fetchDetails` if you need these.
- **`condition`** (mint / like-new / used grade) is **not** exposed by the public catalog API and is always `null`. Do not rely on it.
- Ordering is **newest listing first** and is fixed by the API; there is no working server-side price/popularity sort, so this actor does not offer one.

***

### Use cases

- **Photocard resale price research** — track the lowest asking price, discount, and stock depth for any member's cards across the global resale market.
- **Collectible market analysis** — measure demand (wishlists), liquidity (units sold vs. in stock), and price trends by artist, member, or era.
- **K-pop merch datasets** — feed structured photocard + price data into pricing models, arbitrage dashboards, or LLM agents.
- **Fan tools** — build "best deal" alerts or a collection-value tracker on top of clean price data.

***

### ❓ FAQ

**Is it legal to scrape this data?**
This actor collects only public, non-personal catalog data — the same photocard listings any visitor sees on pocamarket.com without logging in. No personal data is collected (no seller nicknames, IDs, or profiles). You are responsible for how you use the data; see the legality note below.

**What does it cost in practice?**
$2.50 per 1,000 results (launch pricing) + a few cents of platform usage. Example: a 500-result daily pull costs about $1.25/day. Apify's free $5 monthly credit covers ~2,000 results.

**Do I need to configure proxies?**
No — the default settings work out of the box. For large runs or with `fetchDetails` on, optionally enabling Apify Proxy with the `RESIDENTIAL` group makes runs more reliable (see the proxy recommendation below).

**How fresh is the data?**
Every run scrapes the live site at run time. Schedule the actor for recurring snapshots (e.g. daily price tracking).

**What is NOT included?**
`condition` (mint/used grade) is not exposed by the public catalog API and is always `null`, and `card_type` / `album_era` populate only with `fetchDetails: true`. No seller data of any kind is collected, and results are always ordered newest-listing-first (no server-side price sort).

***

### 🇰🇷 More Korean data actors

This actor is part of a suite of Korean-platform scrapers by the same maintainer:

- [ktown4u-scraper](https://apify.com/kdatafactory/ktown4u-scraper) — K-pop albums and merch from Ktown4u's global store.
- [bunjang-scraper](https://apify.com/kdatafactory/bunjang-scraper) — secondhand listings from Bunjang, Korea's top resale app.
- [joongna-scraper](https://apify.com/kdatafactory/joongna-scraper) — used-goods listings from Joongna's marketplace.

Browse all: [apify.com/kdatafactory](https://apify.com/kdatafactory)

***

### Rate limiting & legality

- The actor collects **only public, non-authenticated data**. It never logs in and never touches private endpoints.
- **No personal data** is collected — no seller nicknames, IDs, profiles, or shop handles, and no seller location. Only photocard + price data.
- Requests are rate-limited: one page at a time with a ≥ 500 ms delay between requests, to stay gentle on Pocamarket's servers.
- You are responsible for using the data in line with Pocamarket's terms of service and applicable law.

#### ⚠️ Proxy recommendation

Pocamarket may block datacenter IPs or high request volumes. For reliable runs — especially at higher `maxItems` or with `fetchDetails` — enable **Apify Proxy with the `RESIDENTIAL` group**. The actor automatically uses the proxy configuration you provide (via `proxyConfiguration` in input) and, if a proxy tunnel fails, falls back to a direct connection rather than hanging. If you see repeated `HTTP 403/429` errors in the log, switch on residential proxy.

***

*If this actor saves you time, a rating on the [Store page](https://apify.com/kdatafactory/pocamarket-scraper) helps a solo maintainer a lot. Found an issue? Open it in the Issues tab — I respond fast.*

# Actor input Schema

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

A keyword to search the Pocamarket photocard catalog (e.g. 'BTS', 'SEVENTEEN', 'ATEEZ', 'NewJeans'). Matches artist/group, member, and card names. Leave empty to browse the whole catalog (newest listings first).

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

Maximum number of photocard records to collect.

## `fetchDetails` (type: `boolean`):

When enabled, the actor makes one extra request per card to enrich each record with card\_type (Album / Concert / Fan meeting / POB / Lucky draw / Season's greetings, etc.) and album\_era (release month). This roughly doubles the request count and run time. When disabled, card\_type and album\_era are left null and only the fast catalog fields are returned.

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

Proxy settings. Apify Proxy with the RESIDENTIAL group is recommended if you hit rate limits. If omitted, the actor runs on a direct connection.

## Actor input object example

```json
{
  "query": "SEVENTEEN",
  "maxItems": 100,
  "fetchDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "query": "SEVENTEEN"
};

// Run the Actor and wait for it to finish
const run = await client.actor("kdatafactory/pocamarket-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 = { "query": "SEVENTEEN" }

# Run the Actor and wait for it to finish
run = client.actor("kdatafactory/pocamarket-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 '{
  "query": "SEVENTEEN"
}' |
apify call kdatafactory/pocamarket-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Pocamarket Scraper: K-Pop Photocard Marketplace Prices (포카마켓)",
        "description": "Scrape Pocamarket (포카마켓), the global K-pop photocard marketplace: search the catalog for artist, member, card name/era, lowest USD asking price, discount, in-stock count, wish count, and image as clean JSON. Photocard + price data only, no seller identity. For resale price research.",
        "version": "0.1",
        "x-build-id": "pGo1o4dIX1dlarFU6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kdatafactory~pocamarket-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kdatafactory-pocamarket-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/kdatafactory~pocamarket-scraper/runs": {
            "post": {
                "operationId": "runs-sync-kdatafactory-pocamarket-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/kdatafactory~pocamarket-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-kdatafactory-pocamarket-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "title": "Search keyword",
                        "type": "string",
                        "description": "A keyword to search the Pocamarket photocard catalog (e.g. 'BTS', 'SEVENTEEN', 'ATEEZ', 'NewJeans'). Matches artist/group, member, and card names. Leave empty to browse the whole catalog (newest listings first)."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of photocard records to collect.",
                        "default": 100
                    },
                    "fetchDetails": {
                        "title": "Fetch card details (card_type + album era)",
                        "type": "boolean",
                        "description": "When enabled, the actor makes one extra request per card to enrich each record with card_type (Album / Concert / Fan meeting / POB / Lucky draw / Season's greetings, etc.) and album_era (release month). This roughly doubles the request count and run time. When disabled, card_type and album_era are left null and only the fast catalog fields are returned.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Apify Proxy with the RESIDENTIAL group is recommended if you hit rate limits. If omitted, the actor runs on a direct connection.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
