{
  "openapi": "3.0.1",
  "info": {
    "title": "Tatui Imoveis Scraper - Property Ads, Agencies & Articles",
    "description": "Scrape tatuiimoveis.com, a regional real estate directory for Tatui and nearby towns in Sao Paulo, Brazil: property ads with BRL prices and areas, the agency directory with CRECI and addresses, articles with full text, and town price statistics. No login, no proxy.",
    "version": "0.1",
    "x-build-id": "Vb8NoQnZx5E50mFma"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~tatuiimoveis-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-tatuiimoveis-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/recordsdata~tatuiimoveis-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-tatuiimoveis-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/recordsdata~tatuiimoveis-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-tatuiimoveis-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": {
          "recordTypes": {
            "title": "What to collect",
            "type": "array",
            "description": "listings = property ads (houses, land, farms, shops) with price in BRL, areas, rooms and address. agencies = the directory of real estate agencies and brokers of Tatui and the region (name, CRECI, address, services, website). articles = the editorial posts of the site (property, credit and finance guides) with full text. places = one statistics row per town (ad counts, price median, agencies). Posts and addresses you give below are delivered whatever their kind.",
            "items": {
              "type": "string",
              "enum": [
                "listings",
                "agencies",
                "articles",
                "places"
              ],
              "enumTitles": [
                "Property ads (listings)",
                "Agency directory (agencies)",
                "Articles with full text",
                "Town statistics (places)"
              ]
            },
            "default": [
              "listings",
              "agencies"
            ]
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops after this many rows (all record types together). Free plans are limited to 10 items per run. The whole site has about 950 rows.",
            "default": 50
          },
          "startUrls": {
            "title": "Site addresses",
            "type": "array",
            "description": "tatuiimoveis.com post pages (for example /casa-venda-tatui-jardim-wanderley/), category pages (/category/artigos/), tag pages (/tag/sorocaba/) and search pages (/?s=chacara). Filters below apply to category, tag and search pages, not to single posts. Leave empty to scan the whole site by the record types above.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "postIds": {
            "title": "Post numbers",
            "type": "array",
            "description": "Single posts by their WordPress number (the listingId, agencyId or articleId of a row), one per line, for example 3489. Unknown numbers produce a free error row.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "cities": {
            "title": "Towns",
            "type": "array",
            "description": "Only listings, agencies and places in these towns, one per line, for example Tatui, Sorocaba, Itapetininga, Boituva. Accents and capitals do not matter. Empty means all towns.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "operation": {
            "title": "Sale or rent",
            "enum": [
              "any",
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Listings only. Sale, rent, or both. Free donations of land are kept only when this is Any.",
            "default": "any"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Listings only. Empty means all types.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "apartment",
                "land",
                "farm",
                "commercial",
                "other"
              ],
              "enumTitles": [
                "House",
                "Apartment",
                "Land (terreno, lote)",
                "Farm, small farm, ranch (chacara, sitio)",
                "Commercial",
                "Other"
              ]
            },
            "default": []
          },
          "minPrice": {
            "title": "Minimum price (BRL)",
            "minimum": 0,
            "maximum": 10000000000,
            "type": "integer",
            "description": "Listings only, in Brazilian reais. For sale ads this is the sale price, for rent ads the monthly rent. Ads without a price are left out when a price filter is set. 0 means no limit.",
            "default": 0
          },
          "maxPrice": {
            "title": "Maximum price (BRL)",
            "minimum": 0,
            "maximum": 10000000000,
            "type": "integer",
            "description": "Listings only, in Brazilian reais. 0 means no limit.",
            "default": 0
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "Listings only. Ads that do not state the bedrooms are left out when this is set. 0 means no limit.",
            "default": 0
          },
          "minArea": {
            "title": "Minimum area (m2)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Listings only. Compared with the largest of built area, land area and total area. 0 means no limit.",
            "default": 0
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Every word must start a word in the title, text, address or neighbourhood (for example ibiti, chacara, financiamento). Accents and capitals do not matter.",
            "default": ""
          },
          "postedAfter": {
            "title": "Posted on or after",
            "type": "string",
            "description": "Publication date of the post, format YYYY-MM-DD, for example 2016-01-01.",
            "default": ""
          },
          "postedBefore": {
            "title": "Posted on or before",
            "type": "string",
            "description": "Publication date of the post, format YYYY-MM-DD, for example 2018-12-31.",
            "default": ""
          },
          "agencyServices": {
            "title": "Agency services",
            "type": "array",
            "description": "Agencies only. Keep agencies that list at least one of these services. Empty means all.",
            "items": {
              "type": "string",
              "enum": [
                "sale",
                "rent",
                "rural"
              ],
              "enumTitles": [
                "Sale",
                "Rent (locacao)",
                "Rural properties"
              ]
            },
            "default": []
          },
          "onlyWithWebsite": {
            "title": "Only agencies with a website",
            "type": "boolean",
            "description": "Agencies only. Keeps entries that publish a web address.",
            "default": false
          },
          "articleCategories": {
            "title": "Article categories",
            "type": "array",
            "description": "Articles only. Keep posts of these categories. Empty means all.",
            "items": {
              "type": "string",
              "enum": [
                "articles",
                "news",
                "government-aid",
                "app-tips"
              ],
              "enumTitles": [
                "Artigos (guides)",
                "Noticias (news)",
                "Auxilio Governo (government aid)",
                "Dicas de Aplicativos (app tips)"
              ]
            },
            "default": []
          },
          "sortBy": {
            "title": "Order of results",
            "enum": [
              "newest",
              "oldest",
              "price-asc",
              "price-desc",
              "name"
            ],
            "type": "string",
            "description": "Newest and oldest stop reading as soon as the limit is reached. The price and name orders read the whole directory first (about 10 requests) and then deliver the top rows. Price orders apply to listings; agencies and articles then follow name or newest order.",
            "default": "newest"
          },
          "includeContactDetails": {
            "title": "Include business contacts",
            "type": "boolean",
            "description": "Adds the business phone (E.164) and email of agencies and, for ads published by an agency or broker, the broker name, CRECI licence and phone. Private sellers are never included, whatever this setting. Turn on only if you have a lawful reason to process contact data.",
            "default": false
          },
          "includeFullText": {
            "title": "Include article text",
            "type": "boolean",
            "description": "Articles only. On: the full cleaned text of the article. Off: summary, headings and counts only (smaller rows).",
            "default": true
          },
          "includeRaw": {
            "title": "Include raw payload",
            "type": "boolean",
            "description": "Adds a raw field with the unmapped source data of the post (WordPress ids, source lines). Seller contact lines are never included.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new records",
            "type": "boolean",
            "description": "Skips records delivered by an earlier run of the same search (listings, agencies and articles). Nothing skipped is charged.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional label to keep several monitors with identical settings apart.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget what was delivered",
            "type": "boolean",
            "description": "Clears the memory of this search before the run, so everything counts as new.",
            "default": false
          },
          "requestDelayMs": {
            "title": "Pause between requests (ms)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Minimum time between two requests to the site. The robots.txt of the site has no Crawl-delay; the Actor never goes below 300 ms, whatever is set here.",
            "default": 300
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Leave proxy off (the default): the site works without one. Turn it on only if requests start failing.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}