{
  "openapi": "3.0.1",
  "info": {
    "title": "Realtor.com Listings Scraper",
    "description": "Scrape Realtor.com property listings by location: price, beds, baths, photos, description and the listing agent's contact. Export to JSON, CSV or Excel.",
    "version": "0.0",
    "x-build-id": "ISL9JjQbdW1rlAXHm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nice_dev~realtor-listings-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nice_dev-realtor-listings-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/nice_dev~realtor-listings-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nice_dev-realtor-listings-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/nice_dev~realtor-listings-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nice_dev-realtor-listings-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",
            "maxItems": 1000,
            "type": "array",
            "description": "Realtor.com search URLs (`https://www.realtor.com/realestateandhomes-search/Austin_TX/beds-3/price-300000-600000`), sold pages (`/soldhomeprices/...`) or rental pages (`/apartments/...`). Filters written in the URL and read as the site reads them: price, beds, baths, sqft, lot size (lot-sqft), home age (age-N, age-N+), days on market (dom-N, show-newest-listings), HOA (hoa-no, hoa-N: no HOA or up to N), garage, property type, radius, pnd-hide, fc-hide, nc-hide, 55p-hide, show-open-house, show-foreclosure, shw-nc, show-virtual-tours, show-recently-sold (soldwithin-1/3/6/12), pet-friendly rentals and the sorts sby-1 (price up), sby-2 (price down), sby-6 (newest), sby-14 (sqft), sby-16 (photos). Other sorts are ignored with a warning in the log (a sort changes the order, not which listings come out); /overview is ignored. A filter the Actor cannot apply (features and keywords, price reduced, 55+ only, existing homes only) is refused by name with the field to use instead, never dropped in silence. When this list is not empty, the search fields below are ignored; caps, date filters and monitoring still apply. Max 1 000 URLs.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "location": {
            "title": "Location",
            "maxLength": 200,
            "type": "string",
            "description": "City, ZIP code, county or state, as typed on Realtor.com (e.g. `Austin, TX`, `78704`, `Texas`). Empty = only the locations listed below are used."
          },
          "locations": {
            "title": "More locations",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several locations in one run: one search per location (times each keyword below). Added to **Location** (3 keywords × 4 locations = 12 searches, max 500). Listings found by several searches are saved once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "query": {
            "title": "Search keyword",
            "maxLength": 200,
            "type": "string",
            "description": "Free-text keyword matched against the listing text, as on Realtor.com (e.g. `pool`, `waterfront`, `new roof`). Empty = no keyword filter."
          },
          "searchQueries": {
            "title": "More search keywords",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several keywords in one run: every keyword is searched in every location (3 keywords × 4 locations = 12 searches, max 500). Added to **Search keyword**.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "listingStatus": {
            "title": "Listing status",
            "enum": [
              "for_sale",
              "for_rent",
              "sold",
              "pending",
              "coming_soon"
            ],
            "type": "string",
            "description": "Which listings to search: for sale, for rent, recently sold, pending or coming soon.",
            "default": "for_sale"
          },
          "propertyType": {
            "title": "Property type",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only these property types. Empty = all types. Values measured on Austin, TX (7 041 listings): single-family 4 424, condos 1 602, townhomes 137, multi-family 223, land 552, mobile 78, farm 25.",
            "items": {
              "type": "string",
              "enum": [
                "single_family",
                "condos",
                "townhomes",
                "multi_family",
                "land",
                "mobile",
                "farm"
              ],
              "enumTitles": [
                "Single family",
                "Condo",
                "Townhome",
                "Multi-family",
                "Land",
                "Mobile / manufactured",
                "Farm"
              ]
            },
            "default": []
          },
          "maxItems": {
            "title": "Max listings",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of listings to save for the whole run (after deduplication and filters). 0 = no limit.",
            "default": 100
          },
          "maxItemsPerQuery": {
            "title": "Max listings per search",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap for each single search (one location × one keyword), so one big city cannot eat the whole run. 0 = no per-search cap.",
            "default": 0
          },
          "extractDetails": {
            "title": "Extract details",
            "type": "boolean",
            "description": "Open each listing's detail page to add price history, tax history, nearby schools, flood / fire / noise risk and value estimates. Read 25 listings per extra request (a little slower, charged as a separate event). Off = the search results only, which already carry description, photos and agent contact.",
            "default": false
          },
          "includePermitHistory": {
            "title": "Include building permit history",
            "type": "boolean",
            "description": "Add the building permits filed on each property (type of work, project, date, status) and a <code>hasRoofPermit</code> flag to spot roofing jobs at a glance. Charged per permit row delivered (3 permits = 3 events, a property with none = 0). Reads the listing's detail page, so Extract details is turned on with it.",
            "default": false
          },
          "includeViewStats": {
            "title": "Include view statistics",
            "type": "boolean",
            "description": "Add how many times each listing was viewed, clicked, saved, shared and enquired about over the last 1, 7, 30 days… as counted by Realtor.com. Charged per listing whose statistics are delivered (brand-new listings have none yet and cost nothing). Reads the listing's detail page, so Extract details is turned on with it.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "list_date:desc",
              "list_date:asc",
              "list_price:desc",
              "list_price:asc",
              "sqft:desc",
              "beds:desc",
              "last_update_date:desc",
              "sold_date:desc",
              "photo_count:desc"
            ],
            "type": "string",
            "description": "Order the site returns the listings in. Newest first is the one to use for monitoring.",
            "default": "list_date:desc"
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Listing price, in US dollars. For rentals this is the monthly rent."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Listing price, in US dollars."
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Minimum number of bedrooms."
          },
          "maxBedrooms": {
            "title": "Max bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of bedrooms."
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "number",
            "description": "Half bathrooms count as 0.5 (e.g. `2.5`)."
          },
          "maxBathrooms": {
            "title": "Max bathrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "number",
            "description": "Maximum number of bathrooms, half bathrooms counted as 0.5."
          },
          "minSqft": {
            "title": "Min living area",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Interior living area, in square feet."
          },
          "maxSqft": {
            "title": "Max living area",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Maximum interior living area, in square feet."
          },
          "minLotSqft": {
            "title": "Min lot size",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Lot size, in square feet (1 acre = 43 560 sqft)."
          },
          "maxLotSqft": {
            "title": "Max lot size",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Maximum lot size, in square feet."
          },
          "maxHoaFee": {
            "title": "Max HOA fee",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum monthly homeowners association fee, in US dollars. Listings without a fee are kept."
          },
          "minYearBuilt": {
            "title": "Min year built",
            "minimum": 1800,
            "maximum": 2100,
            "type": "integer",
            "description": "Keep only properties built in this year or later."
          },
          "maxYearBuilt": {
            "title": "Max year built",
            "minimum": 1800,
            "maximum": 2100,
            "type": "integer",
            "description": "Keep only properties built in this year or earlier."
          },
          "minGarage": {
            "title": "Min garage spaces",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Minimum number of garage spaces."
          },
          "radiusMiles": {
            "title": "Search radius",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Widen the search around the location, in miles (Realtor.com's own radius). 0 = the location's own boundary. Measured on Austin, TX: 7 041 listings without, 10 297 with a 5-mile radius.",
            "default": 0
          },
          "soldWithinDays": {
            "title": "Sold within days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only listings sold in the last N days, counted in US calendar days (New York time) from the day the run started, that day included. Applies to **Sold** listings only. 0 = no limit.",
            "default": 0
          },
          "foreclosureOnly": {
            "title": "Foreclosures only",
            "type": "boolean",
            "description": "Only properties in foreclosure. Measured on Austin, TX: 72 of 7 041 listings.",
            "default": false
          },
          "newConstructionOnly": {
            "title": "New construction only",
            "type": "boolean",
            "description": "Only newly built properties. Measured on Austin, TX: 1 152 of 7 041 listings.",
            "default": false
          },
          "openHousesOnly": {
            "title": "Open houses only",
            "type": "boolean",
            "description": "Only listings with an open house scheduled.",
            "default": false
          },
          "virtualTourOnly": {
            "title": "Virtual tour only",
            "type": "boolean",
            "description": "Only listings that come with a virtual tour or a 3D walkthrough.",
            "default": false
          },
          "noHoaFeeOnly": {
            "title": "No HOA fee only",
            "type": "boolean",
            "description": "Only listings without homeowners association fees.",
            "default": false
          },
          "excludePending": {
            "title": "Exclude pending and contingent",
            "type": "boolean",
            "description": "Homes for sale only: leave out the listings already under contract. Realtor.com keeps them in its for-sale results: from 1 in 7 (Houston) to 1 in 3 (Chicago).",
            "default": false
          },
          "mlsOnly": {
            "title": "MLS listings only",
            "type": "boolean",
            "description": "Only listings published through an MLS by a licensed agent. Leaves out builders' new-home plans and the apartments that rental companies post themselves (from 3 rentals in 10 in Houston to 9 in 10 in Seattle).",
            "default": false
          },
          "petsAllowed": {
            "title": "Pets allowed",
            "uniqueItems": true,
            "type": "array",
            "description": "Rentals that accept these pets. Only for **For rent** listings: with any other status the input is refused before the run starts, since Realtor.com rejects it.",
            "items": {
              "type": "string",
              "enum": [
                "cats",
                "dogs"
              ],
              "enumTitles": [
                "Cats",
                "Dogs"
              ]
            },
            "default": []
          },
          "postedAfter": {
            "title": "Listed after",
            "maxLength": 40,
            "type": "string",
            "description": "Keep listings put on the market on or after this date — the listing's `listDate`. Absolute (`2026-09-01`, or a full ISO timestamp) or relative (`7 days`, `24 hours`, `2 weeks`). Listings filtered out are not saved, and a search of the form, read newest first, stops at the first page that is entirely older (a pasted URL keeps its own sort)."
          },
          "postedBefore": {
            "title": "Listed before",
            "maxLength": 40,
            "type": "string",
            "description": "Keep listings put on the market on or before this date — the listing's `listDate`. Same formats as above."
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop a listing when one of these words appears in its address, city or description (case and accents ignored). Applied after the site's own filters.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "requirePhone": {
            "title": "Only listings with an agent phone",
            "type": "boolean",
            "description": "Drop listings whose agent has no phone number.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new listings",
            "type": "boolean",
            "description": "Return only the listings that were not delivered by a previous run with the same **State key**. The first run returns everything and remembers it.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "maxLength": 64,
            "type": "string",
            "description": "Name of the memory used by **Only new listings**. Use a different key for each saved search so they do not share their history.",
            "default": "default"
          },
          "resetState": {
            "title": "Reset state",
            "type": "boolean",
            "description": "Forget everything remembered under this **State key** before starting, so the next run returns every listing again.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave the default: the proxy is included in the price. Residential proxies are not available for this Actor.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of requests running at the same time.",
            "default": 8
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 10,
            "maximum": 2000,
            "type": "integer",
            "description": "Upper bound on the request rate, to stay polite with the site.",
            "default": 120
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "How many times a failed request is retried before it is given up.",
            "default": 5
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Log every request and every filter decision. Useful to report a problem.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}