# 2GIS Reviews Scraper: Отзывы 2ГИС (`getascraper/2gis-reviews-scraper`) Actor

Scrape 2GIS (2ГИС) place reviews with the full review text, star rating, reviewer identity, likes and comments, and the business's own reply. Filter by rating or written-text-only and export to JSON, CSV, or Excel.

- **URL**: https://apify.com/getascraper/2gis-reviews-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Lead generation, SEO tools, Travel
- **Stats:** 2 total users, 1 monthly users, 80.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.66 / 1,000 place reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

## 2GIS Reviews Scraper: Отзывы 2ГИС

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#EAF8EE;border:1px solid #C7EAD2;border-top:4px solid #1E9E4A;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Get full 2GIS review text, ratings, and business replies, ready for your spreadsheet in minutes.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pull every review posted on any 2ГИС (2GIS) place page: the actual words people wrote, their rating, who they are, and how the business replied, not just a star average.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7EAD2;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#146B33">📝 Full review text</span><br>
<span style="font-size:12px;color:#57534E">The reviewer's actual words, not just a number out of 5.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7EAD2;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#146B33">👤 Real reviewer identity</span><br>
<span style="font-size:12px;color:#57534E">Name, profile ID, and how many reviews they've posted in total.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7EAD2;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#146B33">👍 Engagement signals</span><br>
<span style="font-size:12px;color:#57534E">Likes and comments on each review show which ones actually matter.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7EAD2;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#146B33">💬 Business replies</span><br>
<span style="font-size:12px;color:#57534E">See exactly how, and whether, the business responded to each review.</span>
</td>
</tr>
</table>

### 🔍 What does 2GIS Reviews Scraper do?

