# $0.80/1K 💰 QuintoAndar Scraper Brazil (`extractmaster01/quintoandar-scraper-brazil`) Actor

Extrai dados estruturados (preço, R$/m², condomínio, IPTU, endereço, pontos de interesse próximos, comodidades, fotos e vídeos) de imóveis do QuintoAndar, a partir de estado/cidade/bairro e filtros (tipo, preço, quartos, banheiros, área).

- **URL**: https://apify.com/extractmaster01/quintoandar-scraper-brazil.md
- **Developed by:** [extractmaster01](https://apify.com/extractmaster01) (community)
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.80 / 1,000 item extracteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## $0.80/1K 💰 QuintoAndar Scraper Brazil

Extraia dados estruturados e completos de anúncios de imóveis do **QuintoAndar**: preço, preço por m², condomínio, IPTU, endereço, coordenadas, pontos de interesse próximos, comodidades, fotos e vídeos (quando o anúncio tiver). Basta informar estado, tipo de transação (aluguel ou venda) e filtros opcionais (cidade, bairro, tipo de imóvel, preço, quartos, banheiros, área), sem precisar copiar campo por campo manualmente.

### O que é o QuintoAndar Scraper Brazil?

O **QuintoAndar Scraper Brazil** transforma imóveis do QuintoAndar em dados estruturados prontos para análise: 49 campos por imóvel, incluindo preço de aluguel e de venda em campos separados (com preço por m² já calculado), condomínio, IPTU, taxa de serviço, garantia de aluguel, proteção residencial e custo mensal total, endereço completo com coordenadas, disponibilidade para aluguel e/ou venda, área, quartos, banheiros, suítes e vagas, escolas, hospitais, estações e parques próximos, comodidades do prédio e da unidade, status do anúncio e de visitas, data de publicação (primeira e última), fotos com legenda e vídeos (quando o anúncio tiver e a extração de vídeos estiver ativada).

Você informa **Estado** e **Tipo de transação** (os dois obrigatórios) e, opcionalmente, Cidade, Bairro e filtros de tipo de imóvel/preço/quartos/banheiros/área; o actor **descobre os imóveis sozinho** a partir daí. É útil para corretoras, analistas de dados e investidores que precisam comparar dezenas ou centenas de imóveis sem copiar cada anúncio manualmente, um processo lento e sujeito a erro humano.

#### O que o QuintoAndar Scraper Brazil extrai?

| Campo | Descrição |
|---|---|
| `sourceId` | ID do imóvel no QuintoAndar |
| `url`, `extractedAt` | URL de origem e momento da extração (ISO 8601) |
| `businessContext` | `RENT` ou `SALE`. Olhe `rentPrice`/`salePrice` para saber qual preço realmente se aplica (um dos dois vem `null`) |
| `listingStatus` | Status do anúncio no QuintoAndar (ex.: "publicado") |
| `visitStatus` | Status de agendamento de visitas ao imóvel |
| `propertyType` | Tipo do imóvel (Apartamento, Casa…) |
| `title` | Descrição escrita pelo anunciante (pode vir vazia, nem todo anúncio tem) |
| `neighborhood`, `city`, `state`, `street`, `zipCode` | Endereço completo |
| `macroRegion` | Código interno de macro-região do QuintoAndar (ex.: "SPO 04"), diferente do bairro; ver "Limitações conhecidas" |
| `latitude`, `longitude` | Coordenadas geográficas |
| `rentPrice` | Aluguel mensal (R$); `null` se o imóvel não está para alugar |
| `salePrice` | Preço de venda (R$); `null` se o imóvel não está à venda |
| `forRent`, `forSale` | Se o imóvel está disponível para aluguel e/ou venda (um mesmo imóvel pode ter os dois `true` ao mesmo tempo, em dupla listagem) |
| `condoFee`, `condoType` | Condomínio (R$) e seu tipo (ex.: "Normal", "IncluidoNoAluguel" quando o condomínio já vem embutido no aluguel). `0` em `condoFee` é valor real: casa sem condomínio |
| `iptu`, `iptuType` | IPTU (R$) e seu tipo (ex.: "Normal", "NaoExiste"). `0` é valor real: imóvel isento |
| `serviceFee`, `homeProtectionFee` | Taxa de serviço QuintoAndar e proteção residencial (R$/mês); junto com `rentPrice`/`condoFee`/`iptu`, somam exatamente `totalMonthlyCost` |
| `rentalGuaranteeMin`, `rentalGuaranteeMax` | Faixa de valor da garantia de aluguel exigida (R$); `null` quando o anúncio não informa garantia |
| `totalMonthlyCost` | Custo mensal total (R$) |
| `pricePerSqm` | Preço por m² (R$), aluguel ou venda conforme `businessContext`. `null` se faltar preço ou área |
| `area` | Área útil (m²) |
| `bedrooms`, `bathrooms`, `suites`, `parkingSpaces` | Quartos, banheiros, suítes e vagas |
| `nearSubway` | Se o imóvel é próximo ao metrô |
| `floorNumber`, `floorNumberMax`, `constructionYear` | Andar (e andar máximo, em prédios com faixa) e ano de construção |
| `furnished`, `petFriendly` | Mobiliado / aceita pets |
| `buildingAmenities`, `unitAmenities` | Comodidades do condomínio e da unidade |
| `specialConditions` | Condições especiais do anúncio (ex.: exclusividade); lista vazia quando não há nenhuma |
| `placesNearby` | Pontos de interesse próximos (escolas, hospitais, estações de metrô/trem, terminais de ônibus, parques, universidades, aeroportos), cada um com `name` e `type` |
| `firstPublishedDate`, `lastPublishedDate` | Data/hora (ISO 8601) da primeira publicação e da última publicação/atualização do anúncio no QuintoAndar |
| `photos` | Fotos do anúncio: lista de objetos `{url, caption}` (`caption` vem vazio quando a foto não tem legenda) |
| `videos` | URLs de vídeo do anúncio (lista, pode ter mais de um). Vazia por padrão: a extração de vídeo é opcional, veja o campo "Extrair vídeos" no input |
| `error` | Só presente quando a extração falha (imóvel saiu do ar, mudou de estrutura ou a navegação falhou); o item não é cobrado. Veja a FAQ |

### Como usar o QuintoAndar Scraper Brazil

O input é só **Estado + Tipo de transação + filtros opcionais**, sem precisar montar ou colar URL nenhuma na mão:

1. Preencha **Estado** (obrigatório, ex.: "SP"). Sozinho, ele já busca o ESTADO INTEIRO, mas repare que o campo **Cidade** vem pré-preenchido com "São Paulo" no Console; apague-o se você realmente quiser o estado inteiro, não só a cidade sugerida.
2. Escolha **Tipo de transação** (obrigatório: Aluguel ou Venda). Sem esse campo a busca fica ambígua entre os dois tipos de anúncio, por isso não tem valor padrão: você precisa escolher.
3. (Opcional) Preencha **Cidade** (ex.: "São Paulo") pra restringir a uma cidade, e **Bairro** (ex.: "Vila Madalena") pra restringir ainda mais.
4. (Opcional) Ajuste **Tipo de imóvel**, **Preço mínimo/máximo**, **Mínimo de quartos/banheiros**, **Área mínima**, **Aceita pets** e **Perto de metrô** conforme o que você procura.
5. (Opcional) defina **Máximo de imóveis** para limitar quantos processar no run.
6. (Opcional) ative **Extrair vídeos** se precisar do campo `videos` preenchido. Desligado por padrão, deixando o run mais rápido para quem não precisa desse dado.
7. Clique em **Start** e acompanhe o dataset sendo preenchido incrementalmente: cada imóvel é salvo assim que extraído, sem esperar o run inteiro terminar.
8. Exporte o resultado em JSON, CSV, Excel ou conecte via API (as opções padrão do Apify Dataset).

Veja "Limitações conhecidas" abaixo para entender a cobertura da busca.

### Quanto custa usar o QuintoAndar Scraper Brazil?

Este actor usa **Pay Per Event**: você paga só pelo que recebe, sem cobrança por iniciar o run.

- **Item extraído** (`item-extracted`): `$ 0.0008` por imóvel extraído com sucesso.

**Exemplo:** extrair 1.000 imóveis custa aproximadamente `$ 0.80`. Imóveis que falham na extração (ver campo `error` na tabela acima) não são cobrados.

### Input e output

Veja `.actor/input_schema.json`. Exemplo mínimo (**Estado** e **Tipo de transação** são os únicos campos obrigatórios; aqui, o estado inteiro à venda):

```json
{
    "state": "SP",
    "transactionType": "sale"
}
```

Este JSON exato busca o ESTADO INTEIRO, sem restringir a nenhuma cidade (vale pra quem edita o input em modo JSON no Console ou chama a API direto; no formulário visual, lembre de apagar o "São Paulo" pré-preenchido em Cidade, ver passo 1 acima).

Exemplo: cidade inteira, sem outros filtros:

```json
{
    "state": "SP",
    "city": "São Paulo",
    "transactionType": "sale",
    "maxListings": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

Exemplo: bairro específico, com filtros de tipo/preço/quartos:

```json
{
    "state": "SP",
    "city": "São Paulo",
    "region": "Vila Madalena",
    "transactionType": "rent",
    "propertyType": "apartamento",
    "priceMin": 1500,
    "priceMax": 4000,
    "bedroomsMin": 2,
    "maxListings": 50
}
```

Exemplo: todos os filtros combinados (venda, com banheiros e área):

```json
{
    "state": "RJ",
    "city": "Rio de Janeiro",
    "region": "Copacabana",
    "transactionType": "sale",
    "propertyType": "apartamento",
    "priceMin": 300000,
    "priceMax": 900000,
    "bedroomsMin": 2,
    "bathroomsMin": 2,
    "areaMin": 60,
    "acceptPets": "yes",
    "closeToSubway": "yes",
    "maxListings": 50
}
```

Exemplo de item de output: saída real de um anúncio anunciado ao mesmo tempo para aluguel e venda (por isso `rentPrice` e `salePrice` vêm os dois preenchidos), com `constructionYear` em `null` porque o anúncio não informa e `title` vazio porque o anunciante não escreveu descrição:

```json
{
    "url": "https://www.quintoandar.com.br/imovel/894543580",
    "extractedAt": "2026-08-19T01:08:45.216750+00:00",
    "sourceId": "894543580",
    "businessContext": "RENT",
    "listingStatus": "publicado",
    "visitStatus": "ACCEPT_NEW",
    "propertyType": "Apartamento",
    "title": "",
    "neighborhood": "Consolação",
    "macroRegion": "SPO 04",
    "city": "São Paulo",
    "state": "SP",
    "street": "Rua Luís Coelho",
    "zipCode": "01309-001",
    "latitude": -23.5569581,
    "longitude": -46.6589677,
    "rentPrice": 1700.0,
    "salePrice": 500000.0,
    "forRent": true,
    "forSale": true,
    "condoFee": 1783.0,
    "condoType": "Normal",
    "iptu": 398.0,
    "iptuType": "Normal",
    "serviceFee": 44.0,
    "homeProtectionFee": 22.0,
    "rentalGuaranteeMin": null,
    "rentalGuaranteeMax": null,
    "totalMonthlyCost": 3947.0,
    "pricePerSqm": 29.31,
    "area": 58.0,
    "bedrooms": 1,
    "bathrooms": 1,
    "suites": 0,
    "parkingSpaces": 0,
    "nearSubway": true,
    "floorNumber": 0,
    "floorNumberMax": null,
    "constructionYear": null,
    "furnished": true,
    "petFriendly": true,
    "buildingAmenities": [
        "Piscina",
        "Academia",
        "Lavanderia no prédio"
    ],
    "unitAmenities": [
        "Banheira",
        "Janelas grandes",
        "Armários no quarto"
    ],
    "specialConditions": [],
    "placesNearby": [
        {"name": "Consolação", "type": "ESTACAO_METRO_OU_TREM"},
        {"name": "Colégio São Luís", "type": "SCHOOL"},
        {"name": "Praça Roosevelt", "type": "PARK_OR_GREEN_AREA"}
    ],
    "firstPublishedDate": "2026-01-10T12:00:00.000Z",
    "lastPublishedDate": "2026-08-15T09:22:10.000Z",
    "photos": [
        {"url": "https://www.quintoandar.com.br/img/med/894543580-01.jpg", "caption": "Sala de Estar"}
    ],
    "videos": []
}
```

Por padrão, a extração de vídeo fica desligada, o que deixa o run mais rápido para quem não precisa desse dado. Ative **Extrair vídeos** no input se quiser o campo `videos` preenchido; quando ativado e o anúncio tiver vídeo, o campo vem com uma ou mais URLs de player prontas para tocar, por exemplo:

```json
"videos": ["https://player.vimeo.com/video/1219720102?h=c88ccb75a5"]
```

#### Limitações conhecidas

**O input não aceita URL nenhuma diretamente** (nem de imóvel específico, nem de busca já filtrada no site). Todo run monta uma única URL de busca a partir de Estado/Cidade/Bairro/filtros. Isso simplifica o input, mas tem uma consequência prática: não dá pra combinar várias URLs de busca (bairros e/ou faixas de preço diferentes) no mesmo run; cada run tem exatamente uma busca. Pra cobrir vários bairros de uma cidade grande, rode o actor mais de uma vez (uma vez por bairro/faixa de interesse) em vez de num run só.

**A busca cobre a primeira leva de resultados renderizada pelo QuintoAndar** (tipicamente 20-26 imóveis) **mais o que o botão "Ver mais" da página conseguir trazer**, até **Máximo de imóveis** ou um teto de segurança quando esse campo é deixado em branco — nunca o total disponível de uma vez, que numa busca ampla (um estado ou cidade inteiros, sem filtro) costuma passar de dezenas de milhares. Quanto mais específicos os filtros, menor o total da busca e maior a fração dele que dá pra cobrir; **Bairro** é a alavanca mais forte pra isso.

**Os filtros de tipo/preço/quartos/banheiros/área são embutidos diretamente na URL de busca**: o QuintoAndar filtra de verdade no servidor, então o actor não perde tempo extraindo imóveis que já sabia que não bateriam. Eles também são reaplicados depois da extração como rede de segurança. A exceção é **Bairro**: só é embutido na URL quando **Cidade** também é informada; sem cidade, vira só um pós-filtro aproximado sobre o bairro já extraído de cada imóvel (correspondência normalizada, sem acento/case). Com **Cidade** preenchida, o pós-filtro de bairro é ignorado, já que a busca no servidor já cobre isso. **Aceita pets** e **Perto de metrô** funcionam só como pós-filtro (não são embutidos na URL de busca), comparando com os campos `petFriendly`/`nearSubway` já extraídos de cada imóvel.

**Pular imóveis já extraídos antes** (campo opcional): ative para runs recorrentes (ex.: um agendamento diário). O actor lembra, por até 30 dias, quais imóveis já extraiu e pula eles em runs futuros.

### FAQ e suporte

**Este actor é legal de usar?** O uso dos dados extraídos está sujeito aos termos de serviço do QuintoAndar. Este actor extrai apenas informações já publicamente visíveis nas páginas de anúncio. Você é responsável por garantir que seu uso dos dados cumpre as leis e termos aplicáveis (por exemplo, LGPD, caso os dados sejam usados de forma que envolva informação pessoal identificável).

**O que acontece se um imóvel não for encontrado?** O item ainda é salvo no dataset, mas com o campo `error` preenchido em vez dos campos normais, e não é cobrado. `"delisted"` significa que o anúncio saiu do ar (o QuintoAndar redirecionou pra uma página de "indisponível"). `"structure_changed"` e `"navigation_failed"` só aparecem depois de o actor tentar de novo (com uma sessão de proxy nova) e continuar sem conseguir um resultado utilizável — na maioria das vezes é bloqueio temporário do alvo, não necessariamente uma mudança real na página. O actor continua processando o restante da lista normalmente.

**O run terminou com 0 itens extraídos, o que houve?** Se a descoberta encontrou imóveis mas nenhum foi extraído, o actor falha explicitamente em vez de reportar sucesso vazio: é sinal de bloqueio/timeout sistemático contra o alvo, não falta de resultado. Verifique a configuração de proxy e rode de novo.

**Dá pra buscar por bairro, cidade inteira ou estado inteiro?** Sim, os três (veja "Como usar" e "Limitações conhecidas" para a cobertura de cada busca).

**Preciso de proxy residencial?** Não, por padrão. O actor usa Apify Proxy datacenter. Se você notar bloqueios recorrentes, ative proxy residencial nas configurações de input (custa mais).

#### Contato e suporte

Encontrou um bug ou tem uma sugestão? Abra uma issue ou entre em contato através da página do actor no Apify Console. Runs com erro geram log detalhado; inclua o Run ID ao reportar um problema.

#### Aviso legal

Este actor é uma ferramenta **independente**, sem afiliação, endosso ou patrocínio do QuintoAndar ou suas afiliadas. Todas as marcas pertencem aos seus respectivos donos.

# Actor input Schema

## `state` (type: `string`):

Sigla do estado, ex.: 'SP', 'RJ', 'MG'. Sempre obrigatório. Deixe 'Cidade' vazio para buscar o estado inteiro.

## `transactionType` (type: `string`):

Aluguel ou venda. Obrigatório: sem esse campo a busca fica ambígua entre os dois tipos de anúncio.

## `city` (type: `string`):

Nome da cidade para restringir a busca, ex.: 'São Paulo'. Deixe vazio para buscar o estado inteiro.

## `region` (type: `string`):

Bairro/região para restringir ainda mais a busca, ex.: 'Vila Madalena'. Só filtra de verdade no servidor quando 'Cidade' também está preenchida; sem cidade, vira um pós-filtro aproximado sobre o bairro extraído de cada imóvel.

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

Filtro opcional de tipo. São os únicos 4 tipos que o QuintoAndar lista no próprio site; não existe 'terreno' nem 'comercial' no catálogo dele.

## `priceMin` (type: `integer`):

Preço mínimo (aluguel mensal ou preço de venda, conforme 'Tipo de transação').

## `priceMax` (type: `integer`):

Preço máximo. Mesma regra de 'Preço mínimo'.

## `bedroomsMin` (type: `integer`):

Número mínimo de quartos ('N ou mais', não exato).

## `bathroomsMin` (type: `integer`):

Número mínimo de banheiros ('N ou mais'). Limitado a 4, que já significa '4 ou mais' no site.

## `areaMin` (type: `integer`):

Área útil mínima em m².

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

Limite de imóveis extraídos no run. Deixe vazio para não limitar (aplica um teto de segurança generoso em vez de tentar esgotar a busca inteira; veja 'Limitações conhecidas' no README).

## `extractVideos` (type: `boolean`):

Busca os vídeos de cada anúncio (campo 'videos'). Exige uma chamada de rede extra por imóvel, deixando o run mais lento. Desligado por padrão.

## `acceptPets` (type: `string`):

Filtra por imóveis que aceitam ou não animais de estimação. Deixe vazio para não filtrar.

## `closeToSubway` (type: `string`):

Filtra por imóveis perto de estação de metrô. Deixe vazio para não filtrar.

## `skipKnownListings` (type: `boolean`):

Lembra os imóveis já extraídos em runs anteriores (por até 30 dias) e pula eles neste run. Útil para runs recorrentes (ex.: diário). Desligado por padrão.

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

Proxies do Apify a usar. Datacenter é o padrão e costuma bastar; ative residencial só se você notar bloqueios recorrentes (custa mais).

## Actor input object example

```json
{
  "state": "SP",
  "city": "São Paulo",
  "propertyType": "all",
  "maxListings": 12,
  "extractVideos": false,
  "acceptPets": "",
  "closeToSubway": "",
  "skipKnownListings": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Lista de imóveis extraídos do QuintoAndar nesta execução, com preço, endereço, comodidades, fotos e demais campos estruturados.

# 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 = {
    "state": "SP",
    "city": "São Paulo",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("extractmaster01/quintoandar-scraper-brazil").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 = {
    "state": "SP",
    "city": "São Paulo",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("extractmaster01/quintoandar-scraper-brazil").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "state": "SP",
  "city": "São Paulo",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call extractmaster01/quintoandar-scraper-brazil --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,extractmaster01/quintoandar-scraper-brazil"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/UO8BrZ1REnXizIbaX/builds/CO6R2qGLC9BlnikmU/openapi.json
