{
  "openapi": "3.0.1",
  "info": {
    "title": "Realtor.com Property Scraper",
    "version": "0.2",
    "x-build-id": "fZTul9PeKklrf6Lgj"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapelabsapi~realtor-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapelabsapi-realtor-com-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/scrapelabsapi~realtor-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapelabsapi-realtor-com-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/scrapelabsapi~realtor-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapelabsapi-realtor-com-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": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "🔗 Start URLs (Search or Detail)",
            "type": "array",
            "description": "📋 Paste one or more Realtor.com URLs.\n\n✅ Supported:\n• 🗺️ Search URLs (city/area pages)\n• 🏡 Detail URLs (single property pages)\n\n💡 You can mix both in one run.",
            "items": {
              "type": "string"
            }
          },
          "includeFloorplans": {
            "title": "🧱 Include Floor Plans",
            "type": "boolean",
            "description": "🖼️ Keep floor plan images in the photos output.\n❌ Disable to keep only regular property photos.",
            "default": true
          },
          "maxItems": {
            "title": "📦 Max Properties to Scrape",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "🎯 Total cap for property detail pages across all input URLs.",
            "default": 20
          },
          "listingEndPage": {
            "title": "📄 Listing End Page",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "⏹️ Stop pagination at this page number.\n\n1️⃣ = first page only\n0️⃣ = auto-stop when no new listings are found",
            "default": 1
          },
          "searchTerms": {
            "title": "🔍 Search Terms (Optional)",
            "type": "string",
            "description": "📝 Optional tag/label for logs (example: \"las vegas homes\").\nℹ️ Actual scraping targets always come from Start URLs.",
            "default": "las vegas"
          },
          "searchMode": {
            "title": "🎯 Search Mode (BUY / RENT / SELL)",
            "enum": [
              "BUY",
              "RENT",
              "SELL"
            ],
            "type": "string",
            "description": "🏷️ Controls URL interpretation:\n• 🛒 BUY = homes for sale\n• 🏢 RENT = rentals/apartments\n• 💼 SELL = seller-oriented pages",
            "default": "BUY"
          },
          "residentialCountry": {
            "title": "🌎 Residential Proxy Country (Optional)",
            "enum": [
              "",
              "US",
              "CA",
              "GB",
              "DE",
              "FR",
              "ES",
              "IT",
              "AU",
              "NL",
              "SE",
              "NO",
              "JP",
              "BR",
              "MX"
            ],
            "type": "string",
            "description": "📍 ISO 2-letter country code for the Apify RESIDENTIAL proxy pool (e.g. US, GB, CA). Leave blank to use the default mixed pool. Some country pools are less burned by Kasada than others — try US first, then CA / GB if 429s persist.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy Configuration",
            "type": "object",
            "description": "🛡️ Proxy strategy is **automatic by default** — leave it untouched and the actor will:\n\n1. ⚪ Start direct from the Apify container egress IP\n2. 🟡 Fall back to Apify DATACENTER on first block\n3. 🟢 Fall back to Apify RESIDENTIAL (sticky) on next block\n\n🟢 **Force RESIDENTIAL from the start**: enable Apify Proxy and pick the RESIDENTIAL group below. The actor will skip the cascade and go straight to sticky residential.\n\n🟣 **Use your own proxies**: paste URLs into the Custom proxies field. The cascade will start there and fall back to RESIDENTIAL if those fail.\n\n📍 Use the **🌎 Residential Proxy Country** field above to filter the residential pool by country."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}