# CutShort Scraper: Tech Jobs, Salary & Company Tech Stacks (`getascraper/cutshort-scraper`) Actor

Scrape tech and startup jobs from CutShort.io. Extract highly structured salary bounds, experience, required skills, company tech stack, funding, size, and even recruiter contact details. Built for recruiters, sales agencies, and developers.

- **URL**: https://apify.com/getascraper/cutshort-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 jobs

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

## Cutshort Scraper: Tech Jobs & Recruiter Leads

**Get live Indian startup job listings (including structured salary ranges, complete company tech stacks, and recruiter contact details) ready for your spreadsheet in under 60 seconds.** Get vacancy titles, standardized USD salary estimates, experience requirements, and direct recruiter outreach coordinates for any keyword across India.

---

### What can you do with it?

*   **I am a B2B sales development representative (SDR)** building a high-fidelity outbound list of Indian tech startups that are actively hiring, targeting founders and named recruiters to pitch development or SaaS services.
*   **I am an international recruiter** looking to source pre-vetted tech talent, salary ranges, and active vacancies across major Indian tech hubs (like Bengaluru, Pune, and Mumbai).
*   **I am a product manager** tracking startup engineering tech stacks and hiring budgets to build competitor analysis reports on emerging SaaS technologies.

---

### How to use it

#### Store Quick Start
1. Create a free Apify account.
2. Open the **Cutshort Scraper** in the Apify Store.
3. Enter your search skills (e.g. `python`, `react`, or `machine-learning`).
4. Click **Start** and download the dataset as JSON, CSV, or Excel.

#### API Quick Start
For developers, you can trigger a run programmatically with a single request:

```bash
curl --request POST \
  --url "https://api.apify.com/v2/acts/getascraper~cutshort-scraper/runs?token=YOUR_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
    "skills": ["python", "react"],
    "maxItems": 100
  }'
````

***

### Input

| Field | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `skills` | `array` | `[]` | Skills or role terms to search on Cutshort (e.g., `python`, `react`). Each is mapped to a search crawl. |
| `startUrls` | `array` | `[]` | Direct category search URLs (e.g. `https://cutshort.io/jobs/python-jobs`). Overrides skills. |
| `includeCompanyDetails` | `boolean` | `true` | Extract full company profile including size, founding year, tech stack, and LinkedIn URL. |
| `includeRecruiter` | `boolean` | `true` | Extract the name and photo of the recruiter who posted the job (ideal for sales development outreach). |
| `includeDescriptionHtml` | `boolean` | `true` | Include raw HTML job description in the output (clean plain text is always included). |
| `outputMode` | `string` | `full` | `full` = all fields, `summary` = key fields only, `urls_only` = just job IDs and URLs. |
| `maxItems` | `integer` | `100` | Maximum number of job listings to extract. |
| `proxyConfiguration` | `object` | `{"useApifyProxy": false}` | Optional proxies. Cutshort is completely public and has low anti-bot measures. |

***

### Output

Each row represents a single tech job listing from Cutshort.

