{
  "openapi": "3.0.1",
  "info": {
    "title": "Realtor Scraper (from $1/1,000 listings) - Realtor.com Data",
    "description": "Scrape for-sale, for-rent and sold Realtor.com listings by keyword, URL or filter. First 10 items free per search, then $1/1,000 for summaries (list $0.01 + item $0.001). Full detail adds $0.001/property, floor plans $0.001. No proxies. Fits market research and PropTech teams.",
    "version": "0.0",
    "x-build-id": "XPydUCXGkOkIQP3P1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/epctex~realtor-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-epctex-realtor-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/epctex~realtor-scraper/runs": {
      "post": {
        "operationId": "runs-sync-epctex-realtor-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/epctex~realtor-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-epctex-realtor-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": "URLs to start with. It should be listing or property detail URLs. Filters in the URL are honoured, and the location is resolved internally.",
            "items": {
              "type": "string"
            }
          },
          "search": {
            "title": "Search terms",
            "type": "string",
            "description": "Terms for fulltext search in Realtor page. Requires a search mode."
          },
          "mode": {
            "title": "Search mode (used with the search term)",
            "enum": [
              "BUY",
              "RENT",
              "SOLD"
            ],
            "type": "string",
            "description": "Which listings to search. Start URLs carry their own mode and ignore this field.",
            "default": "BUY"
          },
          "maxItems": {
            "title": "Maximum number of properties",
            "type": "integer",
            "description": "Maximum number of properties that you want as output. Default is all"
          },
          "includeDetails": {
            "title": "Include full property details",
            "type": "boolean",
            "description": "Look up the full detail of every search result. Turn this off to get the lighter listing summary instead - much cheaper, but each item carries fewer fields and at most three photos.",
            "default": true
          },
          "includeFloorplans": {
            "title": "Include floor plans",
            "type": "boolean",
            "description": "Fetch the floor plans of the properties when available. Only community rentals have them.",
            "default": false
          },
          "page": {
            "title": "Start page",
            "minimum": 1,
            "type": "integer",
            "description": "The listing page to start from. Paging continues from here until the maximum number of properties is reached."
          },
          "type": {
            "title": "Property type",
            "type": "array",
            "description": "Limit results to these property types. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "single-family-home",
                "multi-family-home",
                "condo",
                "condop",
                "coop",
                "townhome",
                "apartments",
                "mfd-mobile-home",
                "farms-ranches",
                "land"
              ],
              "enumTitles": [
                "Single family home",
                "Multi family home",
                "Condo",
                "Condop",
                "Co-op",
                "Townhome",
                "Apartments",
                "Manufactured / mobile home",
                "Farms and ranches",
                "Land"
              ]
            }
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "relevant",
              "best-match",
              "newest",
              "recently-added",
              "sold-date",
              "newest-built",
              "luxury",
              "affordable",
              "highest-price",
              "lowest-price",
              "open-house-date",
              "recently-reduced",
              "largest-sqft",
              "lot-size",
              "photo-count"
            ],
            "type": "string",
            "description": "Sort order for search results. Valid values depend on the mode; a value the mode does not accept is ignored with a warning."
          },
          "keyword": {
            "title": "Keyword",
            "maxLength": 200,
            "type": "string",
            "description": "Only return listings whose text contains this keyword."
          },
          "radius": {
            "title": "Radius (miles)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Search this many miles around the location. Realtor allows at most 50."
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price to include. Applies to the sold price in sold mode."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price to include. Applies to the sold price in sold mode."
          },
          "minBed": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest number of bedrooms. Use 0 for studios."
          },
          "maxBed": {
            "title": "Maximum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Highest number of bedrooms."
          },
          "minBath": {
            "title": "Minimum bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest number of bathrooms."
          },
          "maxBath": {
            "title": "Maximum bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Highest number of bathrooms."
          },
          "minSqft": {
            "title": "Minimum living area (sqft)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest living area in square feet."
          },
          "maxSqft": {
            "title": "Maximum living area (sqft)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest living area in square feet."
          },
          "minLotSqft": {
            "title": "Minimum lot area (sqft)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest lot area in square feet."
          },
          "maxLotSqft": {
            "title": "Maximum lot area (sqft)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest lot area in square feet."
          },
          "minYearBuilt": {
            "title": "Earliest year built",
            "minimum": 1500,
            "maximum": 2100,
            "type": "integer",
            "description": "Earliest build year to include."
          },
          "maxYearBuilt": {
            "title": "Latest year built",
            "minimum": 1500,
            "maximum": 2100,
            "type": "integer",
            "description": "Latest build year to include."
          },
          "daysOnMarket": {
            "title": "Listed within (days)",
            "minimum": 1,
            "type": "integer",
            "description": "Only return listings that went live within this many days."
          },
          "includePending": {
            "title": "Include pending listings",
            "type": "boolean",
            "description": "Pending listings are included by default. Turn this off to exclude them.",
            "default": true
          },
          "tags": {
            "title": "Amenities",
            "type": "array",
            "description": "Only return listings carrying all of these amenities.",
            "items": {
              "type": "string",
              "enum": [
                "garage-1-or-more",
                "garage-2-or-more",
                "garage-3-or-more",
                "swimming-pool",
                "spa-or-hot-tub",
                "horse-facilities"
              ],
              "enumTitles": [
                "Garage, 1+ car",
                "Garage, 2+ cars",
                "Garage, 3+ cars",
                "Swimming pool",
                "Spa or hot tub",
                "Horse facilities"
              ]
            }
          },
          "moveInBy": {
            "title": "Move in by (rent only)",
            "pattern": "^(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/(\\d{2})$",
            "type": "string",
            "description": "Only return rentals available by this date, as MM/DD/YY. Ignored outside rent mode."
          },
          "soldWithin": {
            "title": "Sold within (months, sold only)",
            "enum": [
              "1",
              "3",
              "6",
              "12",
              "24",
              "36"
            ],
            "type": "string",
            "description": "How far back to look for sold listings. Defaults to 6 months. Ignored outside sold mode."
          },
          "customMapFunction": {
            "title": "Custom map function",
            "type": "string",
            "description": "Function that takes each of the resulting objects as an argument and returns the object you want to keep. Must be a single function, e.g. (object) => { return {...object} }. Leave empty if you do not need to transform the output - an unusable function is ignored and the original items are saved instead."
          },
          "outputConnector": {
            "title": "Send results to Notion, Todoist, … (optional)",
            "type": "string",
            "description": "Pick an MCP connector you authorized in Console → Settings → API & Integrations → MCP connectors (e.g. Notion, Todoist — any service whose MCP server offers non-destructive write tools works best-effort). The scraped results are written through your own connector — the Actor never sees your third-party credentials. Only non-destructive write tools are used; it can never delete or overwrite your existing data."
          },
          "deliverTarget": {
            "title": "Destination target",
            "type": "string",
            "description": "Where to write into the connector — paste the URL or ID. Notion example: https://www.notion.so/My-Posts-24f8a1b2c3d44e5f8a9b0c1d2e3f4a5b. Leave empty for services that need no target (e.g. Todoist Inbox, Slack). For Notion, share the page or database with your connector first (Notion's ••• → Connections menu), and point at a PAGE for structured columns (the Actor builds the database for you) — an empty database receives only the title (the rest of each record goes to the row's body)."
          },
          "deliverMode": {
            "title": "Write mode",
            "enum": [
              "perPost",
              "summary"
            ],
            "type": "string",
            "description": "perPost writes one record per scraped item; summary writes a single roll-up for the run.",
            "default": "perPost"
          },
          "deliverMaxItems": {
            "title": "Max records to deliver — perPost only (optional)",
            "minimum": 1,
            "type": "integer",
            "description": "Cap on how many records perPost mode writes to the connector; ignored in summary mode. Leave empty to deliver everything scraped."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}