{
  "openapi": "3.0.1",
  "info": {
    "title": "Yandex Maps Reviews Scraper — Ratings, Replies & AI Summary",
    "description": "Scrape Yandex Maps reviews of any place, by URL, place ID or keyword + city: rating, full text, date, author, owner reply, photos, translations, plus the place's details and Yandex AI summary on every row. Well past the 600-review limit. Monitor new reviews. Export JSON, CSV, Excel.",
    "version": "0.0",
    "x-build-id": "eMANKqHy2te70VC31"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nice_dev~yandex-maps-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nice_dev-yandex-maps-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/nice_dev~yandex-maps-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nice_dev-yandex-maps-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/nice_dev~yandex-maps-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nice_dev-yandex-maps-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": {
          "startUrls": {
            "title": "Place URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Yandex Maps place pages (`https://yandex.com/maps/org/<name>/<id>/`, also its `/reviews/` tab), short links (`https://yandex.ru/maps/-/CDabc123`) or search result pages (`https://yandex.com/maps/213/moscow/search/dentist/`: the reviews of the places found, capped by **Max places per search**). yandex.ru, .com, .com.tr, .kz, .by, .uz are accepted. When this list or **Place IDs** is not empty, the search fields below are ignored. Max 1 000 URLs.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "businessIds": {
            "title": "Place IDs",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Yandex Maps place IDs (the number at the end of a place URL, e.g. `1036014863`), for instance the `placeId` column of a previous run or of a places scraper. Added to **Place URLs**: the search fields below are then ignored.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "authorUrls": {
            "title": "Author profile URLs",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Yandex Maps author profile URLs (e.g. `https://yandex.com/maps/user/d40th2ke7tvjekwbejcjxvm2w8/`) or author IDs: every review each author wrote on Yandex Maps, one row per review with the place it is about. Can be mixed with **Place URLs** and **Place IDs**; the search fields are then ignored. The place filters, **Max places**, **Review topics** and the place options are not available with authors. Max 1 000 authors.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "query": {
            "title": "Search keyword",
            "maxLength": 200,
            "type": "string",
            "description": "Find the places by keyword instead of pasting them: what to look for on Yandex Maps, in any language (e.g. `dentist`, `стоматология`, `кафе`, `kuaför`), with a **Location**. The reviews of each place found are read, up to **Max places per search**."
          },
          "searchQueries": {
            "title": "More search keywords",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several keywords in one run: one search per keyword (times each location below). Added to **Search keyword**; places found by several searches are saved once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "maxLength": 200,
            "type": "string",
            "description": "City, district, street or country of the keyword search, as typed on Yandex Maps (e.g. `Moscow`, `Санкт-Петербург`, `Istanbul`, `Almaty`). Empty = the map area below, or Moscow."
          },
          "locations": {
            "title": "More locations",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several locations in one run: every keyword is searched in every location (3 keywords × 4 locations = 12 searches, max 500). Added to **Location**.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "coordinates": {
            "title": "Map center (longitude,latitude)",
            "pattern": "^\\s*-?\\d{1,3}(\\.\\d+)?\\s*,\\s*-?\\d{1,2}(\\.\\d+)?\\s*$",
            "maxLength": 60,
            "type": "string",
            "description": "Search around this point instead of a named location: `longitude,latitude` in decimal degrees, longitude FIRST as in Yandex URLs (e.g. `37.6173,55.7558` = Moscow center). Used with **Map span** or **Radius**; ignored when a location is given."
          },
          "viewportSpan": {
            "title": "Map span (longitude,latitude)",
            "pattern": "^\\s*\\d{1,3}(\\.\\d+)?\\s*,\\s*\\d{1,2}(\\.\\d+)?\\s*$",
            "maxLength": 60,
            "type": "string",
            "description": "Size of the searched area around **Map center**, in degrees: `width,height` (e.g. `0.2,0.1` ≈ 12 × 11 km in Moscow). Default `0.2,0.1`."
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Search a square of this half-size around **Map center** instead of **Map span** (e.g. `5` = 10 × 10 km). 0 = use Map span.",
            "default": 0
          },
          "boundingBox": {
            "title": "Map rectangle",
            "pattern": "^\\s*-?\\d{1,3}(\\.\\d+)?\\s*,\\s*-?\\d{1,2}(\\.\\d+)?\\s*,\\s*-?\\d{1,3}(\\.\\d+)?\\s*,\\s*-?\\d{1,2}(\\.\\d+)?\\s*$",
            "maxLength": 120,
            "type": "string",
            "description": "Search this rectangle: `west,south,east,north` in decimal degrees (e.g. `37.35,55.57,37.85,55.92` = Moscow inside the ring road). Wins over Map center; ignored when a location is given."
          },
          "splitArea": {
            "title": "Split big areas automatically",
            "type": "boolean",
            "description": "One Yandex search shows at most ~650 distinct places. On: a search that fills up is cut into 4 map tiles, searched again, so a whole city can be covered (for **Max places per search** above 600). Off = one search per keyword × location.",
            "default": false
          },
          "tileGrid": {
            "title": "Start grid (tiles per side)",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Cut every searched area into N × N tiles from the start (e.g. `4` = 16 searches), before any automatic split. 1 = one search per area.",
            "default": 1
          },
          "maxItemsPerQuery": {
            "title": "Max places per search",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "How many places EACH keyword search (keyword × location, or search URL) contributes; their reviews are then read. 0 = every place found. Places pasted as URLs or IDs are not counted here (**Max places** caps them).",
            "default": 20
          },
          "maxPlaces": {
            "title": "Max places",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap on the number of places read in the run, all inputs together. 0 = no cap.",
            "default": 0
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "ru",
              "tr",
              "uk",
              "kk"
            ],
            "type": "string",
            "description": "Language of the place details (name, address, categories) and of the review translations Yandex gives. Review text is always in its original language.",
            "default": "en"
          },
          "maxReviewsPerPlace": {
            "title": "Max reviews per place",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of reviews per place, in the order below. Yandex shows 600 reviews per sort order; 0 = as many as Yandex gives (the 4 sort orders merged, then the review topics with **Deep reviews**). Popular places have thousands: set **Max reviews** or a maximum cost of the run.",
            "default": 100
          },
          "maxReviewsPerAuthor": {
            "title": "Max reviews per author",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of reviews read of EACH author in **Author profile URLs**, the newest first. Empty or 0 = every review the author wrote (the newest 5 000 of an author who wrote more). Not applied to places."
          },
          "reviewSort": {
            "title": "Review order",
            "enum": [
              "newest",
              "relevance",
              "highest",
              "lowest"
            ],
            "type": "string",
            "description": "Order in which reviews are read (and cut by Max reviews per place).",
            "default": "newest"
          },
          "deepReviews": {
            "title": "Deep reviews (beyond the 4 sort orders)",
            "type": "boolean",
            "description": "When a place has more reviews than the 4 sort orders give (1 283 and 1 703 on two big places, never more than 4 × 600 = 2 400) and **Max reviews per place** asks for more: read the place's review topics (food, staff, parking…) one by one. Gorky Park: 7 844 distinct reviews instead of 1 703. Slower (5 to 13 reviews per request instead of 50); each review is charged the same.",
            "default": true
          },
          "maxItems": {
            "title": "Max reviews",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Cap on the reviews saved in the run, all places together (the run stops there). 0 = no cap. This is the budget stop: 1 review = 1 row = 1 charge.",
            "default": 0
          },
          "minRating": {
            "title": "Minimum review rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Only reviews rated at least this many stars (1-5). 0 = all.",
            "default": 0
          },
          "maxRating": {
            "title": "Maximum review rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Only reviews rated at most this many stars (1-5): `2` = complaints only. 0 = all.",
            "default": 0
          },
          "postedAfter": {
            "title": "Reviews posted after",
            "type": "string",
            "description": "Only reviews written (or last edited) on or after this date: `2026-09-01`, or a period before now such as `7 days`, `2 weeks`, `1 month` (API: `24 hours` and full ISO date-times work too)."
          },
          "postedBefore": {
            "title": "Reviews posted before",
            "type": "string",
            "description": "Only reviews written on or before this date (the whole day is included), or older than a period such as `30 days`."
          },
          "postedWithinDays": {
            "title": "Reviews of the last N days",
            "minimum": 0,
            "maximum": 36500,
            "type": "integer",
            "description": "Only reviews written (or last edited) in the last N days, counted from the start of the run. 0 = no limit. Together with **Reviews posted after**, the more recent of the two dates applies.",
            "default": 0
          },
          "onlyWithText": {
            "title": "Reviews with text only",
            "type": "boolean",
            "description": "Drop the ratings without any text.",
            "default": false
          },
          "onlyWithPhotos": {
            "title": "Reviews with photos only",
            "type": "boolean",
            "description": "Keep only the reviews that have at least one photo attached.",
            "default": false
          },
          "onlyWithVideos": {
            "title": "Reviews with videos only",
            "type": "boolean",
            "description": "Keep only the reviews that have at least one video attached.",
            "default": false
          },
          "onlyWithBusinessReply": {
            "title": "Reviews with an owner's answer only",
            "type": "boolean",
            "description": "Keep only the reviews the business answered.",
            "default": false
          },
          "onlyWithoutBusinessReply": {
            "title": "Reviews without an owner's answer only",
            "type": "boolean",
            "description": "Keep only the reviews the business has not answered yet. Cannot be used together with **Reviews with an owner's answer only**.",
            "default": false
          },
          "ratings": {
            "title": "Exact review ratings",
            "maxItems": 5,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the reviews with exactly these ratings, from 1 to 5 (e.g. `1`, `2` and `5`). Empty = all ratings. Combined with **Minimum review rating** and **Maximum review rating** when those are set too.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minLikes": {
            "title": "Minimum likes",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only reviews that readers found useful at least this many times. 0 = no minimum.",
            "default": 0
          },
          "minTextLength": {
            "title": "Minimum text length",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Only reviews whose text has at least this many characters. 0 = no minimum.",
            "default": 0
          },
          "reviewLanguages": {
            "title": "Review languages",
            "maxItems": 30,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the reviews written in these languages: two-letter codes such as `ru`, `en`, `tr` (the language of the review text, the Text language column). A review whose language Yandex does not give is dropped when this list is not empty. Empty = all languages.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minAuthorLevel": {
            "title": "Minimum author level",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only reviews by authors who have reached at least this level on Yandex (\"Local Expert level 6\" = 6). A reviewer without a level is dropped when this is set. 0 = no minimum.",
            "default": 0
          },
          "reviewKeywords": {
            "title": "Review keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the reviews whose text contains one of these words (case and accents ignored).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeReviewKeywords": {
            "title": "Exclude review keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop the reviews whose text contains one of these words (case and accents ignored, like **Review keywords**).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "reviewTopics": {
            "title": "Review topics",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Read only the reviews about these topics, the topic tags Yandex shows on a place (e.g. `Service`, `Prices`, `Food`). Write the names as Yandex shows them in the language of the run (**Language**), or use the topic IDs. A name matches when it contains your word, case ignored. Each topic is read on its own and the review row gets the Topics, Topic quote and Topic highlight columns. **Max reviews per place** caps the whole place. A topic with more than 600 reviews is read in the order you choose, then in the other orders when **Deep reviews** is on. A place without a matching topic gives no review and nothing is charged for it. A review already delivered under one topic is not written again under another. Empty = all reviews, as usual.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "topicOrder": {
            "title": "Topic review order",
            "enum": [
              "negativeFirst",
              "positiveFirst",
              "newest",
              "highest"
            ],
            "type": "string",
            "description": "Order of the reviews inside each topic of **Review topics**: the most negative first, the most positive first, the newest first or the highest rating first. No effect when **Review topics** is empty.",
            "default": "negativeFirst"
          },
          "anonymizeAuthors": {
            "title": "Anonymize authors",
            "type": "boolean",
            "description": "Leave the reviewers' name, ID, profile link and avatar out of the results (they come out empty). The other columns of the review stay.",
            "default": false
          },
          "minPlaceRating": {
            "title": "Minimum place rating",
            "enum": [
              "",
              "4",
              "4.5",
              "4.7",
              "4.9"
            ],
            "type": "string",
            "description": "Only places rated at least this (Yandex filter, then checked on each place by the Actor: a place it drops is charged as a *Filter check*).",
            "default": ""
          },
          "openNow": {
            "title": "Open now",
            "type": "boolean",
            "description": "Only places open at the time of the run (Yandex filter).",
            "default": false
          },
          "open24h": {
            "title": "Open 24 hours",
            "type": "boolean",
            "description": "Only places open around the clock (Yandex filter).",
            "default": false
          },
          "goodPlaceOnly": {
            "title": "\"Good place\" award only",
            "type": "boolean",
            "description": "Only places with the Yandex \"Good place\" award (Yandex filter).",
            "default": false
          },
          "hasPhotos": {
            "title": "With photos only",
            "type": "boolean",
            "description": "Only places that have photos (Yandex filter).",
            "default": false
          },
          "categoryIds": {
            "title": "Yandex category IDs",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Only places of these Yandex categories (rubric IDs, e.g. `184106132` = dental clinic: the last number of a Yandex Maps category link, `.../category/dental_clinic/184106132/`). Yandex filter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "chainIds": {
            "title": "Chain IDs",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Only the branches of these chains (chain ID: the `chainId` column of a places scraper). Yandex filter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "customFilters": {
            "title": "Other Yandex filters",
            "maxItems": 20,
            "uniqueItems": true,
            "type": "array",
            "description": "Any other filter shown by Yandex for the search, as `filterId:value` (e.g. `car_park:1`, `wheelchair_accessability:1`, `payment_by_credit_card:1`, `type_cuisine:georgian_cuisine`). Tick **Debug log** to see the filters Yandex offers for each search in the run log; they are also listed when a filter is refused. A filter Yandex does not know for the search is reported and the search stops, instead of returning unfiltered places.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "requirePhone": {
            "title": "With phone only",
            "type": "boolean",
            "description": "Drop the places without a phone number.",
            "default": false
          },
          "requireWebsite": {
            "title": "With website only",
            "type": "boolean",
            "description": "Drop the places without a website (the Yandex \"has website\" filter is sent too).",
            "default": false
          },
          "minReviewCount": {
            "title": "Minimum number of reviews",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only places with at least this many reviews on Yandex. 0 = no minimum.",
            "default": 0
          },
          "minAverageBill": {
            "title": "Minimum average bill",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only places whose average bill (the \"average bill\" Yandex shows on restaurants, cafés and similar places) reaches at least this amount, in the currency Yandex prints for the place (rubles in Russia). A range such as 3000–3500 counts when its top reaches the minimum. Places without an average bill are dropped. 0 = no minimum.",
            "default": 0
          },
          "maxAverageBill": {
            "title": "Maximum average bill",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only places whose average bill (the \"average bill\" Yandex shows on restaurants, cafés and similar places) does not exceed this amount, in the currency Yandex prints for the place (rubles in Russia). A range such as 3000–3500 counts when its bottom is within the maximum. Places without an average bill are dropped. 0 = no maximum.",
            "default": 0
          },
          "excludeClosedPlaces": {
            "title": "Skip closed places",
            "type": "boolean",
            "description": "Drop the places Yandex shows as closed, for good or for a while. A place whose status Yandex does not give is kept.",
            "default": false
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop the places whose name or category contains one of these words (case and accents ignored).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeBusinessIds": {
            "title": "Exclude place IDs",
            "maxItems": 10000,
            "uniqueItems": true,
            "type": "array",
            "description": "Never save these places (e.g. your own branches, or places you already have).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyNew": {
            "title": "Only new reviews",
            "type": "boolean",
            "description": "Return only the reviews a previous run with the same **Memory key** did not deliver. With **Newest first**, reading stops at the first review already known: a daily run reads one page per place.",
            "default": false
          },
          "stateKey": {
            "title": "Memory key",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "maxLength": 64,
            "type": "string",
            "description": "Name of the memory used by **Only new reviews**. Give each schedule / task its own key (e.g. `my-clinics`) so that they do not share their memory. Letters, digits, `-` and `_`.",
            "default": "default"
          },
          "resetState": {
            "title": "Reset the memory",
            "type": "boolean",
            "description": "Forget the reviews remembered under the **Memory key** before this run.",
            "default": false
          },
          "reportNewOwnerReplies": {
            "title": "Report new owner replies",
            "type": "boolean",
            "description": "With **Only new reviews**: also deliver again a review from an earlier run that has received an owner reply since, with `ownerReplyIsNew` set to true. Reviews that already had a reply when you switch this on are not delivered again. Only the reviews on the pages read are checked; no extra request. Each review delivered again is billed like any review.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy or your own proxies. Keep the default: it is included in the price. The residential Apify proxy is not available in this Actor.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of requests processed in parallel.",
            "default": 8
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 10,
            "maximum": 3000,
            "type": "integer",
            "description": "Most requests to Yandex Maps in any 60 seconds, all of them counted: search pages, places, pages of reviews, session tokens. A budget, not an even pace: up to this many can leave at once when the minute starts (spread them with the minimum delay below).",
            "default": 600
          },
          "minRequestIntervalMs": {
            "title": "Minimum delay between requests (ms)",
            "minimum": 0,
            "maximum": 60000,
            "type": "integer",
            "description": "Wait at least this long between two requests. 0 = no delay.",
            "default": 0
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Retries per request before it is marked as failed. Behind a proxy, a request the site turns away is also retried on a new proxy session up to 10 times without using up these retries.",
            "default": 5
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Verbose log.",
            "default": 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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}