# Walgreens Reviews Scraper (`shahidirfan/walgreens-reviews-scraper`) Actor

Extract customer reviews, ratings, reviewer details, review dates, verified purchases, photos, and more from Walgreens product pages. Ideal for brand monitoring, sentiment analysis, competitor research, product insights, and e-commerce analytics.

- **URL**: https://apify.com/shahidirfan/walgreens-reviews-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 80.0% runs succeeded, 0 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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Walgreens Reviews Scraper

Extract comprehensive product reviews from Walgreens.com with ease. Collect written review titles, full review text, ratings, user information, photo attachments, and detailed review metadata for Walgreens products. Perfect for market research, competitor analysis, and customer feedback monitoring.

### Features

- **Written Review Data** - Extract ratings, review titles, full review text, user nicknames, locations, and submission dates
- **Rich Media Support** - Capture attached photos, videos, pros/cons, secondary ratings, and badges
- **Automatic Pagination** - Automatically loads all reviews for a product, not just the first page
- **Ratings-Only Control** - Collect written reviews by default, or include star-only ratings when needed
- **Rating Statistics** - Get aggregate rating distribution, average scores, and recommendation counts
- **Syndication Detection** - Identify syndicated reviews and their original sources
- **Proxy Support** - Works with Apify Proxy for reliable data collection at scale

### Use Cases

#### Product Research

Analyze customer feedback before sourcing products or making purchasing decisions. Understand real user experiences, common complaints, and quality indicators from verified buyers.

#### Competitive Intelligence

Monitor how competitor products are rated on Walgreens. Track review sentiment over time, identify emerging issues, and spot market opportunities based on customer feedback patterns.

#### Brand Monitoring

Track your own brand's product reviews on Walgreens. Get notified of negative reviews quickly, understand customer sentiment, and gather testimonials for marketing.

#### Data Analysis

Build comprehensive datasets for business intelligence and machine learning. Analyze rating distributions, correlate review sentiment with product features, and generate insights from thousands of reviews.

---

### Input Parameters

| Parameter              | Type    | Required | Default                   | Description                                                    |
| ---------------------- | ------- | -------- | ------------------------- | -------------------------------------------------------------- |
| `url`                  | String  | Yes      | -                         | Full Walgreens product page URL                                |
| `results_wanted`       | Integer | No       | `20`                      | Maximum number of reviews to collect                           |
| `include_ratings_only` | Boolean | No       | `false`                   | Include star-only ratings that do not contain review text      |
| `max_pages`            | Integer | No       | `20`                      | Maximum review pages to check, with up to 100 reviews per page |
| `proxyConfiguration`   | Object  | No       | Apify Proxy (RESIDENTIAL) | Proxy settings for reliable scraping                           |

---

### Output Data

Each item in the dataset contains the following fields:

| Field                           | Type    | Description                                          |
| ------------------------------- | ------- | ---------------------------------------------------- |
| `review_id`                     | String  | Unique identifier for the review                     |
| `title`                         | String  | Review title                                         |
| `review_text`                   | String  | Full review content                                  |
| `rating`                        | Number  | Rating out of 5                                      |
| `user_nickname`                 | String  | Reviewer's display name                              |
| `user_location`                 | String  | Reviewer's location                                  |
| `submission_date`               | String  | Date the review was submitted                        |
| `is_recommended`                | Boolean | Whether the reviewer recommends the product          |
| `pros`                          | String  | Pros mentioned in the review                         |
| `cons`                          | String  | Cons mentioned in the review                         |
| `helpfulness`                   | Number  | Helpfulness score                                    |
| `photos`                        | Array   | Photos attached to the review (IDs, captions, URLs)  |
| `videos`                        | Array   | Videos attached to the review                        |
| `secondary_ratings`             | Array   | Additional rating dimensions (value, label, range)   |
| `badges`                        | Object  | Badges awarded to the review                         |
| `context_data_values`           | Object  | Context data about the reviewer                      |
| `is_syndicated`                 | Boolean | Whether the review is syndicated from another source |
| `syndication_source`            | Object  | Source of syndicated review (name, link, logo)       |
| `moderation_status`             | String  | Moderation status of the review                      |
| `total_feedback_count`          | Number  | Total feedback votes                                 |
| `total_positive_feedback_count` | Number  | Positive feedback votes                              |
| `total_negative_feedback_count` | Number  | Negative feedback votes                              |
| `total_comment_count`           | Number  | Number of comments on the review                     |

