# QuintoAndar Scraper - Rent, Buy, Photos & GPS (`abotapi/quintoandar-scraper`) Actor

Scrape quintoandar.com.br property listings across Brazil. 80+ fields: rent, total monthly cost, sale price, condo fee, IPTU, area, rooms, parking, GPS, full description, photos, amenities, furnished/pets/subway flags. Search and URL modes; sort and price/area/bedroom filters.

- **URL**: https://apify.com/abotapi/quintoandar-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 property results

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.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

## QuintoAndar Property Scraper

Collect rental and for-sale property listings from quintoandar.com.br across Brazil and turn them into clean, structured rows. Search by location name with filters, or paste results-page URLs. Every record carries the full price breakdown (rent, total monthly cost, condo fee, IPTU, sale price), the area and room counts, the exact GPS coordinate, the full description, every photo, the in-unit and building amenities, and the furnished / pets / near-subway flags.

### Why This Scraper?

- 80+ fields per listing, with both English and Portuguese keys on every record so the output drops straight into any pipeline.
- Full price breakdown: rent, total monthly cost, condominium fee, IPTU, and sale price.
- Exact GPS coordinate (latitude and longitude), zip code, neighborhood, city and state.
- Full property description plus the complete photo gallery, not just a thumbnail.
- In-unit amenities and building amenities listed separately, with furnished, pets and near-subway flags.
- Two ways to run: search by location name with filters, or paste results-page URLs.
- Sort and price / area / bedroom filters, forward pagination, and a single clear Max listings cap.

### Data You Get

> Sample shape. Values are illustrative placeholders, not from a live listing.

| Field | Example |
| --- | --- |
| id | 100000000 |
| title | Apartamento - 2 quartos - Pinheiros |
| tipoOperacao | aluguel |
| tipoImovel | Apartamento |
| precoAluguel | 2500 |
| precoTotalMensal | 3200 |
| precoVenda | 0 |
| precoCondominio | 500 |
| precoIPTU | 200 |
| area | 65 |
| quartos | 2 |
| banheiros | 1 |
| vagas | 1 |
| suites | 0 |
| bairro | Pinheiros |
| cidade | São Paulo |
| estado | São Paulo |
| latitude | -23.550520 |
| longitude | -46.633309 |
| mobiliado | false |
| aceitaPets | true |
| pertoMetro | true |
| comodidades | ["Varanda", "Ar condicionado"] |
| comodidadesPredio | ["Piscina", "Academia"] |
| imagens | ["https://www.quintoandar.com.br/img/xlg/photo-1.jpeg"] |
| url | https://www.quintoandar.com.br/imovel/100000000/alugar |

### How to Use

Search by location with filters:

