{
  "openapi": "3.0.1",
  "info": {
    "title": "Inmuebles24 Scraper — Mexico Property Listings (+ZonaProp)",
    "description": "Scrape Inmuebles24, ZonaProp, Imovelweb, Urbania and Plusvalía listings for sale or rent: price, fees, area, rooms, address, coordinates, photos, agency.",
    "version": "0.1",
    "x-build-id": "gh3qVOkXs9K3cxkHW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~inmuebles24-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-inmuebles24-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/tortuga~inmuebles24-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-inmuebles24-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/tortuga~inmuebles24-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-inmuebles24-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Search URLs from Inmuebles24, ZonaProp, Imovelweb, Urbania or Plusvalía with any filters set in the browser (open the search on the site and copy the address bar, e.g. https://www.inmuebles24.com/departamentos-en-renta-en-polanco.html), or single listing URLs (.../propiedades/...-150472613.html), which return that listing with full details. Leave empty if you use Locations below.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "site": {
            "title": "Site for location searches",
            "enum": [
              "inmuebles24",
              "zonaprop",
              "imovelweb",
              "urbania",
              "plusvalia"
            ],
            "type": "string",
            "description": "Which portal the Locations searches run on. With no Start URLs and no Locations, the whole country of this site is searched with the filters below.",
            "default": "inmuebles24"
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "States, cities, neighbourhoods (colonias / barrios / bairros), one per line, e.g. 'Polanco', 'Guadalajara', 'Polanco, Guadalajara', 'Palermo', 'Miraflores'. Each is looked up with the site's own location autocomplete and searched separately.",
            "items": {
              "type": "string"
            }
          },
          "operation": {
            "title": "For sale or for rent",
            "enum": [
              "sale",
              "rent",
              "temporary"
            ],
            "type": "string",
            "description": "Listings for sale (venta), for rent (renta / alquiler / aluguel) or temporary / vacation rent. Applies to Locations searches.",
            "default": "sale"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "any",
              "apartment",
              "house",
              "land",
              "commercial",
              "office"
            ],
            "type": "string",
            "description": "Only this property type (Locations searches). For other sub-types (PH, dúplex, bodega, ...) set the filter on the site and use the URL as a Start URL.",
            "default": "any"
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum sale price, or minimum monthly rent for rentals, in the currency chosen below (Locations searches)."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum sale price, or maximum monthly rent for rentals, in the currency chosen below (Locations searches)."
          },
          "priceCurrency": {
            "title": "Price filter currency",
            "enum": [
              "local",
              "USD"
            ],
            "type": "string",
            "description": "Currency of Min / Max price: the site's local currency (MXN on Inmuebles24, ARS on ZonaProp, BRL on Imovelweb, PEN on Urbania, USD on Plusvalía) or US dollars (not on Imovelweb).",
            "default": "local"
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "At least this many bedrooms (recámaras / dormitorios / quartos)."
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "At least this many bathrooms."
          },
          "publisherType": {
            "title": "Advertiser",
            "enum": [
              "any",
              "agency",
              "private"
            ],
            "type": "string",
            "description": "All listings, only agencies, or only private owners (dueño directo / trato directo).",
            "default": "any"
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "today",
              "1",
              "7",
              "15",
              "30",
              "45"
            ],
            "type": "string",
            "description": "Only listings published recently (the site's own 'Fecha de publicación' filter).",
            "default": "any"
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "newest",
              "relevance",
              "price_asc",
              "price_desc",
              "price_drop",
              "most_viewed"
            ],
            "type": "string",
            "description": "Order of Locations searches (Start URLs keep the order chosen on the site). 'Newest' is best for monitoring. When a run asks for a whole search (Max listings at least the number of results), it is paged cheapest-first instead: the site's relevance and newest orders reshuffle listings between pages.",
            "default": "newest"
          },
          "includeDetails": {
            "title": "Include listing page details",
            "type": "boolean",
            "description": "Open each listing page for all photos (search results show up to 8), grouped amenities, video links, publication age ('Publicado hace 12 días' -> publishedDate) and view count. One extra request and one extra 'detail' event per listing; slower.",
            "default": false
          },
          "maxItems": {
            "title": "Max listings",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many listings in total (all searches together). You pay per listing. One search returns at most 30,000 listings (the sites' own limit). With monitoring on, this is the number of newest listings checked each run.",
            "default": 100
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed items",
            "type": "boolean",
            "description": "Remember what earlier runs of this search returned and output only new items or items whose price/status changed. Use with a Schedule; unchanged items are not charged.",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this watch, so several schedules on the same search stay separate; defaults to a key derived from the search input."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The sites only answer residential IPs from their own country; the actor sets the country per site automatically (MX, AR, BR, PE, EC). Keep the RESIDENTIAL group: datacenter IPs are blocked. Residential traffic is about 30 KB per 30 listings (~$0.01 per 1,000 listings) plus ~150 KB per start URL and ~100 KB per listing page with details.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}