---

### Usage Examples

#### Basic Review Extraction

Extract reviews from a Walgreens product page:

```json
{
    "url": "https://www.walgreens.com/store/c/nivea-men-maximum-hydration-nourishing-body-lotion-aloe-vera/ID=prod6177789-product",
    "results_wanted": 20
}
````

#### Include Ratings-Only Entries

Collect written reviews plus star-only ratings:

```json
{
    "url": "https://www.walgreens.com/store/c/nivea-men-maximum-hydration-nourishing-body-lotion-aloe-vera/ID=prod6177789-product",
    "results_wanted": 100,
    "include_ratings_only": true
}
```

#### With Residential Proxies

Use residential proxies for better reliability:

```json
{
    "url": "https://www.walgreens.com/store/c/nivea-men-maximum-hydration-nourishing-body-lotion-aloe-vera/ID=prod6177789-product",
    "results_wanted": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

***

### Sample Output

```json
{
    "review_id": "395833562",
    "title": "Not Bad",
    "review_text": "It's a good product, light scent and absorbs well, however it doesn't last as long as I expected.",
    "rating": 4,
    "rating_range": 5,
    "user_nickname": "GlorBee",
    "user_location": null,
    "submission_date": "2026-06-25T01:39:15.000+00:00",
    "moderation_status": "APPROVED",
    "is_recommended": true,
    "is_ratings_only": false,
    "helpfulness": 0,
    "total_feedback_count": 0,
    "badges": {
        "verifiedPurchaser": {
            "ContentType": "REVIEW",
            "Id": "verifiedPurchaser",
            "BadgeType": "Custom"
        }
    },
    "product_id": "prod6177789",
    "product_name": "Maximum Hydration Nourishing Body Lotion Aloe Vera",
    "content_locale": "en_US"
}
```

***

### Tips for Best Results

#### Choose Valid Product URLs

- Use product page URLs (containing `/ID=` and ending with `-product`)
- Verify the product exists and has reviews before scraping
- Product IDs can be numeric or start with `prod`, and both formats are supported
- Start with popular products that have many reviews for testing

#### Optimize Collection Size

- Start with `results_wanted: 20` for testing to verify the output format
- Increase to `results_wanted: 200` or more for production runs
- Keep `include_ratings_only` disabled when you only need reviews with title and text

#### Proxy Configuration

- For single product runs, Apify Proxy may not be required
- For bulk scraping, residential proxies provide better reliability
- The scraper automatically handles proxy rotation

***

### Integrations

Connect your data with:

- **Google Sheets** - Export for analysis and sharing
- **Airtable** - Build searchable review databases
- **Slack** - Get notifications for new negative reviews
- **Make** - Create automated review monitoring workflows
- **Zapier** - Trigger actions when new reviews are collected

#### Export Formats

- **JSON** - For developers and APIs
- **CSV** - For spreadsheet analysis
- **Excel** - For business reporting
- **XML** - For system integrations

***

### Frequently Asked Questions

#### How many reviews can I collect?

You can collect all available written reviews for any product. The scraper automatically paginates through review pages until it reaches `results_wanted` or `max_pages`.

#### Does this work for any Walgreens product?

Yes, it works with Walgreens product page URLs that contain `/ID=...-product`, including numeric IDs and IDs such as `prod6177789`.

#### What if no reviews are found?

Some products have no written reviews yet. If you get 0 results, verify the product URL is correct and try `include_ratings_only: true` to include star-only ratings.

#### Can I scrape multiple products?

This actor processes one product URL per run. To scrape multiple products, use Apify's task feature to run multiple instances in parallel, or use the API to trigger runs programmatically.

#### Are ratings included?

Yes, each review includes its individual rating (1-5), and the aggregate statistics (average rating, rating distribution, recommendation counts) are captured in the API responses.

***

### Support

For issues or feature requests, contact support through the Apify Console.

#### Resources

- [Apify Documentation](https://docs.apify.com/)
- [API Reference](https://docs.apify.com/api/v2)
- [Scheduling Runs](https://docs.apify.com/schedules)

***

### Legal Notice

This actor is designed for legitimate data collection purposes. Users are responsible for ensuring compliance with Walgreens terms of service and applicable laws. Use data responsibly and respect rate limits.

# Actor input Schema

## `url` (type: `string`):

Full URL of the Walgreens product page (e.g., https://www.walgreens.com/store/c/nivea-men-maximum-hydration-nourishing-body-lotion-aloe-vera/ID=prod6177789-product).

## `results_wanted` (type: `integer`):

Maximum number of reviews to collect. Leave empty to collect all available reviews.

## `max_pages` (type: `integer`):

Maximum number of API pages to fetch (1 page = up to 100 reviews). Caps pagination regardless of results\_wanted.

## `include_ratings_only` (type: `boolean`):

When disabled, only written reviews with review text/title are collected. Enable to include star-only ratings that do not have text.

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

Use Apify Proxy for reliable scraping. Residential proxies recommended for Walgreens.

## Actor input object example

```json
{
  "url": "https://www.walgreens.com/store/c/nivea-men-maximum-hydration-nourishing-body-lotion-aloe-vera/ID=prod6177789-product",
  "results_wanted": 20,
  "max_pages": 20,
  "include_ratings_only": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "url": "https://www.walgreens.com/store/c/nivea-men-maximum-hydration-nourishing-body-lotion-aloe-vera/ID=prod6177789-product",
    "results_wanted": 20,
    "max_pages": 20,
    "include_ratings_only": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/walgreens-reviews-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 = {
    "url": "https://www.walgreens.com/store/c/nivea-men-maximum-hydration-nourishing-body-lotion-aloe-vera/ID=prod6177789-product",
    "results_wanted": 20,
    "max_pages": 20,
    "include_ratings_only": False,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/walgreens-reviews-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 '{
  "url": "https://www.walgreens.com/store/c/nivea-men-maximum-hydration-nourishing-body-lotion-aloe-vera/ID=prod6177789-product",
  "results_wanted": 20,
  "max_pages": 20,
  "include_ratings_only": false
}' |
apify call shahidirfan/walgreens-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Walgreens Reviews Scraper",
        "description": "Extract customer reviews, ratings, reviewer details, review dates, verified purchases, photos, and more from Walgreens product pages. Ideal for brand monitoring, sentiment analysis, competitor research, product insights, and e-commerce analytics.",
        "version": "0.0",
        "x-build-id": "xzSe1eaiw1kUEQECL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~walgreens-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-walgreens-reviews-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/shahidirfan~walgreens-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-walgreens-reviews-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/shahidirfan~walgreens-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-walgreens-reviews-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": [
                    "url"
                ],
                "properties": {
                    "url": {
                        "title": "Walgreens Product URL",
                        "type": "string",
                        "description": "Full URL of the Walgreens product page (e.g., https://www.walgreens.com/store/c/nivea-men-maximum-hydration-nourishing-body-lotion-aloe-vera/ID=prod6177789-product)."
                    },
                    "results_wanted": {
                        "title": "Maximum reviews",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of reviews to collect. Leave empty to collect all available reviews.",
                        "default": 20
                    },
                    "max_pages": {
                        "title": "Max API pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of API pages to fetch (1 page = up to 100 reviews). Caps pagination regardless of results_wanted.",
                        "default": 20
                    },
                    "include_ratings_only": {
                        "title": "Include ratings-only reviews",
                        "type": "boolean",
                        "description": "When disabled, only written reviews with review text/title are collected. Enable to include star-only ratings that do not have text.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Use Apify Proxy for reliable scraping. Residential proxies recommended for Walgreens.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
