{
  "openapi": "3.0.1",
  "info": {
    "title": "Realtor.ca Scraper — Canada Sale, Rent & Sold",
    "description": "Scrape Realtor.ca listings across Canada for sale, rent, or sold. Each row includes price, beds, baths, MLS number, address, photos, and agent phone. JSON export for Python, Node.js, and MCP.",
    "version": "0.1",
    "x-build-id": "Kv2oTkClpJHQgLR3w"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawloop~realtor-ca-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawloop-realtor-ca-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/crawloop~realtor-ca-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawloop-realtor-ca-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/crawloop~realtor-ca-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawloop-realtor-ca-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": {
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Canadian city or neighbourhood, such as Toronto or Vancouver, BC. Ignored when latitude and longitude are set."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Realtor.ca city pages, map links, or a single listing URL.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "latitude": {
            "title": "Latitude",
            "type": "number",
            "description": "Search center latitude. Must be sent with longitude."
          },
          "longitude": {
            "title": "Longitude",
            "type": "number",
            "description": "Search center longitude. Must be sent with latitude."
          },
          "distanceKm": {
            "title": "Distance (km)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Radius around the coordinates.",
            "default": 20
          },
          "operation": {
            "title": "Operation",
            "enum": [
              "buy",
              "rent",
              "sold"
            ],
            "type": "string",
            "description": "For sale, for rent, or sold.",
            "default": "buy"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "residential",
              "condo",
              "vacantLand",
              "recreational",
              "multifamily",
              "agricultural",
              "parking"
            ],
            "type": "string",
            "description": "Residential is the default public search.",
            "default": "residential"
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "newest",
              "oldest",
              "lowPrice",
              "highPrice"
            ],
            "type": "string",
            "description": "Order of the search results.",
            "default": "newest"
          },
          "maxItems": {
            "title": "Maximum listings",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop after this many saved rows. One area returns about 600 listings.",
            "default": 20
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in CAD. 0 means no minimum.",
            "default": 0
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in CAD. 0 means no maximum.",
            "default": 0
          },
          "minBeds": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum bedrooms. 0 means any.",
            "default": 0
          },
          "maxBeds": {
            "title": "Maximum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum bedrooms. 0 means any.",
            "default": 0
          },
          "minBaths": {
            "title": "Minimum bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum bathrooms. 0 means any.",
            "default": 0
          },
          "maxBaths": {
            "title": "Maximum bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum bathrooms. 0 means any.",
            "default": 0
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Optional words matched by the public search."
          },
          "soldWithinDays": {
            "title": "Sold within days",
            "minimum": 0,
            "type": "integer",
            "description": "Used when operation is sold. 0 means no day limit.",
            "default": 0
          },
          "openHousesOnly": {
            "title": "Open houses only",
            "type": "boolean",
            "description": "Keep listings that have an open house. Not applied to sold searches.",
            "default": false
          },
          "includeDetails": {
            "title": "Fetch listing details",
            "type": "boolean",
            "description": "Open each listing for tax, maintenance fee, year built, and the full public description.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Canada residential is used by default on Apify. Direct requests are tried locally when proxy is off. You pay platform usage for residential proxy.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "CA"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}