```json
{
  "mode": "search",
  "locations": ["São Paulo", "Pinheiros São Paulo"],
  "operationType": "rent",
  "propertyType": "apartment",
  "minPrice": 1500,
  "maxPrice": 4000,
  "minBedrooms": 2,
  "sortBy": "price-asc",
  "fetchDetails": true,
  "maxListings": 50
}
````

Buy instead of rent:

```json
{
  "mode": "search",
  "locations": ["Rio de Janeiro"],
  "operationType": "sale",
  "propertyType": "house",
  "maxListings": 30
}
```

Paste results-page URLs:

```json
{
  "mode": "url",
  "urls": [
    "https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil",
    "https://www.quintoandar.com.br/comprar/imovel/belo-horizonte-mg-brasil"
  ],
  "maxPages": 3,
  "maxListings": 100
}
```

### Input Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| mode | string | `search` builds searches from location names + filters; `url` reads pasted results-page URLs. |
| locations | array | Location names to search (search mode), e.g. São Paulo, Pinheiros São Paulo. |
| operationType | string | `rent` or `sale` (search mode). |
| propertyType | string | One of all, apartment, house, studio, condo\_house (search mode). |
| minPrice | integer | Minimum total monthly cost (rent) or sale price, in BRL (search mode). |
| maxPrice | integer | Maximum total monthly cost (rent) or sale price, in BRL (search mode). |
| minArea | integer | Minimum area in square metres (search mode). |
| maxArea | integer | Maximum area in square metres (search mode). |
| minBedrooms | integer | Minimum number of bedrooms (search mode). |
| sortBy | string | relevance, price-asc or price-desc (search mode). |
| urls | array | Results-page URLs to read (url mode). Filter fields are ignored in this mode. |
| fetchDetails | boolean | Fetch each property page to add GPS, full description, amenities, condo/IPTU and floor. Default true. |
| maxPages | integer | Optional per-search page ceiling. Empty or 0 means unlimited; it does not cap the run. |
| maxListings | integer | The single hard cap on total listings. Default 20; 0 means unlimited. |
| proxy | object | Proxy configuration. The default works on any Apify plan. |
| mcpConnectors | array | Optional MCP connectors to pipe results into your apps (Notion, Linear, Airtable, Apify). |
| notionParentPageUrl | string | Notion page under which item pages are created (Notion connector only). |
| maxNotifyListings | integer | Cap on items written to each connector per run. Does not affect the dataset. |

### Output Example

> Sample shape. Values are illustrative placeholders, not from a live listing.

```json
{
  "id": 100000000,
  "idImovel": 100000000,
  "url": "https://www.quintoandar.com.br/imovel/100000000/alugar",
  "fonte": "quintoandar.com.br",
  "title": "Apartamento · 2 quartos · Pinheiros",
  "titulo": "Apartamento · 2 quartos · Pinheiros",
  "tipoOperacao": "aluguel",
  "tipoImovel": "Apartamento",
  "propertyType": "Apartamento",
  "modo": "rent",
  "precoAluguel": 2500,
  "precoTotalMensal": 3200,
  "precoAtual": 3200,
  "precoVenda": 0,
  "precoCondominio": 500,
  "precoIPTU": 200,
  "totalCost": 3200,
  "area": 65,
  "areaM2": 65,
  "quartos": 2,
  "banheiros": 1,
  "suites": 0,
  "vagas": 1,
  "floor": 7,
  "bairro": "Pinheiros",
  "cidade": "São Paulo",
  "estado": "São Paulo",
  "endereco": "Rua Example",
  "latitude": -23.550520,
  "longitude": -46.633309,
  "mobiliado": false,
  "aceitaPets": true,
  "pertoMetro": true,
  "descricao": "Apartamento amplo e bem localizado, com dois quartos.",
  "comodidades": ["Varanda", "Ar condicionado"],
  "comodidadesPredio": ["Piscina", "Academia"],
  "coverImage": "https://www.quintoandar.com.br/img/xlg/photo-1.jpeg",
  "imagens": [
    "https://www.quintoandar.com.br/img/xlg/photo-1.jpeg",
    "https://www.quintoandar.com.br/img/xlg/photo-2.jpeg"
  ],
  "listedAt": "2026-01-01T00:00:00.000Z",
  "coletadoEm": "2026-01-01T00:00:00Z"
}
```

### Send results into your apps (MCP connectors)

Optionally pipe each result into the apps you already use through Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it in the `mcpConnectors` field. Each connector receives a condensed, human-readable summary per item (title plus key fields); the complete record always stays in the dataset. Supported connectors include Notion, Linear, Airtable and Apify. For Notion, set `notionParentPageUrl` to the page under which item pages should be created, and use `maxNotifyListings` to cap how many items are written per run.

### Plan Requirement

This actor runs on any Apify plan, including the free tier.

On the free tier (or when Apify Proxy is turned off), the run automatically uses a shared backup connection so it still works without a paid proxy. That connection rotates on its own but can be rate-limited, so results may come back more slowly or thin out. If you select a datacenter proxy pool it is cheaper but more likely to be blocked by the site, which can also reduce the number of results. For the most reliable, complete results, run on a plan with a residential proxy pool. The run logs a short note when it is using a backup or datacenter connection.

# Actor input Schema

## `mode` (type: `string`):

search = build searches from location names + filters. url = paste one or more quintoandar results-page URLs.

## `locations` (type: `array`):

Location names to search, e.g. São Paulo, Rio de Janeiro, Pinheiros São Paulo, Belo Horizonte. Accents and spaces are handled automatically. Only applies when mode = search.

## `operationType` (type: `string`):

Rent or buy. Only applies when mode = search.

## `propertyType` (type: `string`):

Property category to search. 'All' covers every type. Only applies when mode = search.

## `minPrice` (type: `integer`):

Minimum total monthly cost (rent) or sale price, in BRL. Only applies when mode = search.

## `maxPrice` (type: `integer`):

Maximum total monthly cost (rent) or sale price, in BRL. Only applies when mode = search.

## `minArea` (type: `integer`):

Minimum area in square metres. Only applies when mode = search.

## `maxArea` (type: `integer`):

Maximum area in square metres. Only applies when mode = search.

## `minBedrooms` (type: `integer`):

Minimum number of bedrooms (quartos). Only applies when mode = search.

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

Result ordering. Only applies when mode = search.

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

Paste one or more quintoandar results-page URLs (e.g. https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil). Multi-URL supported. Filter fields above are ignored in this mode.

## `fetchDetails` (type: `boolean`):

Fetch each property page to add GPS coordinates, the full description, in-unit and building amenities, condo and IPTU breakdown, floor, and furnished / pets / subway flags. Adds one request per property. Leave on for the richest output.

## `maxPages` (type: `integer`):

Optional safety stop on how many result pages to read per location/URL. This does NOT cap the run: leave it empty (or 0) for unlimited pages and the run is bounded solely by Max listings. Set a value only if you also want a per-search page ceiling.

## `maxListings` (type: `integer`):

The run's single hard cap: maximum total listings across all searches. Defaults to 20. Set 0 for unlimited. This is the only default limit; Max pages is unlimited by default and defers to this.

## `proxy` (type: `object`):

Connection used for requests. The default works on any Apify plan, including the free tier.

## `mcpConnectors` (type: `array`):

Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "search",
  "locations": [
    "São Paulo"
  ],
  "operationType": "rent",
  "propertyType": "all",
  "sortBy": "relevance",
  "urls": [
    "https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil"
  ],
  "fetchDetails": true,
  "maxListings": 20,
  "proxy": {
    "useApifyProxy": true
  },
  "maxNotifyListings": 50
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "São Paulo"
    ],
    "urls": [
        "https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil"
    ],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/quintoandar-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 = {
    "locations": ["São Paulo"],
    "urls": ["https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil"],
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/quintoandar-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 '{
  "locations": [
    "São Paulo"
  ],
  "urls": [
    "https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil"
  ],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call abotapi/quintoandar-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "QuintoAndar Scraper - Rent, Buy, Photos & GPS",
        "description": "Scrape quintoandar.com.br property listings across Brazil. 80+ fields: rent, total monthly cost, sale price, condo fee, IPTU, area, rooms, parking, GPS, full description, photos, amenities, furnished/pets/subway flags. Search and URL modes; sort and price/area/bedroom filters.",
        "version": "1.0",
        "x-build-id": "DesmW5LO7nH8QTPn9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~quintoandar-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-quintoandar-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/abotapi~quintoandar-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-quintoandar-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/abotapi~quintoandar-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-quintoandar-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Search mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "search = build searches from location names + filters. url = paste one or more quintoandar results-page URLs.",
                        "default": "search"
                    },
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Location names to search, e.g. São Paulo, Rio de Janeiro, Pinheiros São Paulo, Belo Horizonte. Accents and spaces are handled automatically. Only applies when mode = search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "operationType": {
                        "title": "Operation",
                        "enum": [
                            "rent",
                            "sale"
                        ],
                        "type": "string",
                        "description": "Rent or buy. Only applies when mode = search.",
                        "default": "rent"
                    },
                    "propertyType": {
                        "title": "Property type",
                        "enum": [
                            "all",
                            "apartment",
                            "house",
                            "studio",
                            "condo_house"
                        ],
                        "type": "string",
                        "description": "Property category to search. 'All' covers every type. Only applies when mode = search.",
                        "default": "all"
                    },
                    "minPrice": {
                        "title": "Min price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum total monthly cost (rent) or sale price, in BRL. Only applies when mode = search."
                    },
                    "maxPrice": {
                        "title": "Max price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum total monthly cost (rent) or sale price, in BRL. Only applies when mode = search."
                    },
                    "minArea": {
                        "title": "Min area (m2)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum area in square metres. Only applies when mode = search."
                    },
                    "maxArea": {
                        "title": "Max area (m2)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum area in square metres. Only applies when mode = search."
                    },
                    "minBedrooms": {
                        "title": "Min bedrooms",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Minimum number of bedrooms (quartos). Only applies when mode = search."
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "relevance",
                            "price-asc",
                            "price-desc"
                        ],
                        "type": "string",
                        "description": "Result ordering. Only applies when mode = search.",
                        "default": "relevance"
                    },
                    "urls": {
                        "title": "Results-page URLs",
                        "type": "array",
                        "description": "Paste one or more quintoandar results-page URLs (e.g. https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil). Multi-URL supported. Filter fields above are ignored in this mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch full detail from each property page",
                        "type": "boolean",
                        "description": "Fetch each property page to add GPS coordinates, the full description, in-unit and building amenities, condo and IPTU breakdown, floor, and furnished / pets / subway flags. Adds one request per property. Leave on for the richest output.",
                        "default": true
                    },
                    "maxPages": {
                        "title": "Max pages per search",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Optional safety stop on how many result pages to read per location/URL. This does NOT cap the run: leave it empty (or 0) for unlimited pages and the run is bounded solely by Max listings. Set a value only if you also want a per-search page ceiling."
                    },
                    "maxListings": {
                        "title": "Max listings",
                        "minimum": 0,
                        "type": "integer",
                        "description": "The run's single hard cap: maximum total listings across all searches. Defaults to 20. Set 0 for unlimited. This is the only default limit; Max pages is unlimited by default and defers to this.",
                        "default": 20
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Connection used for requests. The default works on any Apify plan, including the free tier."
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
