{
  "openapi": "3.0.1",
  "info": {
    "title": "Metrocuadrado Scraper",
    "description": "Extract property listings from Metrocuadrado.com, Colombia's largest real estate platform: price, price per m2, area, rooms, bathrooms, stratum, building age, amenities, GPS, photos and full descriptions. Filter by price, area, rooms, stratum or map radius. Sale and rent, all major cities.",
    "version": "1.0",
    "x-build-id": "WgjV18ITb0m6KpzdG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/unfenced-group~metrocuadrado-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-unfenced-group-metrocuadrado-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/unfenced-group~metrocuadrado-scraper/runs": {
      "post": {
        "operationId": "runs-sync-unfenced-group-metrocuadrado-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/unfenced-group~metrocuadrado-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-unfenced-group-metrocuadrado-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": {
          "operationType": {
            "title": "Operation Type",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Whether to search for properties for sale (venta) or for rent (arriendo).",
            "default": "sale"
          },
          "propertyType": {
            "title": "Property Type",
            "enum": [
              "apartment",
              "house",
              "office",
              "commercial",
              "land",
              "warehouse",
              "ranch",
              "parking",
              "other"
            ],
            "type": "string",
            "description": "Type of property to search for.",
            "default": "apartment"
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City to search in, as a URL slug. Examples: 'bogota', 'medellin', 'cali', 'barranquilla', 'bucaramanga', 'cartagena'.",
            "default": "bogota"
          },
          "maxItems": {
            "title": "Maximum Results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of property listings to return. The source caps pagination at 10,000 entries.",
            "default": 100
          },
          "minPrice": {
            "title": "Minimum Price (COP)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings priced at or above this amount, in Colombian pesos. Leave empty for no lower bound."
          },
          "maxPrice": {
            "title": "Maximum Price (COP)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings priced at or below this amount, in Colombian pesos. Leave empty for no upper bound."
          },
          "minAreaM2": {
            "title": "Minimum Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings with total area at or above this many square metres."
          },
          "maxAreaM2": {
            "title": "Maximum Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings with total area at or below this many square metres."
          },
          "minRooms": {
            "title": "Minimum Bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings with at least this many bedrooms."
          },
          "minBathrooms": {
            "title": "Minimum Bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings with at least this many bathrooms."
          },
          "stratum": {
            "title": "Socioeconomic Stratum",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Only return listings in this Colombian socioeconomic stratum (1-6). Leave empty for any stratum."
          },
          "centerLat": {
            "title": "Map Center Latitude",
            "type": "number",
            "description": "Latitude of the center point for a map-radius search. Provide together with Map Center Longitude and Search Radius."
          },
          "centerLng": {
            "title": "Map Center Longitude",
            "type": "number",
            "description": "Longitude of the center point for a map-radius search. Provide together with Map Center Latitude and Search Radius."
          },
          "radiusKm": {
            "title": "Search Radius (km)",
            "minimum": 0,
            "type": "number",
            "description": "Radius in kilometres around the map center. Only listings within this distance are returned, each with a distanceKm value. Requires Map Center Latitude and Longitude."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional: provide specific Metrocuadrado search URLs to scrape directly instead of using the filters above. Example: https://www.metrocuadrado.com/inmuebles/venta/apartamento/bogota/",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "telegramToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Bot token from @BotFather, e.g. '110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw'. Requires Telegram chat ID below."
          },
          "telegramChatId": {
            "title": "Telegram chat ID",
            "type": "string",
            "description": "Chat or channel ID the bot posts to, e.g. '-1001234567890'. Get it from @userinfobot."
          },
          "discordWebhookUrl": {
            "title": "Discord webhook URL",
            "type": "string",
            "description": "Discord channel webhook, e.g. 'https://discord.com/api/webhooks/…'. Channel settings → Integrations → Webhooks."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Slack incoming webhook, e.g. 'https://hooks.slack.com/services/…'."
          },
          "whatsappPhoneNumberId": {
            "title": "WhatsApp phone number ID",
            "type": "string",
            "description": "Meta Cloud API phone number ID, e.g. '106540352242922'. Requires access token and recipient below."
          },
          "whatsappAccessToken": {
            "title": "WhatsApp access token",
            "type": "string",
            "description": "Meta Cloud API access token for the WhatsApp Business account."
          },
          "whatsappTo": {
            "title": "WhatsApp recipient",
            "type": "string",
            "description": "Recipient phone number in international format, e.g. '31612345678'."
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Any HTTPS endpoint. Receives a JSON POST with site, query, result counts and the newest items, e.g. 'https://example.com/hooks/jobs'."
          },
          "webhookHeaders": {
            "title": "Webhook headers",
            "type": "object",
            "description": "Optional extra HTTP headers for the webhook request, e.g. {\"Authorization\": \"Bearer abc123\"}."
          },
          "notificationLimit": {
            "title": "Items per notification",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Maximum number of results shown in a notification message. Default 10, cap 25.",
            "default": 10
          },
          "notifyOnlyChanges": {
            "title": "Notify only on changes",
            "type": "boolean",
            "description": "Only send a notification when the run found new or changed items. Applies when incremental tracking is active; full runs with results always notify.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}