Skip to main content

A Python wrapper around the unofficial Redfin API.

Project description

redfin

A Python wrapper around the unofficial Redfin API.

PyPI package name: redfin (unchanged from the original reteps/redfin).

Installation

pip install redfin

Or install directly from GitHub (latest fixes):

</code></pre>
<h2>Usage</h2>
<pre lang="python"><code>from redfin import Redfin

client = Redfin()

response = client.search('1600 Amphitheatre Pkwy, Mountain View, CA')
url = response['payload']['exactMatch']['url']

initial_info = client.initial_info(url)
property_id = initial_info['payload']['propertyId']

# Get estimated value
avm = client.avm_details(property_id, "")
predicted_value = avm['payload']['predictedValue']
print(f"Estimated value: {predicted_value}")

# Get neighborhood walk/bike/transit scores
stats = client.neighborhood_stats(property_id)
walk_score = stats['payload']['walkScoreInfo']['walkScoreData']['walkScore']['value']
print(f"Walk score: {walk_score}")

What's Fixed

403 Errors (issues #19, #21)

The original library sent user-agent: redfin which Redfin's CDN now blocks with a 403 response. This fork uses a real browser User-Agent by default:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

You can override it:

client = Redfin(user_agent="MyApp/1.0 (contact@example.com)")

Rate Limiting (issue #18)

Add a delay between requests to avoid hitting Redfin's rate limits:

client = Redfin(request_delay=1.0)  # 1 second between requests

The client also automatically handles 429 responses by sleeping the Retry-After header duration and retrying once.

New Methods

neighborhood_stats(property_id)

Returns neighborhood walk score, bike score, transit score, and full address info.

stats = client.neighborhood_stats(property_id)
payload = stats['payload']
walk_score = payload['walkScoreInfo']['walkScoreData']['walkScore']['value']
bike_score = payload['walkScoreInfo']['walkScoreData']['bikeScore']['value']
transit_score = payload['walkScoreInfo']['walkScoreData']['transitScore']['value']
city = payload['addressInfo']['city']
state = payload['addressInfo']['state']

Notes on above_the_fold and info_panel

These methods still exist in the library but may be blocked by Redfin's CDN for some endpoints (returning 403 or incorrect data). They are kept for backward compatibility. Use neighborhood_stats instead for address and scores data.

All Methods

URL-based

  • initial_info(url)
  • page_tags(url)
  • primary_region(url)
  • search(query)

Property ID-based

  • avm_details(property_id, listing_id) ✅ working
  • neighborhood_stats(property_id) ✅ working (new)
  • below_the_fold(property_id)
  • hood_photos(property_id)
  • more_resources(property_id)
  • page_header(property_id)
  • property_comments(property_id)
  • building_details_page(property_id)
  • owner_estimate(property_id)
  • claimed_home_seller_data(property_id)
  • cost_of_home_ownership(property_id)
  • above_the_fold(property_id, listing_id) ⚠️ may be blocked by CDN
  • info_panel(property_id, listing_id) ⚠️ may be blocked by CDN
  • similar_listings(property_id, listing_id)
  • similar_sold(property_id, listing_id)
  • nearby_homes(property_id, listing_id)
  • avm_historical(property_id, listing_id)
  • descriptive_paragraph(property_id, listing_id)
  • tour_insights(property_id, listing_id)
  • stats(property_id, listing_id, region_id)

Listing ID-based

  • floor_plans(listing_id)
  • tour_list_date_picker(listing_id)

Table ID-based

  • shared_region(table_id)

License

MIT — see LICENSE.txt

Original library by Peter Stenger.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

redfin-0.2.0.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

redfin-0.2.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file redfin-0.2.0.tar.gz.

File metadata

  • Download URL: redfin-0.2.0.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for redfin-0.2.0.tar.gz
Algorithm Hash digest
SHA256 33943c5fc7e0d3255df8c2502fd00976227efcb3540613d37246f0f1c6976ba1
MD5 40fc46e5570d306dfd129b1090b86179
BLAKE2b-256 5e4efa40dad02f23a95896d0c90072bb4426f6e4272af671da34e95564a8d735

See more details on using hashes here.

Provenance

The following attestation bundles were made for redfin-0.2.0.tar.gz:

Publisher: publish.yml on reteps/redfin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file redfin-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: redfin-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for redfin-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 351e4cee1824b08d3c52b6e1aceab4a6c1a7e4eee4e461bc434ffc98ebde42bc
MD5 739914793109f42f405fe5488f30cb25
BLAKE2b-256 9451d7e594a6ee1d979b5c695dfc8f01e12913cd98f7b8d29a4840e6412f5521

See more details on using hashes here.

Provenance

The following attestation bundles were made for redfin-0.2.0-py3-none-any.whl:

Publisher: publish.yml on reteps/redfin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page