[2GIS](https://2gis.ru) (2ГИС) is Russia's largest local business directory and maps service, covering millions of shops, restaurants, clinics, and service businesses across the country. This Actor scrapes the reviews section of any 2GIS place page and returns the full review text, star rating, reviewer name and profile details, likes and comments count, and the business's own reply where one exists.

Give it a firm ID or a 2GIS place URL and it handles pagination automatically, so you get every available review in one run instead of a handful from the first page. Run it on demand, schedule it to check for new reviews daily or weekly, or call it from your own app through the Apify API.

### 🎯 Why use 2GIS Reviews Scraper?

Most 2GIS review tools on the market return a star average and a review count. That tells you a place is rated 4.5 out of 5, but not why, and not what to do about it.

* **I am a reputation management agency** monitoring 2GIS listings for retail chains and service businesses across Russian cities, and I need the actual complaint text to spot recurring issues before they show up in a client's monthly report.
* **I am a market researcher** running sentiment analysis on reviews for Russian retail, restaurant, or service brands, and star ratings alone give me no text to analyze.
* **I am a local business owner** with locations in several cities, and I want to check whether my staff are actually replying to reviews and how customers are responding to those replies.

### 🚀 How to use 2GIS Reviews Scraper

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#EAF8EE;border:1px solid #C7EAD2;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1E9E4A;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Point at a place</span><br>
<span style="font-size:12px;color:#57534E">Paste a 2GIS firm ID or a full place URL, any city.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EAF8EE;border:1px solid #C7EAD2;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1E9E4A;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your filters</span><br>
<span style="font-size:12px;color:#57534E">Rating range, text-only reviews, sort order, and how many to collect.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EAF8EE;border:1px solid #C7EAD2;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1E9E4A;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Get your dataset</span><br>
<span style="font-size:12px;color:#57534E">Every review's text, rating, author, and reply, ready for export.</span>
</td>
</tr>
</table>

1. Open 2GIS Reviews Scraper on the Apify Store and click **Try for free**.
2. Paste one or more firm IDs into **Firm / place IDs**, or paste full 2GIS place URLs into **2GIS place URLs**. Either works, and cities don't matter.
3. Optionally set a minimum or maximum rating, or turn on **Only reviews with written text**.
4. Click **Start** and download your results as JSON, CSV, or Excel once the run finishes.

### 📥 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `firmIds` | array of strings | No | Numeric 2GIS firm IDs, e.g. `4504127912651411`. Find one in any 2GIS place URL, or paste full URLs into `urls` instead. |
| `urls` | array of strings | No | Full 2GIS place page URLs, e.g. `https://2gis.ru/moscow/firm/4504127912651411`. The firm ID is read from the URL automatically. |
| `sortBy` | enum | No | Order reviews are returned in. 2GIS does not offer a rating-based sort, only newest by edit date, newest by post date, reviews from a reviewer's friends, or most trusted reviewers first. Defaults to newest by edit date. |
| `minRating` | integer | No | Only return reviews rated at or above this score, out of 5. |
| `maxRating` | integer | No | Only return reviews rated at or below this score, out of 5. Set to 2 to pull complaints only. |
| `withTextOnly` | boolean | No | Skip rating-only entries where the reviewer left no written comment. Defaults to false. |
| `maxItemsPerFirm` | integer | No | Maximum number of reviews to return for each place. Defaults to 500. |
| `includeRawData` | boolean | No | Attach 2GIS's original unprocessed review object under a `raw` field, for anyone who wants to see the full source data. Defaults to false. |
| `proxyConfiguration` | object | No | Proxy settings. Datacenter proxies are the default and work reliably here at a lower cost than residential. |

### 📤 Output

Every review is returned as one dataset item. Here is a real review pulled during testing:

```json
{
    "id": "257144389",
    "firmId": "4504127912651411",
    "firmUrl": "https://2gis.ru/firm/4504127912651411",
    "firmRating": 4.5,
    "firmReviewsCount": 425,
    "provider": "2gis",
    "rating": 5,
    "text": "хорошее приложение,никогда не подводило",
    "dateCreated": "2026-07-10T18:03:17.286351+07:00",
    "likesCount": 0,
    "commentsCount": 1,
    "authorId": "104402687",
    "authorName": "Александра Рыльская",
    "authorPublicId": "5a76808f8f23470186ecca693b1fcba7",
    "authorReviewsCount": 2,
    "hasReply": true,
    "replyText": "Александра, рады слышать 🙌",
    "replyDate": "2026-07-13T16:28:20.642912+07:00",
    "replyAuthor": "2ГИС, городской информационный сервис",
    "scrapedAt": "2026-07-15T14:11:32.988Z"
}
````

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel directly from the Apify Console or via the API.

### 📊 Data table

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | 2GIS's own ID for this review. |
| `firmId` | string | The firm/place ID this review belongs to. |
| `firmUrl` | string | A direct link to the place on 2GIS. |
| `firmRating` | number | The place's overall average rating at scrape time. |
| `firmReviewsCount` | number | The place's total review count at scrape time. |
| `provider` | string | Which review source fed this review into 2GIS (most are native `2gis` reviews). |
| `rating` | number | The star rating the reviewer left, out of 5. |
| `text` | string | The full review text. |
| `dateCreated` | string | When the review was originally posted. |
| `dateEdited` | string | When the review was last edited, if it was. |
| `likesCount` | number | How many other users liked this review. |
| `commentsCount` | number | How many comments this review has. |
| `authorId` | string | The reviewer's 2GIS user ID. |
| `authorName` | string | The reviewer's display name. |
| `authorPublicId` | string | The reviewer's public profile ID. |
| `authorReviewsCount` | number | How many reviews this reviewer has posted in total. |
| `authorPhotoUrl` | string | The reviewer's profile photo, if they have one. |
| `hasReply` | boolean | Whether the business replied to this review. |
| `replyText` | string | The business's reply text, if any. |
| `replyDate` | string | When the business replied. |
| `replyAuthor` | string | The name the business replied under. |
| `scrapedAt` | string | When this Actor collected the review. |

### 💰 Pricing

Pricing is pay per result and is billed per review saved to your dataset. Empty runs cost nothing, and there are no fixed monthly subscriptions or hidden fees. You only pay for the reviews you actually get back.

### ⭐ Enjoying 2GIS Reviews Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#EAF8EE;border:1px solid #C7EAD2;border-left:5px solid #1E9E4A;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Glad this got you real review text instead of a score with nothing behind it.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other reputation managers and market researchers find an Actor that returns the actual words behind the rating. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#1E9E4A;border:1px solid #C7EAD2;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/2gis-reviews-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 💡 Tips and advanced options

- Leave `maxItemsPerFirm` at its default unless you know a place has more than 500 reviews. Raising it costs more only if that many reviews actually exist to return.
- Turn on **Only reviews with written text** when you're doing sentiment analysis and don't want rating-only noise skewing your word counts.
- Use `minRating`/`maxRating` together to isolate complaints (1-2 stars) or praise (4-5 stars) without reading through everything in between.
- Turn on `includeRawData` only if you need fields this Actor doesn't already normalize. It roughly doubles the size of each dataset item.

### ❓ FAQ

##### Does this scraper get blocked by 2GIS?

No. It routes requests through Apify's proxy network and has run reliably in testing without needing residential IPs or logins.

##### Как выгрузить отзывы 2ГИС в Excel?

Run the Actor, then open the **Export** option on the dataset and choose Excel, CSV, JSON, or a few other formats. No extra setup is needed.

##### Может ли этот скрапер получить текст отзыва, а не только оценку?

Yes. This is the core difference from scrapers that return only a star average and review count: every item includes the reviewer's actual written text, when there is any.

##### Does it return every review, or just the first page?

It follows 2GIS's pagination automatically until it collects every available review or hits your `maxItemsPerFirm` limit, whichever comes first.

##### Does it work for any business type or city?

Yes. Any place with a public 2GIS page works, in any city 2GIS covers, regardless of business category.

##### Are hidden or removed reviews included?

No. Only reviews 2GIS itself shows publicly are returned. Reviews it has hidden or removed through its own moderation are not surfaced.

Found a bug or have a feature request? Open an issue on the Actor's Issues tab. Need a custom version for a specific workflow? Reach out through Apify and we can scope it.

### 🔗 Other actors

- [Avito Auto Scraper: Парсер Авито Авто](https://apify.com/getascraper/avito-auto-scraper) ↗ - Vehicle listings from Russia's largest classifieds site, with pricing and dealer details.
- [Yandex Maps Review Monitor: Парсер отзывов Яндекс Карт](https://apify.com/getascraper/yandex-maps-review-monitor) ↗ - Reviews from Russia's other major maps platform, for cross-checking coverage between the two.
- [Ostrovok Reviews Scraper: Отзывы Островок](https://apify.com/getascraper/ostrovok-reviews-scraper) ↗ - Full guest review text and hotel replies from Russia's largest hotel booking site.
- [Wildberries Reviews Scraper: Ratings, Text & Photos](https://apify.com/getascraper/wildberries-reviews-scraper) ↗ - Product review text and photos from Russia's largest online marketplace.
- [TeamBlind Reviews Scraper: Tech Employer Ratings](https://apify.com/getascraper/teamblind-reviews-scraper) ↗ - Employee review text for tech employers, for the same kind of text-over-score comparison.

# Actor input Schema

## `firmIds` (type: `array`):

Numeric 2GIS firm IDs, e.g. "4504127912651411". Find one in a 2GIS place URL, or paste full place URLs below instead.

## `urls` (type: `array`):

Paste full 2GIS place page URLs, e.g. https://2gis.ru/moscow/firm/4504127912651411. The firm ID is read from the URL.

## `sortBy` (type: `string`):

Order in which reviews are returned. 2GIS does not offer a rating-based sort, only these four.

## `minRating` (type: `integer`):

Only return reviews rated at or above this score. 2GIS rates out of 5.

## `maxRating` (type: `integer`):

Only return reviews rated at or below this score. Set this to 2 to pull complaints only.

## `withTextOnly` (type: `boolean`):

Skip rating-only entries where the reviewer left no comment.

## `maxItemsPerFirm` (type: `integer`):

Maximum number of reviews to return for each place.

## `includeRawData` (type: `boolean`):

Attach 2GIS's original unprocessed review object under a 'raw' field.

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

Datacenter proxies (the default) work reliably here and cost far less. Switch to Residential only if a very large run hits rate limits.

## Actor input object example

```json
{
  "firmIds": [
    "4504127912651411"
  ],
  "urls": [],
  "sortBy": "date_edited",
  "withTextOnly": false,
  "maxItemsPerFirm": 500,
  "includeRawData": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "firmIds": [
        "4504127912651411"
    ],
    "urls": [],
    "sortBy": "date_edited",
    "withTextOnly": false,
    "maxItemsPerFirm": 500,
    "includeRawData": false,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/2gis-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 = {
    "firmIds": ["4504127912651411"],
    "urls": [],
    "sortBy": "date_edited",
    "withTextOnly": False,
    "maxItemsPerFirm": 500,
    "includeRawData": False,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/2gis-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 '{
  "firmIds": [
    "4504127912651411"
  ],
  "urls": [],
  "sortBy": "date_edited",
  "withTextOnly": false,
  "maxItemsPerFirm": 500,
  "includeRawData": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/2gis-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "2GIS Reviews Scraper: Отзывы 2ГИС",
        "description": "Scrape 2GIS (2ГИС) place reviews with the full review text, star rating, reviewer identity, likes and comments, and the business's own reply. Filter by rating or written-text-only and export to JSON, CSV, or Excel.",
        "version": "0.1",
        "x-build-id": "voI1Jmf4GpLyrfVAW"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~2gis-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-2gis-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/getascraper~2gis-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-2gis-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/getascraper~2gis-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-2gis-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",
                "properties": {
                    "firmIds": {
                        "title": "Firm / place IDs",
                        "type": "array",
                        "description": "Numeric 2GIS firm IDs, e.g. \"4504127912651411\". Find one in a 2GIS place URL, or paste full place URLs below instead.",
                        "default": [
                            "4504127912651411"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "urls": {
                        "title": "2GIS place URLs",
                        "type": "array",
                        "description": "Paste full 2GIS place page URLs, e.g. https://2gis.ru/moscow/firm/4504127912651411. The firm ID is read from the URL.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortBy": {
                        "title": "Sort reviews by",
                        "enum": [
                            "date_edited",
                            "date_created",
                            "friends",
                            "trust"
                        ],
                        "type": "string",
                        "description": "Order in which reviews are returned. 2GIS does not offer a rating-based sort, only these four.",
                        "default": "date_edited"
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Only return reviews rated at or above this score. 2GIS rates out of 5."
                    },
                    "maxRating": {
                        "title": "Maximum rating",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Only return reviews rated at or below this score. Set this to 2 to pull complaints only."
                    },
                    "withTextOnly": {
                        "title": "Only reviews with written text",
                        "type": "boolean",
                        "description": "Skip rating-only entries where the reviewer left no comment.",
                        "default": false
                    },
                    "maxItemsPerFirm": {
                        "title": "Max reviews per place",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of reviews to return for each place.",
                        "default": 500
                    },
                    "includeRawData": {
                        "title": "Include raw API data",
                        "type": "boolean",
                        "description": "Attach 2GIS's original unprocessed review object under a 'raw' field.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Datacenter proxies (the default) work reliably here and cost far less. Switch to Residential only if a very large run hits rate limits.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