```json
{
  "jobId": "6a27dffa765bab0fff0caae9",
  "jobSlug": "Full-Stack-Developer-Pune-Bengaluru-Bangalore-Metron-Security-Private-Limited-MPDJ8rr0",
  "url": "https://cutshort.io/job/Full-Stack-Developer-Pune-Bengaluru-Bangalore-Metron-Security-Private-Limited-MPDJ8rr0",
  "applyUrl": "https://cutshort.io/profile/view/j/6a27dffa765bab0fff0caae9",
  "title": "Full Stack Developer",
  "descriptionText": "We are looking for a skilled Backend Developer with 3–5 years of experience in software development, specializing in Python and/or Golang...",
  "skills": ["Python", "Go Programming (Golang)", "Java", "Javascript"],
  "locationsText": "Pune, Bengaluru (Bangalore)",
  "remote": true,
  "salaryMin": 500000,
  "salaryMax": 1200000,
  "salaryMinUSD": 6000,
  "salaryMaxUSD": 14400,
  "salaryCurrency": "INR",
  "salaryPeriod": "year",
  "salaryRawText": "₹5L - ₹12L / yr",
  "experienceMin": 3,
  "experienceMax": 5,
  "experienceText": "3-5 years",
  "companyName": "Metron Security Private Limited",
  "companyLogo": "https://cdnv2.cutshort.io/company-static/659e7f83d32e8a0028ccc51b/user_uploaded_data/logos/company_logo.png",
  "companySize": "20-100",
  "companyStage": "Bootstrapped",
  "companyFounded": 2022,
  "companyUrl": "https://metronlabs.com",
  "companyLinkedin": "https://linkedin.com/company/metron-labs",
  "companyTechStack": ["Python", "NodeJS", "React.js", "HTML/CSS", "Angular (2+)", "AWS", "Cyber Security"],
  "recruiterName": "Prathamesh Shinde",
  "recruiterPhoto": "https://cdn.apify.com/.../profile.png",
  "scrapedAt": "2026-06-08T12:34:56.789Z"
}
```

#### Field Reference

| Field | Type | Description |
| :--- | :--- | :--- |
| `jobId` | `string` | Unique identifier of the job listing. |
| `url` | `string` | Canonical Cutshort project URL. |
| `title` | `string` | Job title. |
| `skills` | `array` | Core required skills. |
| `salaryMinUSD` | `number` | Estimated minimum yearly salary in USD (great for global benchmarks). |
| `salaryMaxUSD` | `number` | Estimated maximum yearly salary in USD. |
| `companyTechStack` | `array` | Complete list of engineering tools and technologies used by the company. |
| `recruiterName` | `string` | Full name of the recruiter who posted the job. |
| `applyUrl` | `string` | Direct, unauthenticated link to submit profile or application. |

***

### Pricing & Cost

Pricing is pay-per-result and is billed per row successfully saved to your dataset. Empty runs cost absolutely nothing.

- **Rate:** **$1.80 per 1,000 results** ($0.0018 per result).
- **100 listings** typically cost **$0.18**.
- **1,000 listings** cost exactly **$1.80**.
- **10,000 listings** cost exactly **$18.00**.
- No fixed monthly subscriptions or hidden maintenance fees.

***

### Tips & Best Practices

- **Bypass proxies altogether.** Because this Actor queries Cutshort's public Next.js API payloads directly, there is **no browser overhead and no proxy cost**. It runs at lightning speed with near-zero resource consumption.
- **Track company tech stacks.** Audit `companyTechStack` in bulk to instantly see what database, cloud, or backend frameworks your competitors are transitioning to.
- **Outbound prospecting.** Enable `includeRecruiter` to get verified recruiter names and profile photos, giving your SDRs highly warm B2B leads.

***

### FAQ

##### Does it get blocked by Cutshort?

No. Cutshort uses a highly compatible Next.js server-side hydration architecture. The scraper reads the pre-hydrated JSON from the public HTML, operating at 10x the speed of standard browsers with 0% anti-bot blocks.

##### Does it extract private recruiter or candidate contact details?

No. To protect user privacy and avoid verification blocks, the scraper does not extract private recruiters, candidate accounts, or personal phone numbers. It strictly retrieves public vacancy roles, companies, and requirements.

##### How fresh is the data?

Extremely fresh. The scraper executes live HTTP requests on every query, retrieving the absolute latest tech jobs active on the Cutshort marketplace in real-time.

##### Are all categories supported?

Yes. The scraper supports all major tech occupations including Python, React, Node.js, DevOps, Product Management, Machine Learning, and UI/UX.

***

### Target SEO Keywords

- Cutshort API
- scrape Cutshort
- Indian startup jobs data
- Bengaluru tech jobs scraper
- Cutshort recruiter leads API

***

### Disclaimers & Support

