{
  "openapi": "3.0.1",
  "info": {
    "title": "TocToc Scraper — Chile Real Estate Listings",
    "description": "Scrape property listings from TocToc.com, Chile: sale, rent and new projects with price in UF and CLP, m², bedrooms, bathrooms, parking, comuna, region, GPS, photos and broker/developer. Skips delisted ads. Pay per result, no subscription.",
    "version": "0.1",
    "x-build-id": "Qlnp53gxwcJRQuKIk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fabrikit~toctoc-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fabrikit-toctoc-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/fabrikit~toctoc-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fabrikit-toctoc-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/fabrikit~toctoc-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fabrikit-toctoc-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": {
          "locations": {
            "title": "Locations (comuna, region or neighbourhood)",
            "type": "array",
            "description": "One search per entry, resolved with TocToc's own location search: a comuna (`Las Condes`, `Ñuñoa`, `Viña del Mar`), a region (`Región Metropolitana`, `Región de Valparaíso`), or a neighbourhood (`Barrio Italia`, `Chicureo`, `Reñaca`). Use `Comuna, Region` to disambiguate (`Los Ángeles, Biobío`). Names that are both a comuna and a region (Valparaíso, Antofagasta, Coquimbo...) search the comuna unless you write `Región de ...`. Leave empty to search all of Chile.",
            "default": [
              "Las Condes"
            ],
            "items": {
              "type": "string"
            }
          },
          "operation": {
            "title": "Operation",
            "enum": [
              "venta",
              "arriendo"
            ],
            "type": "string",
            "description": "`venta` = for sale (used and new projects), `arriendo` = for rent.",
            "default": "venta"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "One or more property types. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "departamento",
                "casa",
                "oficina",
                "local_comercial",
                "terreno",
                "parcela",
                "agricola",
                "industrial",
                "bodega",
                "estacionamiento",
                "lugar_vacacional"
              ],
              "enumTitles": [
                "Departamento (apartment)",
                "Casa (house)",
                "Oficina (office)",
                "Local comercial (retail)",
                "Terreno (land)",
                "Parcela (country plot)",
                "Campo agrícola (farm)",
                "Terreno industrial",
                "Bodega (warehouse)",
                "Estacionamiento (parking)",
                "Lugar vacacional (holiday home)"
              ]
            },
            "default": [
              "departamento"
            ]
          },
          "condition": {
            "title": "New or used (sale only)",
            "enum": [
              "any",
              "new",
              "used"
            ],
            "type": "string",
            "description": "`new` = new-development projects (proyectos nuevos, sold by developers), `used` = resale listings from brokers and owners. Ignored for rentals.",
            "default": "any"
          },
          "priceCurrency": {
            "title": "Price filter currency",
            "enum": [
              "UF",
              "CLP"
            ],
            "type": "string",
            "description": "Currency of the price range below. TocToc converts between UF and CLP itself, so a UF range also matches listings published in pesos.",
            "default": "UF"
          },
          "priceMin": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "In the currency chosen above. Leave empty for no minimum."
          },
          "priceMax": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "In the currency chosen above. Leave empty for no maximum."
          },
          "bedroomsMin": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "New projects match when any of their unit types fits."
          },
          "bedroomsMax": {
            "title": "Maximum bedrooms",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Leave empty for no maximum."
          },
          "bathroomsMin": {
            "title": "Minimum bathrooms",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Leave empty for no minimum."
          },
          "bathroomsMax": {
            "title": "Maximum bathrooms",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Leave empty for no maximum."
          },
          "publishedWithinDays": {
            "title": "Published in the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only listings published on TocToc in the last N days (e.g. `1`, `7`, `30`). Leave empty for any date. Handy for daily monitoring runs."
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc",
              "area_asc",
              "area_desc",
              "newest",
              "oldest"
            ],
            "type": "string",
            "description": "`relevance` is the site default (new projects first). Use `newest` for monitoring pipelines.",
            "default": "relevance"
          },
          "startUrls": {
            "title": "Or: TocToc search URLs",
            "type": "array",
            "description": "Paste search pages from toctoc.com instead of using the fields above, e.g. `https://www.toctoc.com/venta/departamento/metropolitana/nunoa` or a `https://www.toctoc.com/resultados/lista/arriendo/...?...` URL with filters. Operation, property type, location and the URL's filters (price, bedrooms, bathrooms, surfaces, amenities, sort) are taken from each URL. When URLs are given, the Search and Filters fields are ignored.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max properties",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many properties in total (across all locations / URLs). TocToc serves up to 600 listings per API page, so large runs are fast.",
            "default": 50
          },
          "maxItemsPerSearch": {
            "title": "Max properties per location / URL",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Optional limit for each location or start URL, so a multi-comuna run gets results from every comuna instead of filling `Max properties` with the first one. Leave empty or 0 for no per-search limit."
          },
          "skipUnavailable": {
            "title": "Skip delisted ads",
            "type": "boolean",
            "description": "TocToc's search index keeps serving ads that were already taken down (their page says \"Propiedad no disponible\"; typically 10–30% of results). When on, the actor checks every result against the live photo index and drops those, and you are not charged for them. Turn off to receive them with `available: false`.",
            "default": true
          },
          "includePublisherNames": {
            "title": "Resolve company names",
            "type": "boolean",
            "description": "Fill `publisherName` for real-estate companies (brokers and developers) by opening one listing per company and caching the name for all its other ads. Private owners are never named. Turn off for slightly faster runs.",
            "default": true
          },
          "fetchDetails": {
            "title": "Fetch listing details (add-on)",
            "type": "boolean",
            "description": "Open every listing page (1 extra request per property) to add: full description, street address, year built, delivery status (entrega inmediata / en verde / en blanco), video, page views, last-modified date and the broker's listing code. Billed as an extra `property-details` event per property.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "TocToc's firewall answers datacenter IPs (Apify's included) with a JavaScript challenge, so the default is Apify RESIDENTIAL proxy with a Chilean IP. The actor keeps the IP-bound API token on one sticky session, rotates to a fresh IP if TocToc ever rate-limits it, and spreads listing pages over a few extra sessions. If you switch the proxy off and TocToc refuses the IP, the actor falls back to RESIDENTIAL (Chile) automatically.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "CL"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}