openapi: 3.1.0 info: title: Redfin Stingray API description: >- The Redfin Stingray API is the internal REST API that powers the Redfin website and mobile applications. It provides endpoints for property search, listing details, home value estimates (Redfin Estimates), neighborhood statistics, commute information, and GIS-based map data. The API supports searching by region, price range, property type, and various filters, returning structured JSON responses with property details including address, price, beds, baths, square footage, lot size, and days on market. While not officially documented by Redfin, this API has been reverse-engineered by the developer community and is accessible at redfin.com/stingray endpoints. version: '1.0.0' contact: name: Redfin url: https://www.redfin.com termsOfService: https://www.redfin.com/about/terms-of-use externalDocs: description: Reverse-Engineered API Documentation url: https://github.com/alientechsw/RedfinPlus/blob/master/docs/REDFIN.md servers: - url: https://www.redfin.com/stingray description: Redfin Stingray Production Server tags: - name: Market Trends description: >- Endpoints for regional aggregate and historical market trends. - name: Neighborhood description: >- Endpoints for neighborhood statistics, commute data, and area info. - name: Property Details description: >- Endpoints for retrieving detailed information about a specific property. - name: Search description: >- Endpoints for searching properties by location, region, and filters. - name: Valuation description: >- Endpoints for automated valuation model (AVM) data and estimates. paths: /do/gis-search: get: operationId: gisSearch summary: Search properties via GIS description: >- Performs a geographic information system search for properties within a specified region. Returns property listings matching the provided filters including price range, property type, bedroom and bathroom counts, and geographic boundaries. tags: - Search parameters: - $ref: '#/components/parameters/regionId' - $ref: '#/components/parameters/regionType' - $ref: '#/components/parameters/uipt' - $ref: '#/components/parameters/status' - $ref: '#/components/parameters/minPrice' - $ref: '#/components/parameters/maxPrice' - $ref: '#/components/parameters/numBeds' - $ref: '#/components/parameters/maxNumBeds' - $ref: '#/components/parameters/numBaths' - $ref: '#/components/parameters/maxNumBaths' - $ref: '#/components/parameters/minYearBuilt' - $ref: '#/components/parameters/maxYearBuilt' - $ref: '#/components/parameters/minListingApproxSize' - $ref: '#/components/parameters/maxListingApproxSize' - $ref: '#/components/parameters/minParcelSize' - $ref: '#/components/parameters/maxParcelSize' - $ref: '#/components/parameters/numHomes' - $ref: '#/components/parameters/pageNumber' - name: user_poly in: query description: >- Custom polygon coordinates defining a geographic search boundary. schema: type: string responses: '200': description: Successful property search results content: application/json: schema: $ref: '#/components/schemas/GisSearchResponse' /api/gis: get: operationId: gisApiSearch summary: Search properties via GIS API description: >- Alternative GIS-based property search endpoint. Returns property data in JSON format matching the specified region and filter criteria. Supports polygon-based geographic boundaries and all standard property filters. tags: - Search parameters: - $ref: '#/components/parameters/regionId' - $ref: '#/components/parameters/regionType' - $ref: '#/components/parameters/uipt' - $ref: '#/components/parameters/status' - $ref: '#/components/parameters/minPrice' - $ref: '#/components/parameters/maxPrice' - $ref: '#/components/parameters/numBeds' - $ref: '#/components/parameters/numBaths' - $ref: '#/components/parameters/numHomes' - $ref: '#/components/parameters/pageNumber' - name: al in: query description: >- Access level for the request, controlling the detail of data returned. schema: type: integer - name: sp in: query description: >- Sort parameter controlling the ordering of search results. schema: type: string - name: v in: query description: >- API version parameter. schema: type: integer responses: '200': description: Successful property search results content: application/json: schema: $ref: '#/components/schemas/GisSearchResponse' /api/home/details/initialInfo: get: operationId: getInitialInfo summary: Get initial property information description: >- Retrieves the initial information for a property, including the propertyId and listingId needed for subsequent detail requests. Takes a property URL path as input and returns identifiers and basic property metadata. tags: - Property Details parameters: - name: path in: query required: true description: >- The URL path of the property listing page on Redfin, such as /CA/San-Francisco/123-Main-St-94105/home/12345678. schema: type: string responses: '200': description: Initial property information with identifiers content: application/json: schema: $ref: '#/components/schemas/InitialInfoResponse' /api/home/details/aboveTheFold: get: operationId: getAboveTheFold summary: Get above-the-fold property details description: >- Retrieves the primary property details displayed above the fold on the listing page, including price, address, photos, key facts, and listing status information. tags: - Property Details parameters: - $ref: '#/components/parameters/propertyId' - $ref: '#/components/parameters/listingId' - $ref: '#/components/parameters/accessLevel' responses: '200': description: Above-the-fold property details content: application/json: schema: $ref: '#/components/schemas/AboveTheFoldResponse' /api/home/details/belowTheFold: get: operationId: getBelowTheFold summary: Get below-the-fold property details description: >- Retrieves detailed MLS data for a property, including property history, tax information, schools, similar homes, and extended property characteristics. This endpoint provides the most comprehensive data for a single property listing. Note that propertyHistoryInfo may not always be available. tags: - Property Details parameters: - $ref: '#/components/parameters/propertyId' - $ref: '#/components/parameters/listingId' - $ref: '#/components/parameters/accessLevel' responses: '200': description: Below-the-fold property details with MLS data content: application/json: schema: $ref: '#/components/schemas/BelowTheFoldResponse' /api/home/details/mainHouseInfoPanelInfo: get: operationId: getMainHouseInfoPanelInfo summary: Get main house info panel data description: >- Retrieves the structured property information typically shown in the main info panel, including beds, baths, square footage, lot size, year built, property type, and other key property attributes. tags: - Property Details parameters: - $ref: '#/components/parameters/propertyId' - $ref: '#/components/parameters/listingId' - $ref: '#/components/parameters/accessLevel' responses: '200': description: Main house information panel data content: application/json: schema: $ref: '#/components/schemas/MainHouseInfoPanelResponse' /api/home/details/avmHistoricalData: get: operationId: getAvmHistoricalData summary: Get AVM historical valuation data description: >- Retrieves historical automated valuation model (AVM) data for a property, including Redfin Estimate history over time. Returns time-series data showing estimated property values at various points in history. tags: - Valuation parameters: - $ref: '#/components/parameters/propertyId' - $ref: '#/components/parameters/accessLevel' - name: type in: query description: >- The type of AVM data to retrieve, such as estimate type or valuation model variant. schema: type: string responses: '200': description: Historical AVM valuation data content: application/json: schema: $ref: '#/components/schemas/AvmHistoricalDataResponse' /api/home/details/neighborhoodStats/statsInfo: get: operationId: getNeighborhoodStats summary: Get neighborhood statistics description: >- Retrieves statistical data about the neighborhood surrounding a property, including demographics, walkability, transit scores, school ratings, and nearby amenities information. tags: - Neighborhood parameters: - $ref: '#/components/parameters/propertyId' - $ref: '#/components/parameters/listingId' - $ref: '#/components/parameters/accessLevel' responses: '200': description: Neighborhood statistics data content: application/json: schema: $ref: '#/components/schemas/NeighborhoodStatsResponse' /api/home/details/commute/commuteInfo: get: operationId: getCommuteInfo summary: Get commute information description: >- Retrieves commute time and transportation information for a property, including estimated drive, transit, bike, and walk times to common destinations. tags: - Neighborhood parameters: - $ref: '#/components/parameters/propertyId' - $ref: '#/components/parameters/accessLevel' responses: '200': description: Commute information data content: application/json: schema: $ref: '#/components/schemas/CommuteInfoResponse' /api/region/{regionType}/{regionId}/{code}/trends: get: operationId: getRegionTrends summary: Get regional market trends description: >- Retrieves market trend data for a specific region, including median sale prices, homes sold, new listings, and days on market over time. tags: - Market Trends parameters: - name: regionType in: path required: true description: >- The type of region (e.g., neighborhood, zipcode, city, county). schema: type: string - name: regionId in: path required: true description: >- The unique identifier for the region. schema: type: integer - name: code in: path required: true description: >- The region code. schema: type: string responses: '200': description: Regional market trend data content: application/json: schema: $ref: '#/components/schemas/RegionTrendsResponse' /api/region/{regionType}/{regionId}/{code}/aggregate-trends: get: operationId: getRegionAggregateTrends summary: Get aggregated regional market trends description: >- Retrieves aggregated market trend data for a specific region, providing summarized statistics and trend indicators over configurable time periods. tags: - Market Trends parameters: - name: regionType in: path required: true description: >- The type of region (e.g., neighborhood, zipcode, city, county). schema: type: string - name: regionId in: path required: true description: >- The unique identifier for the region. schema: type: integer - name: code in: path required: true description: >- The region code. schema: type: string responses: '200': description: Aggregated regional market trend data content: application/json: schema: $ref: '#/components/schemas/RegionAggregateTrendsResponse' components: parameters: regionId: name: region_id in: query description: >- The unique identifier for a Redfin region. schema: type: integer regionType: name: region_type in: query description: >- The type of region to search. Values include 1 (neighborhood), 2 (ZIP code), 5 (county), 6 (city). schema: type: integer enum: - 1 - 2 - 5 - 6 uipt: name: uipt in: query description: >- Property type filter. Values include 1 (house), 2 (condo), 3 (townhouse), 4 (multi-family), 5 (land), 6 (other). Multiple values can be comma-separated. schema: type: string status: name: status in: query description: >- Listing status filter. Values include 1 (active), 130 (pending), 131 (active and pending). schema: type: integer enum: - 1 - 130 - 131 minPrice: name: min_price in: query description: >- Minimum listing price filter in USD. schema: type: integer maxPrice: name: max_price in: query description: >- Maximum listing price filter in USD. schema: type: integer numBeds: name: num_beds in: query description: >- Minimum number of bedrooms filter. schema: type: integer maxNumBeds: name: max_num_beds in: query description: >- Maximum number of bedrooms filter. schema: type: integer numBaths: name: num_baths in: query description: >- Minimum number of bathrooms filter. schema: type: integer maxNumBaths: name: max_num_baths in: query description: >- Maximum number of bathrooms filter. schema: type: integer minYearBuilt: name: min_year_built in: query description: >- Minimum year built filter. schema: type: integer maxYearBuilt: name: max_year_built in: query description: >- Maximum year built filter. schema: type: integer minListingApproxSize: name: min_listing_approx_size in: query description: >- Minimum approximate square footage filter. schema: type: integer maxListingApproxSize: name: max_listing_approx_size in: query description: >- Maximum approximate square footage filter. schema: type: integer minParcelSize: name: min_parcel_size in: query description: >- Minimum lot/parcel size filter. schema: type: integer maxParcelSize: name: max_parcel_size in: query description: >- Maximum lot/parcel size filter. schema: type: integer numHomes: name: num_homes in: query description: >- Maximum number of results to return per request. schema: type: integer pageNumber: name: page_number in: query description: >- Page number for paginated results. schema: type: integer propertyId: name: propertyId in: query required: true description: >- The unique Redfin property identifier. schema: type: integer listingId: name: listingId in: query description: >- The unique Redfin listing identifier. schema: type: integer accessLevel: name: accessLevel in: query description: >- The access level for the request, controlling the detail of data returned. Common value is 1. schema: type: integer default: 1 schemas: PropertySummary: type: object description: >- Summary information for a property listing. properties: propertyId: type: integer description: >- Unique Redfin property identifier. listingId: type: integer description: >- Unique Redfin listing identifier. mlsId: type: string description: >- MLS listing identifier. price: type: object description: >- Price information for the listing. properties: value: type: number description: >- Listing price in USD. address: $ref: '#/components/schemas/Address' beds: type: integer description: >- Number of bedrooms. baths: type: number description: >- Number of bathrooms. sqFt: type: object description: >- Square footage information. properties: value: type: integer description: >- Approximate living area in square feet. lotSize: type: object description: >- Lot size information. properties: value: type: integer description: >- Lot size in square feet. yearBuilt: type: object description: >- Year the property was built. properties: value: type: integer description: >- Year of construction. daysOnMarket: type: integer description: >- Number of days the property has been listed. propertyType: type: integer description: >- Property type code (1=house, 2=condo, 3=townhouse, 4=multi-family, 5=land, 6=other). listingType: type: string description: >- Type of listing (e.g., MLS, FSBO). url: type: string description: >- Relative URL path to the property listing on Redfin. latitude: type: number description: >- Property latitude coordinate. longitude: type: number description: >- Property longitude coordinate. Address: type: object description: >- Property address information. properties: streetAddress: type: string description: >- Street address of the property. city: type: string description: >- City name. state: type: string description: >- Two-letter state abbreviation. zip: type: string description: >- ZIP code. GisSearchResponse: type: object description: >- Response from a GIS-based property search. properties: resultCode: type: integer description: >- API result code indicating success or failure. errorMessage: type: string description: >- Error message if the request failed. payload: type: object description: >- Response payload containing search results. properties: homes: type: array description: >- List of property summaries matching the search criteria. items: $ref: '#/components/schemas/PropertySummary' totalResultCount: type: integer description: >- Total number of properties matching the search criteria. InitialInfoResponse: type: object description: >- Response from the initial info endpoint providing property identifiers. properties: resultCode: type: integer description: >- API result code indicating success or failure. payload: type: object description: >- Response payload containing property identifiers. properties: propertyId: type: integer description: >- Unique Redfin property identifier. listingId: type: integer description: >- Unique Redfin listing identifier. AboveTheFoldResponse: type: object description: >- Response containing primary property details shown above the fold. properties: resultCode: type: integer description: >- API result code indicating success or failure. payload: type: object description: >- Response payload containing property details. properties: addressInfo: $ref: '#/components/schemas/Address' price: type: number description: >- Current listing or sale price. listingStatus: type: string description: >- Current listing status. beds: type: integer description: >- Number of bedrooms. baths: type: number description: >- Number of bathrooms. sqFt: type: integer description: >- Approximate living area in square feet. BelowTheFoldResponse: type: object description: >- Response containing detailed MLS data and extended property information. properties: resultCode: type: integer description: >- API result code indicating success or failure. payload: type: object description: >- Response payload containing MLS and extended property data. properties: propertyHistoryInfo: type: object description: >- Property history events including sales, price changes, and listing status changes. May not always be available. properties: events: type: array description: >- List of historical property events. items: $ref: '#/components/schemas/PropertyHistoryEvent' publicRecordsInfo: type: object description: >- Public records data for the property. schoolsInfo: type: object description: >- Nearby schools information. similarHomesInfo: type: object description: >- Similar properties in the area. MainHouseInfoPanelResponse: type: object description: >- Response containing main house info panel data. properties: resultCode: type: integer description: >- API result code indicating success or failure. payload: type: object description: >- Response payload with structured property attributes. AvmHistoricalDataResponse: type: object description: >- Response containing historical AVM (Automated Valuation Model) data. properties: resultCode: type: integer description: >- API result code indicating success or failure. payload: type: object description: >- Response payload containing historical valuation data. properties: dataPoints: type: array description: >- Time-series valuation data points. items: type: object properties: timestamp: type: integer description: >- Unix timestamp for the data point. value: type: number description: >- Estimated property value at this point in time. NeighborhoodStatsResponse: type: object description: >- Response containing neighborhood statistical data. properties: resultCode: type: integer description: >- API result code indicating success or failure. payload: type: object description: >- Response payload with neighborhood statistics. CommuteInfoResponse: type: object description: >- Response containing commute and transportation information. properties: resultCode: type: integer description: >- API result code indicating success or failure. payload: type: object description: >- Response payload with commute time estimates. RegionTrendsResponse: type: object description: >- Response containing market trend data for a region. properties: resultCode: type: integer description: >- API result code indicating success or failure. payload: type: object description: >- Response payload with trend data. RegionAggregateTrendsResponse: type: object description: >- Response containing aggregated market trend data for a region. properties: resultCode: type: integer description: >- API result code indicating success or failure. payload: type: object description: >- Response payload with aggregated trend data. PropertyHistoryEvent: type: object description: >- A historical event in a property's listing or sale history. properties: eventDate: type: string description: >- Date of the event. eventType: type: string description: >- Type of event (e.g., Listed, Sold, PriceChange). price: type: number description: >- Price associated with the event. source: type: string description: >- Data source for the event record.