> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hasdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Redfin Listing Scraper API

The Redfin Listing Scraper API allows you to retrieve real estate listings from Redfin based on various search parameters.

<Info>
  HasData is an independent service and is not affiliated with, endorsed by, or sponsored by Redfin. Redfin is a trademark of its respective owner. This API works with publicly available data only.
</Info>

## Get Your API Key

Sign in at [hasdata.com](https://app.hasdata.com/sign-in), go to your account settings, and copy your API key.
All requests must include your key in the `x-api-key` header.

## Request Cost and API Credits

Each request to the Redfin Listing Scraper API consumes **API Credits** from your account balance.

* **Cost per request:** 5 API Credits
* Credits are deducted only for successful requests.
* Your total available credits depend on your active plan.

<Tip>You can use your credits across all HasData APIs. The same credit balance is shared platform-wide.</Tip>
<Warning>**Unused credits do not roll over.** Any remaining credits expire at the end of the current billing period.</Warning>

To monitor your credit usage and remaining balance, sign in to your account dashboard at [app.hasdata.com](https://app.hasdata.com/sign-in).

## Make Your First Request

<CodeGroup>
  ```bash cURL theme={null}
  curl --request GET -G \
    --url 'https://api.hasdata.com/scrape/redfin/listing' \
    --data-urlencode 'keyword=33321' \
    --data-urlencode 'type=forSale' \
    --header 'Content-Type: application/json' \
    --header 'x-api-key: <your-api-key>'
  ```

  ```bash HasData CLI theme={null}
  hasdata redfin-listing \
    --keyword 33321 \
    --type forSale
  ```

  ```javascript Node.js theme={null}
  const axios = require('axios').default;

  const options = {
    method: 'GET',
    url: 'https://api.hasdata.com/scrape/redfin/listing',
    params: {keyword: '33321', type: 'forSale'},
    headers: {'Content-Type': 'application/json', 'x-api-key': '<your-api-key>'}
  };

  try {
    const { data } = await axios.request(options);
    console.log(data);
  } catch (error) {
    console.error(error);
  }
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.hasdata.com/scrape/redfin/listing"

  querystring = {"keyword":"33321","type":"forSale"}

  headers = {
      "Content-Type": "application/json",
      "x-api-key": "<your-api-key>"
  }

  response = requests.get(url, headers=headers, params=querystring)

  print(response.json())
  ```

  ```php PHP theme={null}
  <?php

  $params = [
      "keyword" => "33321",
      "type" => "forSale",
  ];

  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.hasdata.com/scrape/redfin/listing?" . http_build_query($params),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
      "Content-Type: application/json",
      "x-api-key: <your-api-key>",
    ],
  ]);

  $response = curl_exec($curl);
  curl_close($curl);

  echo $response;
  ```

  ```java Java theme={null}
  OkHttpClient client = new OkHttpClient();

  HttpUrl url = HttpUrl.parse("https://api.hasdata.com/scrape/redfin/listing")
    .newBuilder()
    .addQueryParameter("keyword", "33321")
    .addQueryParameter("type", "forSale")
    .build();

  Request request = new Request.Builder()
    .url(url)
    .get()
    .addHeader("Content-Type", "application/json")
    .addHeader("x-api-key", "<your-api-key>")
    .build();

  Response response = client.newCall(request).execute();
  ```

  ```csharp C# theme={null}
  using System.Net.Http;
  using System.Web;

  var client = new HttpClient();

  var query = HttpUtility.ParseQueryString(string.Empty);
  query["keyword"] = "33321";
  query["type"] = "forSale";

  var url = $"https://api.hasdata.com/scrape/redfin/listing?{query}";

  var request = new HttpRequestMessage(new HttpMethod("GET"), url);
  request.Headers.Add("x-api-key", "<your-api-key>");

  using var response = await client.SendAsync(request);
  response.EnsureSuccessStatusCode();
  var content = await response.Content.ReadAsStringAsync();
  Console.WriteLine(content);
  ```

  ```ruby Ruby theme={null}
  require 'net/http'
  require 'uri'

  uri = URI("https://api.hasdata.com/scrape/redfin/listing")
  params = {
    "keyword" => "33321",
    "type" => "forSale",
  }
  uri.query = URI.encode_www_form(params)

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = Net::HTTP::Get.new(uri)
  request["Content-Type"] = 'application/json'
  request["x-api-key"] = '<your-api-key>'

  response = http.request(request)
  puts response.read_body
  ```

  ```rust Rust theme={null}
  use reqwest::blocking::Client;

  fn main() -> Result<(), Box<dyn std::error::Error>> {
      let client = Client::new();
      let res = client
          .get("https://api.hasdata.com/scrape/redfin/listing")
          .query(&[("keyword", "33321")])
          .query(&[("type", "forSale")])
          .header("Content-Type", "application/json")
          .header("x-api-key", "<your-api-key>")
          .send()?
          .text()?;
      println!("{}", res);
      Ok(())
  }
  ```

  ```go Go theme={null}
  package main

  import (
  	"fmt"
  	"io"
  	"net/http"
  	"net/url"
  )

  func main() {
  	params := url.Values{}
  	params.Set("keyword", "33321")
  	params.Set("type", "forSale")

  	u := "https://api.hasdata.com/scrape/redfin/listing?" + params.Encode()

  	req, _ := http.NewRequest("GET", u, nil)
  	req.Header.Add("Content-Type", "application/json")
  	req.Header.Add("x-api-key", "<your-api-key>")

  	res, _ := http.DefaultClient.Do(req)
  	defer res.Body.Close()

  	body, _ := io.ReadAll(res.Body)
  	fmt.Println(string(body))
  }
  ```
</CodeGroup>

## API Parameters

| Parameter                            | Default Value | Required | Description                                                                                 |
| ------------------------------------ | ------------- | -------- | ------------------------------------------------------------------------------------------- |
| `keyword`                            | 33321         | Yes      | The zipcode used to search for listings.                                                    |
| `type`                               | forSale       | Yes      | The type of listing.                                                                        |
| `sort`                               | -             | No       | The sorting option for the search results.                                                  |
| `price[min]`                         | -             | No       | The minimum price of the listing.                                                           |
| `price[max]`                         | -             | No       | The maximum price of the listing.                                                           |
| `monthlyPayment[min]`                | -             | No       | The minimum monthly payment.                                                                |
| `monthlyPayment[max]`                | -             | No       | The maximum monthly payment.                                                                |
| `monthlyPayment[interestRate]`       | -             | No       | The mortgage interest rate (percent) used to calculate the monthly payment.                 |
| `monthlyPayment[insuranceRate]`      | -             | No       | The home insurance rate (percent) used to calculate the monthly payment.                    |
| `monthlyPayment[downPaymentPercent]` | -             | No       | The down payment as a percentage of the home price.                                         |
| `monthlyPayment[downPaymentAmount]`  | -             | No       | The down payment as an absolute amount.                                                     |
| `monthlyPayment[mortgageTerm]`       | -             | No       | The mortgage term used to calculate the monthly payment.                                    |
| `cost[hoa]`                          | -             | No       | The maximum monthly Homeowners Association (HOA) fee.                                       |
| `cost[pricePerSqft][min]`            | -             | No       | The minimum price per square foot.                                                          |
| `cost[pricePerSqft][max]`            | -             | No       | The maximum price per square foot.                                                          |
| `cost[excludeLandLeases]`            | -             | No       | If set to true, listings with land leases will be excluded.                                 |
| `cost[maxPropertyTaxPerYear]`        | -             | No       | The maximum property tax per year.                                                          |
| `cost[acceptedFinancing]`            | -             | No       | The accepted financing type.                                                                |
| `cost[priceReduced]`                 | -             | No       | Filter listings by when the price was reduced.                                              |
| `homeTypes[]`                        | -             | No       | An array of home types to filter the listings. Allowed values depend on the listing `type`. |
| `beds[min]`                          | -             | No       | The minimum number of bedrooms.                                                             |
| `beds[max]`                          | -             | No       | The maximum number of bedrooms.                                                             |
| `baths`                              | -             | No       | The minimum number of bathrooms.                                                            |
| `forSaleSquareFeet[min]`             | -             | No       | The minimum square footage for for-sale listings.                                           |
| `forSaleSquareFeet[max]`             | -             | No       | The maximum square footage for for-sale listings.                                           |
| `forRentSquareFootage[min]`          | -             | No       | The minimum square footage for for-rent listings.                                           |
| `forRentSquareFootage[max]`          | -             | No       | The maximum square footage for for-rent listings.                                           |
| `lotSize[min]`                       | -             | No       | The minimum lot size.                                                                       |
| `lotSize[max]`                       | -             | No       | The maximum lot size.                                                                       |
| `yearBuilt[min]`                     | -             | No       | The minimum year the property was built.                                                    |
| `yearBuilt[max]`                     | -             | No       | The maximum year the property was built.                                                    |
| `stories[min]`                       | -             | No       | The minimum number of stories.                                                              |
| `stories[max]`                       | -             | No       | The maximum number of stories.                                                              |
| `listingType[category][]`            | -             | No       | An array of listing categories.                                                             |
| `listingType[excludeShortSales]`     | -             | No       | If set to true, short sales will be excluded.                                               |
| `listingType[redfinListingsOnly]`    | -             | No       | If set to true, only Redfin-listed properties will be included.                             |
| `statusOptions[]`                    | -             | No       | An array of listing statuses.                                                               |
| `onlyWithDealOrPromotion`            | -             | No       | If set to true, only listings with a deal or promotion will be included.                    |
| `exclude55PlusCommunities`           | -             | No       | If set to true, 55+ communities will be excluded.                                           |
| `timeOnRedfin`                       | -             | No       | How long the listing has been on Redfin.                                                    |
| `soldWithinOption`                   | -             | No       | Filter sold listings by how recently they were sold.                                        |
| `moveInDate`                         | -             | No       | The desired move-in date in MM/DD/YYYY format.                                              |
| `openHouseAndTour[openHouse]`        | -             | No       | Filter listings with an open house.                                                         |
| `openHouseAndTour[videoTour]`        | -             | No       | If set to true, only listings with a video tour will be included.                           |
| `homeFeatures[options][]`            | -             | No       | An array of home feature flags to filter the listings.                                      |
| `homeFeatures[garageSpotsMin]`       | -             | No       | The minimum number of garage spots.                                                         |
| `homeFeatures[poolType]`             | -             | No       | The type of pool.                                                                           |
| `homeFeatures[basement]`             | -             | No       | The basement type.                                                                          |
| `homeFeatures[keywordSearch]`        | -             | No       | A free-text keyword search applied to listing descriptions.                                 |
| `rentalAmenities[]`                  | -             | No       | An array of rental amenities to filter the listings.                                        |
| `rentalOtherTerms[]`                 | -             | No       | An array of additional rental terms.                                                        |
| `pets[]`                             | -             | No       | An array of pet types allowed.                                                              |
| `schools[greatSchoolRating]`         | -             | No       | The minimum GreatSchools rating (1-10).                                                     |
| `schools[schoolType][]`              | -             | No       | An array of school types.                                                                   |
| `schools[includeUnratedSchools]`     | -             | No       | If set to true, unrated schools will be included.                                           |
| `transportScores[walkScore]`         | -             | No       | The minimum walk score (1-100).                                                             |
| `transportScores[transitScore]`      | -             | No       | The minimum transit score (1-100).                                                          |
| `transportScores[bikeScore]`         | -             | No       | The minimum bike score (1-100).                                                             |
| `page`                               | -             | No       | The page number of the results to retrieve.                                                 |
