{
  "openapi": "3.0.1",
  "info": {
    "title": "Redfin Scraper",
    "description": "Scrape Redfin homes for sale, sold or for rent in any US city, ZIP, county or neighborhood: price, beds, baths, sqft, address, coordinates, days on market, MLS number, photo. Add price & tax history, broker, agent, schools. Export JSON/CSV/Excel, use the API, schedule it or connect n8n or Zapier.",
    "version": "0.1",
    "x-build-id": "l7gvlM2AeLVledtMT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lergassy~redfin-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lergassy-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/lergassy~redfin-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lergassy-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/lergassy~redfin-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lergassy-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",
        "properties": {
          "locations": {
            "title": "📍 Locations",
            "type": "array",
            "description": "Give this or <code>startUrls</code>. One place per line, typed the way you would type it in Redfin's search box: a city with state (<code>Austin, TX</code>), a ZIP code (<code>78704</code>), a county (<code>Travis County, TX</code>), a neighborhood (<code>Travis Heights, Austin</code>) or a street address for one home. All places are searched in one run.",
            "items": {
              "type": "string"
            }
          },
          "listingType": {
            "title": "🏠 What to search",
            "enum": [
              "forSale",
              "sold",
              "forRent"
            ],
            "type": "string",
            "description": "Homes for sale (active and coming soon), recently sold homes, or rentals (apartments, houses, condos, townhouses for rent).",
            "default": "forSale"
          },
          "soldWithinDays": {
            "title": "Sold in the last N days",
            "minimum": 1,
            "maximum": 1825,
            "type": "integer",
            "description": "Only with <b>Sold</b>: how far back to look. Redfin's own choices are 7, 30, 90, 180, 365, 730, 1095 and 1825 days; any number from 1 to 1825 works.",
            "default": 90
          },
          "maxItems": {
            "title": "💯 Max homes in total",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many homes across all locations. With several locations the limit is shared fairly: each gets an equal part, and what a small place cannot fill goes to the others.",
            "default": 1000
          },
          "includeDetails": {
            "title": "📑 Add home details ($)",
            "type": "boolean",
            "description": "Paid add-on, charged per home that gets details: price history (listed, price changes, sold), property tax history with assessed values, listing broker and agent with phone numbers, schools serving the home with GreatSchools ratings, parcel number (APN), county, Redfin Estimate and the full feature list (parking, heating, interior, exterior…). For homes for sale and sold; rentals already carry their phone and unit ranges.",
            "default": false
          },
          "minPrice": {
            "title": "Min price ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Only homes priced at least this much in US dollars (monthly rent for rentals, sale price for sold homes)."
          },
          "maxPrice": {
            "title": "Max price ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Only homes priced at most this much in US dollars (monthly rent for rentals)."
          },
          "minBeds": {
            "title": "Min bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "At least this many bedrooms."
          },
          "maxBeds": {
            "title": "Max bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "At most this many bedrooms."
          },
          "minBaths": {
            "title": "Min bathrooms",
            "minimum": 0,
            "type": "number",
            "description": "At least this many bathrooms (1, 1.5, 2, 3…)."
          },
          "minSqft": {
            "title": "Min square feet",
            "minimum": 0,
            "type": "integer",
            "description": "At least this much living area, in square feet."
          },
          "maxSqft": {
            "title": "Max square feet",
            "minimum": 0,
            "type": "integer",
            "description": "At most this much living area, in square feet."
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Only these kinds of homes. Leave empty for all. For rentals Redfin knows house, condo, townhouse and apartment.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "condo",
                "townhouse",
                "multiFamily",
                "apartment",
                "land",
                "manufactured",
                "coop",
                "other"
              ],
              "enumTitles": [
                "House",
                "Condo",
                "Townhouse",
                "Multi-family",
                "Apartment (rentals)",
                "Land",
                "Manufactured",
                "Co-op",
                "Other"
              ]
            }
          },
          "minYearBuilt": {
            "title": "Built in or after",
            "minimum": 1700,
            "maximum": 2100,
            "type": "integer",
            "description": "Only homes built in this year or later (for sale and sold)."
          },
          "maxYearBuilt": {
            "title": "Built in or before",
            "minimum": 1700,
            "maximum": 2100,
            "type": "integer",
            "description": "Only homes built in this year or earlier (for sale and sold)."
          },
          "minLotSize": {
            "title": "Min lot size (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "Only homes on a lot at least this big, in square feet (1 acre = 43,560 sq ft). For sale and sold."
          },
          "includeComingSoon": {
            "title": "Include \"coming soon\" homes",
            "type": "boolean",
            "description": "For sale only: also return homes marked Coming Soon (not yet open for showings), as redfin.com does by default. Switch off for active listings only.",
            "default": true
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "recommended",
              "newest",
              "priceAsc",
              "priceDesc"
            ],
            "type": "string",
            "description": "Order in which Redfin returns homes — matters when you take fewer than all of them.",
            "default": "recommended"
          },
          "startUrls": {
            "title": "🔗 Redfin URLs",
            "type": "array",
            "description": "Give this or <code>locations</code>. Paste Redfin pages exactly as you set them up in the browser: a city, ZIP code, county or neighborhood search with its filters (<code>https://www.redfin.com/city/30818/TX/Austin/filter/min-price=300k,max-price=600k,min-beds=3</code>), a sold search (<code>…/filter/include=sold-3mo</code>), rentals (<code>…/apartments-for-rent</code>) or single home pages (<code>…/home/31982122</code>). Filters in the address win over the fields above.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "onlyNewRowsStore": {
            "title": "🔁 Only new homes — memory name",
            "pattern": "^[A-Za-z0-9-]{0,63}$",
            "type": "string",
            "description": "Give this run a name — <code>my-austin-watch</code> — and the Actor remembers every listing it delivered under that name. Every later run with the same name writes and charges <b>only listings you have not received before</b> (a relisted home counts as new). Schedule the Actor daily to get a feed of new listings or new sales. Leave empty to get everything found, every time."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed: the Actor reaches Redfin directly and switches to a residential proxy, then to an unblocker, by itself only for requests that get blocked. Set your own proxy only if you must, then it is used for every request."
          },
          "includeRunSummary": {
            "title": "🧾 Add a free summary row at the end of the run",
            "type": "boolean",
            "description": "One extra free row at the end with the run's totals: rows delivered, free rows, what was charged and how much in US dollars. It carries type \"notice\", so a filter on the data rows skips it. Switch off if your pipeline cannot tolerate an extra row.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}