{
  "openapi": "3.0.1",
  "info": {
    "title": "Redfin Scraper with Contacts | Enterprise Grade",
    "description": "Extract Redfin listings at scale with deep property detail, sold comps, rental data, agents, valuation signals, parcel history, schools, climate risks, and rich media. Built for enterprise-grade real estate intelligence, market monitoring, and automated analytics pipelines.",
    "version": "0.0",
    "x-build-id": "fVdCieSrnJ8bKa3E7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fatihtahta~redfin-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fatihtahta-redfin-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/fatihtahta~redfin-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fatihtahta-redfin-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/fatihtahta~redfin-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fatihtahta-redfin-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": [
          "location"
        ],
        "properties": {
          "deal_type": {
            "title": "Choose Listing Mode",
            "enum": [
              "buy",
              "rent",
              "sold"
            ],
            "type": "string",
            "description": "Select the market lens for the run. Use For Sale for active acquisition or listing surveillance, For Rent for rental supply analysis, and Sold for comparable-sales review or historical pricing context.",
            "default": "buy"
          },
          "location": {
            "title": "Enter Search Locations",
            "minItems": 1,
            "type": "array",
            "description": "Enter one or more supported Redfin locations. Each item can be a city plus state, ZIP code, neighborhood, county, or market name, for example Austin, TX, 90210, Brooklyn Heights, NY, or Orange County, CA. State-wide searches such as California are not supported.",
            "items": {
              "type": "string"
            }
          },
          "min_price": {
            "title": "Set Minimum Price",
            "minimum": 0,
            "type": "integer",
            "description": "Set the floor for the price band. Use this to remove low-value inventory, non-comparable assets, or listings outside the minimum transaction size you care about."
          },
          "max_price": {
            "title": "Set Maximum Price",
            "minimum": 0,
            "type": "integer",
            "description": "Set the ceiling for the price band. Use this to constrain the export to an underwriting range, buyer budget, rental benchmark, or comp universe that excludes luxury outliers."
          },
          "min_bedroom": {
            "title": "Set Minimum Bedrooms",
            "enum": [
              "Studio",
              "1",
              "2",
              "3",
              "4",
              "5+"
            ],
            "type": "string",
            "description": "Set the minimum sleeping-area profile for the search. Studio represents zero bedrooms; 5+ focuses the run on larger household formats and leaves smaller layouts out of scope."
          },
          "max_bedroom": {
            "title": "Set Maximum Bedrooms",
            "enum": [
              "Studio",
              "1",
              "2",
              "3",
              "4",
              "5+"
            ],
            "type": "string",
            "description": "Set the upper bedroom boundary when you need a tighter product class. Studio represents zero bedrooms; 5+ keeps the upper end open for larger assets."
          },
          "min_bathroom": {
            "title": "Set Minimum Bathrooms",
            "enum": [
              "1+",
              "1.5+",
              "2+",
              "2.5+",
              "3+",
              "4+"
            ],
            "type": "string",
            "description": "Set the minimum bathroom threshold for functional comparability. Higher values generally narrow the dataset toward larger, newer, or more amenitized properties."
          },
          "min_parking": {
            "title": "Set Minimum Parking Spaces",
            "enum": [
              "1+",
              "2+",
              "3+",
              "4+",
              "5+"
            ],
            "type": "string",
            "description": "Require a minimum parking allocation when vehicle storage is material to buyer demand, rental positioning, suburban comparability, or development feasibility."
          },
          "include_outdoor_parking": {
            "title": "Include Outdoor Parking",
            "type": "boolean",
            "description": "Count outdoor parking toward the parking requirement. Enable this when uncovered spaces are acceptable in your market model; leave it off when the screen should emphasize garage or covered capacity.",
            "default": false
          },
          "property_type": {
            "title": "Choose Property Types",
            "uniqueItems": true,
            "type": "array",
            "description": "Select the property classes that belong in the analysis. Leave empty only when you intentionally want mixed inventory for broad market discovery.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "townhouse",
                "condo",
                "land",
                "multi_family",
                "mobile",
                "co_op",
                "other"
              ],
              "enumTitles": [
                "House | single-family homes",
                "Townhouse | attached homes",
                "Condo | condominium units",
                "Land | lots and parcels",
                "Multi-Family | multi-unit properties",
                "Mobile Home | manufactured homes",
                "Co-op | cooperative units",
                "Other | additional property types"
              ]
            }
          },
          "min_building_area": {
            "title": "Set Minimum Interior Area",
            "minimum": 0,
            "type": "integer",
            "description": "Set the minimum interior square footage. Use this to exclude undersized assets that would weaken a comp set or fall below your target occupancy, valuation, or rental-use profile."
          },
          "max_building_area": {
            "title": "Set Maximum Interior Area",
            "minimum": 0,
            "type": "integer",
            "description": "Set the maximum interior square footage. Use this to keep the dataset inside a comparable product band and avoid oversized homes that distort price-per-square-foot analysis."
          },
          "min_land_area": {
            "title": "Set Minimum Lot Size",
            "enum": [
              "no_min",
              "2000_sqft",
              "4500_sqft",
              "6500_sqft",
              "8000_sqft",
              "9500_sqft",
              "0.25_acres",
              "0.5_acres",
              "1_acres",
              "2_acres",
              "3_acres",
              "4_acres",
              "5_acres",
              "10_acres",
              "20_acres",
              "40_acres",
              "100_acres"
            ],
            "type": "string",
            "description": "Set the minimum parcel size. This is useful for land-value analysis, redevelopment feasibility, privacy-oriented buyer profiles, or separating standard residential lots from larger acreage.",
            "default": "no_min"
          },
          "max_land_area": {
            "title": "Set Maximum Lot Size",
            "enum": [
              "no_min",
              "2000_sqft",
              "4500_sqft",
              "6500_sqft",
              "8000_sqft",
              "9500_sqft",
              "0.25_acres",
              "0.5_acres",
              "1_acres",
              "2_acres",
              "3_acres",
              "4_acres",
              "5_acres",
              "10_acres",
              "20_acres",
              "40_acres",
              "100_acres"
            ],
            "type": "string",
            "description": "Set the maximum parcel size. Use this to exclude acreage, estate lots, or land-heavy assets when the analysis should remain focused on conventional residential parcels.",
            "default": "no_min"
          },
          "sale_status": {
            "title": "Select Sale Statuses",
            "uniqueItems": true,
            "type": "array",
            "description": "Choose which for-sale listing statuses should remain in scope. Include Coming Soon for listings Redfin marks as upcoming, Active for currently marketed homes, and Pending when under-contract properties are still useful to your inventory review.",
            "items": {
              "type": "string",
              "enum": [
                "coming_soon",
                "active",
                "under_contract"
              ],
              "enumTitles": [
                "Coming Soon | upcoming listings",
                "Active | currently listed",
                "Pending | under contract"
              ]
            },
            "default": [
              "coming_soon",
              "active"
            ]
          },
          "sold_date_range": {
            "title": "Choose Sold Date Range",
            "enum": [
              "last_1_week",
              "last_1_month",
              "last_3_months",
              "last_6_months",
              "last_1_year",
              "last_2_years",
              "last_3_years",
              "last_5_years"
            ],
            "type": "string",
            "description": "Choose how far back Redfin should look for sold comparable properties. Shorter windows keep comps closer to current market conditions; longer windows expand historical coverage. This setting only applies to Sold mode and is ignored for For Sale or For Rent runs.",
            "default": "last_3_months"
          },
          "listing_type": {
            "title": "Choose Sale Listing Types",
            "uniqueItems": true,
            "type": "array",
            "description": "Select the for-sale categories that should remain eligible. This setting only applies to For Sale mode and is useful when the analysis depends on seller type, distress profile, or new-build exposure.",
            "items": {
              "type": "string",
              "enum": [
                "by_agent",
                "foreclosures",
                "by_owner",
                "exclude_short_sales",
                "new_construction",
                "redfin_listings_only"
              ],
              "enumTitles": [
                "By Agent | agent-listed homes",
                "Foreclosures | distressed inventory",
                "By Owner | FSBO listings",
                "Exclude Short Sales | remove short sales",
                "New Construction | newly built homes",
                "Redfin Only | Redfin listings"
              ]
            },
            "default": [
              "by_agent",
              "foreclosures",
              "by_owner",
              "new_construction"
            ]
          },
          "publication_date": {
            "title": "Choose Time on Market",
            "enum": [
              "last_24_hours",
              "last_3_days",
              "last_7_days",
              "last_14_days",
              "last_30_days",
              "over_7_days",
              "over_14_days",
              "over_30_days",
              "over_45_days",
              "over_60_days",
              "over_90_days",
              "over_180_days"
            ],
            "type": "string",
            "description": "Choose the time-on-market window for the search. Short windows favor new supply and alerting workflows; longer exposure windows can surface listings with pricing friction, negotiation potential, or weaker demand signals."
          },
          "keyword": {
            "title": "Search Listing Remarks",
            "type": "string",
            "description": "Search listing remarks for a specific term or phrase. Use targeted language such as ADU, assumable, fixer, waterfront, seller credit, permitted, or investment to surface qualitative signals that structured filters may miss."
          },
          "pool": {
            "title": "Choose Pool Preference",
            "enum": [
              "private_pool",
              "community_pool",
              "private_or_community_pool",
              "no_private_pool"
            ],
            "type": "string",
            "description": "Filter by pool configuration when outdoor amenity value is material to the market thesis. Leave empty when pool presence should not affect eligibility."
          },
          "amenities": {
            "title": "Choose Home Amenities",
            "uniqueItems": true,
            "type": "array",
            "description": "Select home-feature requirements for more opinionated inventory screening. These filters apply to for-sale and sold searches and are useful for amenity-adjusted comps, lifestyle segmentation, or renovation/opportunity targeting.",
            "items": {
              "type": "string",
              "enum": [
                "air_conditioning",
                "basement_finished",
                "basement_unfinished",
                "waterfront",
                "washer_dryer_hookup",
                "has_view",
                "pets_allowed",
                "fireplace",
                "primary_bedroom_on_main_floor",
                "fixer_upper",
                "rv_parking",
                "guest_house",
                "green_home",
                "elevator",
                "accessible_home"
              ],
              "enumTitles": [
                "Air Conditioning",
                "Finished Basement",
                "Unfinished Basement",
                "Waterfront",
                "Washer/Dryer Hookup",
                "View",
                "Pets Allowed",
                "Fireplace",
                "Primary Bedroom on Main Floor",
                "Fixer-Upper",
                "RV Parking",
                "Guest House",
                "Green Home",
                "Elevator",
                "Accessible Home"
              ]
            }
          },
          "tour_options": {
            "title": "Choose Tour and Open-House Options",
            "uniqueItems": true,
            "type": "array",
            "description": "Require listings with open-house availability or immersive tour media. Use this for lead workflows that prioritize immediately viewable inventory; if both open-house windows are selected, the broader anytime option governs.",
            "items": {
              "type": "string",
              "enum": [
                "open_house_this_weekend",
                "open_house_anytime",
                "3d_tour"
              ],
              "enumTitles": [
                "Open House | this weekend",
                "Open House | anytime",
                "3D Tour | walkthrough or video"
              ]
            }
          },
          "min_walk_score": {
            "title": "Set Minimum Walk Score",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Enter the minimum Walk Score from 1 to 100. Use higher thresholds for urban convenience screens, car-light household profiles, or pedestrian-accessible comp sets."
          },
          "min_transit_score": {
            "title": "Set Minimum Transit Score",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Enter the minimum Transit Score from 1 to 100. Higher thresholds bias the dataset toward stronger public-transit access and can support commuter-oriented or transit-adjacent market analysis."
          },
          "min_bike_score": {
            "title": "Set Minimum Bike Score",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Enter the minimum Bike Score from 1 to 100. Use this when bike infrastructure and non-car mobility are part of the demand profile."
          },
          "min_greatschools_score": {
            "title": "Set Minimum GreatSchools Rating",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Enter the minimum GreatSchools rating from 1 to 10. Use this as a school-quality screen for family-oriented demand, suburban comps, or education-sensitive buyer segments."
          },
          "max_hoa_fee": {
            "title": "Set Maximum HOA Fee",
            "enum": [
              "no_fee",
              "25",
              "50",
              "75",
              "100",
              "150",
              "200",
              "250",
              "300",
              "400",
              "500",
              "600",
              "700",
              "800",
              "900",
              "1000",
              "1250",
              "1500",
              "1750",
              "2000",
              "2500",
              "3000",
              "3500",
              "4000",
              "4500",
              "5000"
            ],
            "type": "string",
            "description": "Set the maximum monthly HOA burden. Use this to exclude high-assessment properties, normalize total housing cost, or separate fee-heavy communities from lower-carry assets."
          },
          "max_property_tax": {
            "title": "Set Maximum Property Tax",
            "enum": [
              "no_tax",
              "250",
              "500",
              "750",
              "1000",
              "1250",
              "1500",
              "1750",
              "2000",
              "2500",
              "3000",
              "3500",
              "4000",
              "4500",
              "5000",
              "5500",
              "6000",
              "6500",
              "7000",
              "8000",
              "10000",
              "12000",
              "14000",
              "16000",
              "20000",
              "24000"
            ],
            "type": "string",
            "description": "Set the maximum annual property-tax burden. Use this to keep carrying costs within underwriting assumptions or to avoid assets whose tax profile makes them poor comparables."
          },
          "min_building_year": {
            "title": "Set Earliest Year Built",
            "enum": [
              "2026",
              "2025",
              "2024",
              "2023",
              "2022",
              "2021",
              "2020",
              "2019",
              "2018",
              "2017",
              "2016",
              "2015",
              "2010",
              "2005",
              "2000",
              "1990",
              "1980",
              "1970",
              "1960",
              "1950",
              "1940",
              "1920",
              "1900"
            ],
            "type": "string",
            "description": "Set the oldest acceptable year built. Use a newer threshold to bias the dataset toward more modern systems, layouts, and compliance assumptions."
          },
          "max_building_year": {
            "title": "Set Latest Year Built",
            "enum": [
              "2026",
              "2025",
              "2024",
              "2023",
              "2022",
              "2021",
              "2020",
              "2019",
              "2018",
              "2017",
              "2016",
              "2015",
              "2010",
              "2005",
              "2000",
              "1990",
              "1980",
              "1970",
              "1960",
              "1950",
              "1940",
              "1920",
              "1900"
            ],
            "type": "string",
            "description": "Set the newest acceptable year built. Use this when the target universe is older housing stock, vintage assets, or properties with potential renovation upside."
          },
          "min_stories": {
            "title": "Set Minimum Stories",
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5",
              "10",
              "15",
              "20"
            ],
            "type": "string",
            "description": "Set the minimum story count when verticality is part of the asset definition, such as multi-level homes, taller buildings, or denser residential formats."
          },
          "max_stories": {
            "title": "Set Maximum Stories",
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5",
              "10",
              "15",
              "20"
            ],
            "type": "string",
            "description": "Set the maximum story count to exclude taller structures or keep the dataset aligned with low-rise, mid-rise, or accessibility-sensitive product requirements."
          },
          "sort_by": {
            "title": "Choose Result Sort",
            "enum": [
              "recommended",
              "newest",
              "lowest_price",
              "highest_price",
              "highest_lot_size",
              "highest_building_size",
              "lowest_price_sqft"
            ],
            "type": "string",
            "description": "Select how Redfin should order the search results before collection. Use Recommended for Redfin's default ranking, Newest for fresh inventory, price sorts for budget or comp scans, size sorts for larger physical assets, and lowest price per square foot for value-oriented screening.",
            "default": "recommended"
          },
          "enrich_data": {
            "title": "Collect Richer Listing Details",
            "type": "boolean",
            "description": "Enable enrichment when you need a more complete diligence record: remarks, amenity detail, climate-risk context, schools, neighborhood scores, zoning, parcel metadata, and summaries when Redfin provides them. Disable it for faster reconnaissance runs, QA smoke tests, or high-level market counts where the standard result fields are sufficient.",
            "default": true
          },
          "limit": {
            "title": "Set Maximum Results",
            "minimum": 1,
            "type": "integer",
            "description": "Enter the maximum number of listings to save. Set a low value for validation or sampling, and leave empty when completeness is more important than a predictable output size."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}