# GreatSchools Scraper — Ratings, Scores & Demographics (`muhammadafzal/greatschools-scraper`) Actor

Scrape US K-12 school data from GreatSchools.org: ratings, test scores, demographics, enrollment, contacts & more. Search by city/state or paste school URLs. Covers public, charter & private schools across all 50 states.

- **URL**: https://apify.com/muhammadafzal/greatschools-scraper.md
- **Developed by:** [Muhammad Afzal](https://apify.com/muhammadafzal) (community)
- **Categories:** Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 school scrapeds

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

## GreatSchools Scraper

Extract comprehensive US K-12 school data from [GreatSchools.org](https://www.greatschools.org/) — the nation's leading school quality resource trusted by millions of parents and educators.

### What it does

The GreatSchools Scraper collects detailed school profiles for public, charter, and private schools across all 50 US states plus Washington DC. Search by city/state or paste GreatSchools URLs directly. Each record includes 35+ data fields: GreatSchools ratings (1-10), test score ratings, student progress ratings, community review ratings, enrollment numbers, grade levels, contact information (phone, website, principal email), student demographics (race/ethnicity, gender breakdown, low-income percentage), regular attendance rates, Title I status, equity indicators, nearby schools, and recent community reviews.

### Use cases

- **Real estate analysis** — school quality overlays for neighborhood scoring and property valuation
- **Relocation research** — side-by-side school comparisons for families moving to a new city
- **Lead generation** — principal contact lists for EdTech sales, partnership outreach, and marketing campaigns
- **Education research** — demographics analysis, equity studies, and test score benchmarking by district
- **Data enrichment** — school intelligence for dashboards, AI/ML datasets, and market sizing reports
- **Nonprofit & journalism** — public school data for transparency projects and investigative reporting

### Input parameters

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `startUrls` | array | No | — | GreatSchools.org URLs to scrape directly (school profiles or city listing pages) |
| `location` | string | No* | `Orlando, FL` | City and US state in `City, ST` format (e.g. `Chicago, IL`) |
| `schoolLevels` | array | No | — | Filter by level: `preschool`, `elementary`, `middle`, `high` |
| `schoolTypes` | array | No | — | Filter by type: `public`, `charter`, `private` |
| `maxResults` | integer | No | `10` | Maximum number of schools to collect |
| `maxConcurrency` | integer | No | `5` | Concurrent request limit |
| `proxyConfiguration` | object | No | — | Proxy settings (datacenter by default) |

\*Either `startUrls` or `location` must be provided.

### Output fields

| Field | Type | Example |
|-------|------|---------|
| `schoolId` | string\|null | `"18885"` |
| `gsid` | string\|null | `"FL-18885"` |
| `name` | string | `"Laureate Park Elementary"` |
| `url` | string\|null | `"https://www.greatschools.org/florida/orlando/18885-Laureate-Park-Elementary/"` |
| `state` | string\|null | `"FL"` |
| `city` | string\|null | `"Orlando"` |
| `county` | string\|null | `"Orange County"` |
| `districtName` | string\|null | `"Orange County Public Schools"` |
| `districtUrl` | string\|null | `"https://www.greatschools.org/florida/orlando/orange-county-public-schools/"` |
| `schoolType` | string\|null | `"public"` |
| `gradeLevels` | string\|null | `"PK,KG,1,2,3,4,5"` |
| `grades` | string\|null | `"PK, K-5"` |
| `greatSchoolsRating` | integer\|null | `10` |
| `testScoreRating` | integer\|null | `10` |
| `studentProgressRating` | integer\|null | `10` |
| `reviewRating` | number\|null | `2.92` |
| `reviewCount` | integer\|null | `12` |
| `enrollment` | integer\|null | `778` |
| `studentTeacherRatio` | string\|null | `"15:1"` |
| `address` | string\|null | `"7800 Laureate Boulevard"` |
| `zipCode` | string\|null | `"32827"` |
| `phone` | string\|null | `"(407) 730-8730"` |
| `website` | string\|null | `"http://laureateparkes.ocps.net/"` |
| `schoolLeader` | string\|null | `"Mr Jose Perez-Valentin"` |
| `schoolLeaderEmail` | string\|null | `"25704@OCPS.NET"` |
| `lowIncomePercent` | number\|null | `19.3` |
| `ethnicity` | array | `[{"breakdown":"Hispanic","percent":38.3}]` |
| `genderBreakdown` | array | `[{"gender":"Male","schoolPercent":52.05}]` |
| `regularAttendancePercent` | number\|null | `90` |
| `titleI` | boolean\|null | `false` |
| `equityIndicator` | boolean\|null | `true` |
| `collegeSuccessAwards` | array | `[]` |
| `claimStatus` | string\|null | `"unclaimed"` |
| `description` | string\|null | `"Laureate Park Elementary is a public school..."` |
| `nearbySchools` | array | `[{"name":"Luminary Middle","rating":9,"distanceMiles":1.04}]` |
| `reviews` | array | `[{"date":"2026-05-21","rating":2,"text":"..."}]` |
| `scrapedAt` | string | `"2026-07-01T12:00:00.000Z"` |
| `sourceUrl` | string | `"https://www.greatschools.org/florida/orlando/18885-..."` |

### Pricing

| Event | Price | Description |
|-------|-------|-------------|
| Actor Start | $0.005 | Charged once when the run starts |
| School Scraped | $0.012 per result | Charged for each school record with full profile data |

**Example cost:** Scraping 100 schools = $0.005 + (100 x $0.012) = **$1.21**

### How it works

1. **Search mode** — Enter a city and state (e.g. `Orlando, FL`). The actor constructs the GreatSchools city page URL and extracts all school profile links from it.
2. **URL mode** — Paste GreatSchools URLs directly (school profiles or city listing pages).
3. The actor visits each school profile page and extracts data from embedded JSON (`gon` object), JSON-LD schema, and the HTML DOM.
4. Filters by school level and type are applied after extraction.
5. Results are pushed to the dataset immediately — no buffering, no data loss on timeout.

### Technical details

- **Crawler:** CheerioCrawler (static HTML parsing — no browser needed, fast and reliable)
- **Data extraction:** Parses the `gon` JavaScript object embedded in `<script>` tags for structured data (ratings, demographics, enrollment), plus JSON-LD `School` schema for address, phone, website, and reviews
- **Proxy:** Datacenter proxies by default. Switch to residential if you encounter blocking.
- **Deduplication:** Schools are deduplicated by GreatSchools ID across multiple listing pages

### API usage

```bash
## Run via API
curl -X POST "https://api.apify.com/v2/acts/USERNAME~greatschools-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"location": "Orlando, FL", "maxResults": 50}'
````

```javascript
// Run via JavaScript SDK
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('USERNAME/greatschools-scraper').call({
    location: 'Orlando, FL',
    maxResults: 50,
    schoolTypes: ['public', 'charter'],
});
const dataset = await client.dataset(run.defaultDatasetId).listItems();
console.log(dataset.items);
```

### Limitations

- GreatSchools city pages list schools from the "Top Rated Schools" section, which may not include every school in a city. For comprehensive coverage, use the `startUrls` field with specific school profile URLs.
- Some data fields (test score breakdowns, course lists) are loaded via JavaScript and may not be available in the static HTML. The actor captures all data available in the server-rendered page.
- Private school profiles may have less data than public schools (fewer ratings, no test scores).

# Actor input Schema

## `startUrls` (type: `array`):

Use this field when the user provides specific GreatSchools.org URLs to scrape directly. Accepts school profile URLs (e.g. https://www.greatschools.org/florida/orlando/18885-Laureate-Park-Elementary/) or city listing URLs (e.g. https://www.greatschools.org/florida/orlando/). Do NOT use this when the user describes a location — use the location field instead.

## `location` (type: `string`):

Enter a city and US state to search for schools. Use 'City, ST' format — for example, 'Orlando, FL' or 'Los Angeles, CA'. You can also use just a city name with full state like 'Oklahoma City, Oklahoma'. The actor converts this to a GreatSchools city page URL and extracts all school profile links from it. Required if startUrls is not provided.

## `schoolLevels` (type: `array`):

Select school levels to filter by. Leave empty to include all levels. Valid values: preschool, elementary, middle, high. The actor checks each school's grade range and includes only matching levels.

## `schoolTypes` (type: `array`):

Select school types to filter by. Leave empty to include all types. Valid values: public, charter, private.

## `maxResults` (type: `integer`):

Maximum number of schools to collect and return. Set to a small number (3-5) first to verify data quality before scaling up. A single city page typically lists 100-200+ schools.

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

Select a proxy to use for scraping. The actor works with datacenter proxies by default. If GreatSchools blocks your requests, switch to residential proxies or provide a custom proxy URL.

## `maxConcurrency` (type: `integer`):

Maximum number of concurrent requests. Lower this if you encounter rate limiting or timeouts. Default is 5 which balances speed and reliability.

## Actor input object example

```json
{
  "location": "Orlando, FL",
  "maxResults": 10,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Link to the dataset containing all extracted school 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 = {
    "location": "Orlando, FL",
    "maxResults": 10,
    "maxConcurrency": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammadafzal/greatschools-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 = {
    "location": "Orlando, FL",
    "maxResults": 10,
    "maxConcurrency": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("muhammadafzal/greatschools-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 '{
  "location": "Orlando, FL",
  "maxResults": 10,
  "maxConcurrency": 5
}' |
apify call muhammadafzal/greatschools-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "GreatSchools Scraper — Ratings, Scores & Demographics",
        "description": "Scrape US K-12 school data from GreatSchools.org: ratings, test scores, demographics, enrollment, contacts & more. Search by city/state or paste school URLs. Covers public, charter & private schools across all 50 states.",
        "version": "1.0",
        "x-build-id": "S4OmzHQ9f7VavS9df"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/muhammadafzal~greatschools-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-muhammadafzal-greatschools-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/muhammadafzal~greatschools-scraper/runs": {
            "post": {
                "operationId": "runs-sync-muhammadafzal-greatschools-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/muhammadafzal~greatschools-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-muhammadafzal-greatschools-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": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Use this field when the user provides specific GreatSchools.org URLs to scrape directly. Accepts school profile URLs (e.g. https://www.greatschools.org/florida/orlando/18885-Laureate-Park-Elementary/) or city listing URLs (e.g. https://www.greatschools.org/florida/orlando/). Do NOT use this when the user describes a location — use the location field instead.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Enter a city and US state to search for schools. Use 'City, ST' format — for example, 'Orlando, FL' or 'Los Angeles, CA'. You can also use just a city name with full state like 'Oklahoma City, Oklahoma'. The actor converts this to a GreatSchools city page URL and extracts all school profile links from it. Required if startUrls is not provided."
                    },
                    "schoolLevels": {
                        "title": "School Levels",
                        "type": "array",
                        "description": "Select school levels to filter by. Leave empty to include all levels. Valid values: preschool, elementary, middle, high. The actor checks each school's grade range and includes only matching levels.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "schoolTypes": {
                        "title": "School Types",
                        "type": "array",
                        "description": "Select school types to filter by. Leave empty to include all types. Valid values: public, charter, private.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of schools to collect and return. Set to a small number (3-5) first to verify data quality before scaling up. A single city page typically lists 100-200+ schools.",
                        "default": 10
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Select a proxy to use for scraping. The actor works with datacenter proxies by default. If GreatSchools blocks your requests, switch to residential proxies or provide a custom proxy URL."
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of concurrent requests. Lower this if you encounter rate limiting or timeouts. Default is 5 which balances speed and reliability.",
                        "default": 5
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