- **Disclaimer:** This Actor retrieves publicly available job postings on Cutshort. Make sure your usage complies with Cutshort's terms of service and applicable laws.
- **Support:** Open an issue from the Actor page in the Apify Console for bug reports or feature requests.

# Actor input Schema

## `skills` (type: `array`):

Skills or role terms to search on CutShort (e.g. 'python', 'react', 'machine-learning'). Leave empty to use fallback or direct URLs.

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

Optional direct CutShort job list URLs. Used when Skills is empty. E.g. https://cutshort.io/jobs/python-jobs.

## `includeCompanyDetails` (type: `boolean`):

Extract full company profile (stage, size, founded, tech stack, and LinkedIn URL) in addition to basic info.

## `includeRecruiter` (type: `boolean`):

Extract name and photo of the individual recruiter who posted the listing. Highly valuable for sales development outreach.

## `includeDescriptionHtml` (type: `boolean`):

Include raw HTML job description in the output (descriptionText is always included as plain text).

## `outputMode` (type: `string`):

full = all fields, summary = standard job board columns, urls\_only = just job IDs and URLs.

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

Maximum number of job listings to extract.

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

Optional proxy. CutShort is completely public and has low anti-bot measures, so the default is no proxy.

## Actor input object example

```json
{
  "skills": [
    "python"
  ],
  "startUrls": [],
  "includeCompanyDetails": true,
  "includeRecruiter": true,
  "includeDescriptionHtml": true,
  "outputMode": "full",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "skills": [
        "python"
    ],
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/cutshort-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 = {
    "skills": ["python"],
    "startUrls": [],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/cutshort-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 '{
  "skills": [
    "python"
  ],
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call getascraper/cutshort-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CutShort Scraper: Tech Jobs, Salary & Company Tech Stacks",
        "description": "Scrape tech and startup jobs from CutShort.io. Extract highly structured salary bounds, experience, required skills, company tech stack, funding, size, and even recruiter contact details. Built for recruiters, sales agencies, and developers.",
        "version": "0.0",
        "x-build-id": "NvuRWL2e15ScaY9IN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~cutshort-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-cutshort-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/getascraper~cutshort-scraper/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-cutshort-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/getascraper~cutshort-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-cutshort-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": {
                    "skills": {
                        "title": "Search Skills / Roles",
                        "type": "array",
                        "description": "Skills or role terms to search on CutShort (e.g. 'python', 'react', 'machine-learning'). Leave empty to use fallback or direct URLs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "CutShort Search/Category URLs (Advanced)",
                        "type": "array",
                        "description": "Optional direct CutShort job list URLs. Used when Skills is empty. E.g. https://cutshort.io/jobs/python-jobs.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "includeCompanyDetails": {
                        "title": "Include Company Profile",
                        "type": "boolean",
                        "description": "Extract full company profile (stage, size, founded, tech stack, and LinkedIn URL) in addition to basic info.",
                        "default": true
                    },
                    "includeRecruiter": {
                        "title": "Include Recruiter Outbound Info",
                        "type": "boolean",
                        "description": "Extract name and photo of the individual recruiter who posted the listing. Highly valuable for sales development outreach.",
                        "default": true
                    },
                    "includeDescriptionHtml": {
                        "title": "Include HTML Description",
                        "type": "boolean",
                        "description": "Include raw HTML job description in the output (descriptionText is always included as plain text).",
                        "default": true
                    },
                    "outputMode": {
                        "title": "Output Detail",
                        "enum": [
                            "full",
                            "summary",
                            "urls_only"
                        ],
                        "type": "string",
                        "description": "full = all fields, summary = standard job board columns, urls_only = just job IDs and URLs.",
                        "default": "full"
                    },
                    "maxItems": {
                        "title": "Max Job Listings",
                        "minimum": 1,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Maximum number of job listings to extract.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optional proxy. CutShort is completely public and has low anti-bot measures, so the default is no proxy.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
