{
  "openapi": "3.0.1",
  "info": {
    "title": "Zonaprop.com.ar Scraper — Argentina Property & Agency API",
    "description": "Extract Argentine property listings, new developments and real estate agencies from Zonaprop, with exact geolocation and full property attributes.",
    "version": "0.1",
    "x-build-id": "glLMiNRLXtCBFsgr6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/oswaldocarabano~zonaprop-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-oswaldocarabano-zonaprop-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/oswaldocarabano~zonaprop-scraper/runs": {
      "post": {
        "operationId": "runs-sync-oswaldocarabano-zonaprop-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/oswaldocarabano~zonaprop-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-oswaldocarabano-zonaprop-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": [
          "maxItems"
        ],
        "properties": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Zonaprop search URLs to scrape, for example https://www.zonaprop.com.ar/departamentos-venta-palermo.html. Leave empty to build the search from the filters below.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "entityType": {
            "title": "What to scrape",
            "enum": [
              "listings",
              "developments",
              "agencies"
            ],
            "type": "string",
            "description": "One entity type per run, so the dataset you download has one clean shape. Property listings, new developments and agencies have genuinely different fields; run the Actor once per type if you need more than one.",
            "default": "listings"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "departamentos",
              "casas",
              "ph",
              "locales-comerciales",
              "oficinas",
              "terrenos",
              "cocheras",
              "galpones",
              "quintas",
              "campos"
            ],
            "type": "string",
            "description": "Property type slug used by Zonaprop when no start URL is given.",
            "default": "departamentos"
          },
          "operationType": {
            "title": "Operation",
            "enum": [
              "sale",
              "rent",
              "temporary_rent"
            ],
            "type": "string",
            "description": "Sale, rent or temporary rent.",
            "default": "sale"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Location slug, for example capital-federal, palermo, cordoba or gba-norte. Leave empty to search the whole country.",
            "default": "capital-federal"
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on the number of results this run will deliver. You are only charged for results actually delivered. Large values may not fit in the run timeout: Zonaprop is behind Cloudflare, so pages are retried and a run delivers roughly 800-2,500 results per hour. The actor stops cleanly before the timeout and saves its progress — resurrect the run with a longer timeout to continue where it left off, without re-fetching or re-charging pages already scraped.",
            "default": 100
          },
          "maxPagesPerUrl": {
            "title": "Pages per search URL",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many result pages to read per search URL. Capped at 5, which is the limit Zonaprop's robots.txt allows. Each page holds 30 listings. To get more results, the actor automatically splits a large search into smaller ones by location.",
            "default": 5
          },
          "scrapeDetails": {
            "title": "Scrape listing detail pages",
            "type": "boolean",
            "description": "Visit each listing page to add the publication date, every photo, floor plans, videos, virtual tours and the full description. A detail page costs about 10x a search result in bandwidth, so this is off by default — and it also makes the run about 10x slower, because Zonaprop is behind Cloudflare and every page is retried until it gets through. With \"Parallel requests\" set to 1 expect roughly 1-3 results per minute: raise it, lower \"Maximum results\", or raise the run timeout. Results are delivered one by one as they are ready, so a run that stops early still keeps everything it collected.",
            "default": false
          },
          "includePrivateSellerPhone": {
            "title": "Include private seller phone numbers",
            "type": "boolean",
            "description": "Zonaprop marks private sellers ('dueño directo') separately from agencies. Agency phone numbers are always included. Private sellers are individuals, so their phone number is withheld unless you turn this on and have a lawful basis for processing it.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Maximum concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many requests the Actor makes at the same time. Each one goes out through a different residential IP, so this spreads the work instead of pushing harder on one address. The default of 3 is the tested balance. Setting it to 1 does not make the run safer, only about 3x slower — and with \"Scrape listing detail pages\" on it is the difference between a run that finishes and one that does not.",
            "default": 3
          },
          "proxyCountry": {
            "title": "Proxy country",
            "enum": [
              "mx",
              "es",
              "us",
              "cl",
              "br",
              "uy",
              "co",
              "pe"
            ],
            "type": "string",
            "description": "Country for the residential proxy. Argentine IPs are challenged by Zonaprop's protection, so a non-Argentine country is required. Mexico measured best.",
            "default": "mx"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}