{
  "openapi": "3.0.1",
  "info": {
    "title": "Realtor Search Scraper (Cheap)",
    "description": "Property scraper that extracts Realtor.com listings, prices, and agent details so investors and agents can analyze market data and find deals affordably.",
    "version": "0.0",
    "x-build-id": "M2ttHcJxnBeJjkPyl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/data_api~realtor-search-scraper-cheap/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-data_api-realtor-search-scraper-cheap",
        "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/data_api~realtor-search-scraper-cheap/runs": {
      "post": {
        "operationId": "runs-sync-data_api-realtor-search-scraper-cheap",
        "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/data_api~realtor-search-scraper-cheap/run-sync": {
      "post": {
        "operationId": "run-sync-data_api-realtor-search-scraper-cheap",
        "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": [
          "listingStatuses"
        ],
        "properties": {
          "listingStatuses": {
            "title": "Listing state",
            "type": "array",
            "description": "Pick which market states to pull. Choose one or more of: for_sale (live on the market), sold (closed deals, great for comps), for_rent (active rentals), ready_to_build (new-build plans), off_market, other, new_community. For example ['for_sale', 'ready_to_build'] grabs both live homes and upcoming projects.",
            "items": {
              "type": "string"
            }
          },
          "zipCode": {
            "title": "ZIP code",
            "type": "string",
            "description": "Narrow the search to one 5-digit US ZIP. This is the most precise way to lock onto a single neighborhood. For example '78704' for South Austin."
          },
          "stateCode": {
            "title": "State abbreviation",
            "type": "string",
            "description": "Limit results to a single 2-letter US state. Pair it with other filters so you don't sweep up every home in the state. For example 'TX' for Texas or 'FL' for Florida."
          },
          "cityName": {
            "title": "City",
            "type": "string",
            "description": "Match on an exact city name. Combine with stateCode when a city name repeats across states (think Springfield). For example 'Denver' or 'Miami'."
          },
          "streetName": {
            "title": "Street",
            "type": "string",
            "description": "Zero in on homes along one street. Handy for block-level market checks. For example 'Ocean Dr' or 'Elm St'."
          },
          "addressLine": {
            "title": "Full street address",
            "type": "string",
            "description": "Look up one exact address line to pull its listing history or current details. For example '742 Evergreen Terrace'."
          },
          "propertyTypes": {
            "title": "Home types",
            "type": "array",
            "description": "Keep only the home categories you care about. Accepted values: apartment, condo_townhome, condo_townhome_rowhome_coop, condo, condos, single_family, multi_family, mobile, land, farm, other. For example ['single_family', 'condo'] returns only houses and condos.",
            "items": {
              "type": "string"
            }
          },
          "featureKeywords": {
            "title": "Amenity keywords",
            "type": "array",
            "description": "Require specific amenities or features on each home. Options include: basement, carport, central_air, den, hardwood_floors, pool, waterfront, ocean_view, fireplace. For example ['pool', 'waterfront'] surfaces only homes with both.",
            "items": {
              "type": "string"
            }
          },
          "bedsMin": {
            "title": "Bedrooms from",
            "type": "integer",
            "description": "Lowest bedroom count to accept. For example 2 keeps only homes with 2 or more bedrooms."
          },
          "bedsMax": {
            "title": "Bedrooms up to",
            "type": "integer",
            "description": "Highest bedroom count to accept. For example 4 drops anything larger."
          },
          "bathsMin": {
            "title": "Bathrooms from",
            "type": "integer",
            "description": "Lowest bathroom count to accept, half-baths included. For example 2 keeps homes with at least two bathrooms."
          },
          "bathsMax": {
            "title": "Bathrooms up to",
            "type": "integer",
            "description": "Highest bathroom count to accept."
          },
          "listPriceMin": {
            "title": "Asking price from",
            "type": "integer",
            "description": "Lowest active asking price in USD. For example 250000 hides anything under $250k."
          },
          "listPriceMax": {
            "title": "Asking price up to",
            "type": "integer",
            "description": "Highest active asking price in USD. For example 750000 caps the search at $750k."
          },
          "soldPriceMin": {
            "title": "Sold price from",
            "type": "integer",
            "description": "Lowest closing price in USD. This only applies when listingStatuses includes 'sold'. For example 400000."
          },
          "soldPriceMax": {
            "title": "Sold price up to",
            "type": "integer",
            "description": "Highest closing price in USD. This only applies when listingStatuses includes 'sold'. For example 800000."
          },
          "soldDateFrom": {
            "title": "Sold on or after",
            "type": "string",
            "description": "Earliest sale date in YYYY-MM-DD form. Use it to keep comps recent. For example '2024-01-01' returns sales from 2024 onward."
          },
          "soldDateTo": {
            "title": "Sold on or before",
            "type": "string",
            "description": "Latest sale date in YYYY-MM-DD form. For example '2024-12-31'."
          },
          "sqftMin": {
            "title": "Interior sqft from",
            "type": "integer",
            "description": "Smallest interior living area in square feet. For example 1200."
          },
          "sqftMax": {
            "title": "Interior sqft up to",
            "type": "integer",
            "description": "Largest interior living area in square feet. For example 3500."
          },
          "lotSqftMin": {
            "title": "Lot sqft from",
            "type": "integer",
            "description": "Smallest lot size in square feet. For example 4000."
          },
          "lotSqftMax": {
            "title": "Lot sqft up to",
            "type": "integer",
            "description": "Largest lot size in square feet. For example 12000."
          },
          "yearBuiltFrom": {
            "title": "Built on or after",
            "type": "integer",
            "description": "Earliest construction year to keep. Set a floor to skip older stock. For example 2015 for newer builds."
          },
          "yearBuiltTo": {
            "title": "Built on or before",
            "type": "integer",
            "description": "Latest construction year to keep. Set a ceiling to chase older or historic homes. For example 1990."
          },
          "hoaFeeMax": {
            "title": "Top HOA fee",
            "type": "integer",
            "description": "Highest monthly Homeowners Association fee you'll accept. For example 250 finds homes with light or no HOA dues. Ignored when 'No HOA fee' is on."
          },
          "noHoaFee": {
            "title": "Zero HOA only",
            "type": "boolean",
            "description": "Turn on to return only homes with no Homeowners Association fee at all.",
            "default": false
          },
          "openHouseFrom": {
            "title": "Open house on or after",
            "type": "string",
            "description": "Keep homes with an open house from this date forward (YYYY-MM-DD). For example '2024-06-01'."
          },
          "openHouseTo": {
            "title": "Open house on or before",
            "type": "string",
            "description": "Keep homes with an open house up to this date (YYYY-MM-DD). For example '2024-06-30'."
          },
          "pendingOnly": {
            "title": "Pending only",
            "type": "boolean",
            "description": "Turn on to return only homes flagged as Pending (under contract).",
            "default": false
          },
          "contingentOnly": {
            "title": "Contingent only",
            "type": "boolean",
            "description": "Turn on to return only homes flagged as Contingent (under contract with conditions).",
            "default": false
          },
          "foreclosureOnly": {
            "title": "Foreclosures only",
            "type": "boolean",
            "description": "Turn on to isolate homes that are actively in foreclosure. Useful for sourcing distressed deals.",
            "default": false
          },
          "newConstructionOnly": {
            "title": "New construction only",
            "type": "boolean",
            "description": "Turn on to isolate homes tagged as newly built. Handy for tracking builder activity.",
            "default": false
          },
          "hasVirtualTour": {
            "title": "Has a virtual tour",
            "type": "boolean",
            "description": "Turn on to keep only listings that ship with at least one kind of virtual tour.",
            "default": false
          },
          "hasMatterport": {
            "title": "Has Matterport 3D",
            "type": "boolean",
            "description": "Turn on to keep only listings that carry a Matterport 3D walkthrough.",
            "default": false
          },
          "catsAllowed": {
            "title": "Cats welcome (rentals)",
            "type": "boolean",
            "description": "Turn on to keep only rentals that explicitly allow cats.",
            "default": false
          },
          "dogsAllowed": {
            "title": "Dogs welcome (rentals)",
            "type": "boolean",
            "description": "Turn on to keep only rentals that explicitly allow dogs.",
            "default": false
          },
          "sortField": {
            "title": "Order results by",
            "enum": [
              "list_date",
              "list_price",
              "sold_price",
              "sold_date",
              "beds",
              "lot_sqft",
              "photo_count",
              "last_update_date"
            ],
            "type": "string",
            "description": "Choose the field Realtor.com uses to order the response.",
            "default": "list_date"
          },
          "sortDirection": {
            "title": "Order direction",
            "enum": [
              "desc",
              "asc"
            ],
            "type": "string",
            "description": "Pick the run order: descending puts newest or highest first, ascending puts oldest or lowest first.",
            "default": "desc"
          },
          "agentSourceId": {
            "title": "Agent source ID",
            "type": "string",
            "description": "Keep only listings tied to one specific agent source ID."
          },
          "sellingAgentName": {
            "title": "Selling agent name",
            "type": "string",
            "description": "Match listings by the selling agent's first and last name. For example 'Jane Smith'."
          },
          "mlsListingId": {
            "title": "MLS listing ID",
            "type": "string",
            "description": "Pull one listing by its MLS or source-system ID. For example '87654321'."
          },
          "propertyId": {
            "title": "Realtor property ID",
            "type": "string",
            "description": "Pull one home directly by its Realtor.com internal property ID. For example 'M98765-43210'."
          },
          "fulfillmentId": {
            "title": "Fulfillment ID",
            "type": "string",
            "description": "Keep only listings tied to a specific agent fulfillment ID."
          },
          "pageSize": {
            "title": "Listings per API page",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many listings to request in one API call. Realtor.com allows up to 200. Leave it at 200 to move fastest.",
            "default": 200
          },
          "startOffset": {
            "title": "Starting offset",
            "minimum": 0,
            "type": "integer",
            "description": "Where in the result set the scraper begins. Bump it to skip the first records or resume a run that stopped early. Leave at 0 to start from the top.",
            "default": 0
          },
          "resultsLimit": {
            "title": "Total listings cap",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard ceiling on how many listings the run collects across all pages. The scraper stops the instant it hits this number, which keeps spend predictable. Max is 5000. For example 300 stops at exactly 300 homes.",
            "default": 1000
          },
          "timeoutSeconds": {
            "title": "Whole-run timeout (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "If the run outlasts this many seconds, it shuts down cleanly. Raise it for very large searches. For example 300 is five minutes.",
            "default": 300
          },
          "requestTimeoutSeconds": {
            "title": "Per-request timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "How long to wait on each Realtor.com GraphQL call before giving up on it. For example 45 waits 45 seconds.",
            "default": 45
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Route requests through proxies to mask your IP and avoid blocks. US datacenter proxies are the default and work for most searches."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}