Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pulling Zillow Rent Data from Zillow API

Tags:

python

api

zillow

I am playing around with the Zillow API, but I am having trouble retrieving the rent data. Currently I am using a Python Zillow wrapper, but I am not sure if it works for pulling the rent data.

This is the help page I am using for the Zillow API: https://www.zillow.com/howto/api/GetSearchResults.htm

import pyzillow
from pyzillow.pyzillow import ZillowWrapper, GetDeepSearchResults
import pandas as pd

house = pd.read_excel('Housing_Output.xlsx')


### Login to Zillow API
address = ['123 Test Street City, State Abbreviation'] # Fill this in with an address
zip_code = ['zip code'] # fill this in with a zip code

zillow_data = ZillowWrapper(API KEY)
deep_search_response = zillow_data.get_deep_search_results(address, zip_code)
result = GetDeepSearchResults(deep_search_response)

# These API calls work, but I am not sure how to retrieve the rent data
print(result.zestimate_amount)
print(result.tax_value)

ADDING ADDITIONAL INFO:

Chapter 2 talks how to pull rent data by creating a XML function called zillowProperty. My skills going into XML aren't great, but I think I need to either:

a) import some xml package to help read it b) save the code as an XML file and use the open function to read the file

https://www.amherst.edu/system/files/media/Comprehensive_Evaluation_-_Ningyue_Christina_Wang.pdf

I am trying to provide the code in here, but it won't let me break to the next line for some reason.

like image 430
beeeZeee Avatar asked Jul 11 '19 16:07

beeeZeee


People also ask

Can you extract data from Zillow?

It's easy to export lead data from Zillow to Excel with a powerful data scraping integration like Parserr. Real estate data from Zillow, your company's real estate website, and other listing sites like Redfin and Trulia can all be captured and extracted into one easy-to-use Excel spreadsheet.

Does Zillow have a free API?

The Zillow API Network is a free service.

Is Zillow API still available?

So the main topic today is Zillow's API will be deprecated on September 30th which we assume thousands of businesses are utilizing today and will no longer have access to the real estate information they used to access for free.


1 Answers

We can see that rent is not a field one can get using the pyzillow package, by looking into the attributes of your result by running dir(result), as well as the code here: Pyzillow source code.

However, thanks to the beauty of open source, you can edit the source code of this package and get the functionality you are looking for. Here is how:

First, locate where the code sits in your hard drive. Import pyzillow, and run:

pyzillow?

The File field shows this for me:

c:\programdata\anaconda3\lib\site-packages\pyzillow\__init__.py

Hence go to c:\programdata\anaconda3\lib\site-packages\pyzillow (or whatever it shows for you) and open the pyzillow.py file with a text editor.

Now we need to do two changes.

One: Inside the get_deep_search_results function, you'll see params. We need to edit that to turn the rentzestimate feature on. So change that function to:

def get_deep_search_results(self, address, zipcode):
    """
    GetDeepSearchResults API
    """

    url = 'http://www.zillow.com/webservice/GetDeepSearchResults.htm'
    params = {
        'address': address,
        'citystatezip': zipcode,
        'zws-id': self.api_key,
        'rentzestimate': True # This is the only line we add
    }
    return self.get_data(url, params)

Two: Go to class GetDeepSearchResults(ZillowResults), and add the following into the attribute_mapping dictionary:

'rentzestimate_amount': 'result/rentzestimate/amount'

Voila! The customized&updated Python package now returns the Rent Zestimate! Let's try:

from pyzillow.pyzillow import ZillowWrapper, GetDeepSearchResults

address = ['11 Avenue B, Johnson City, NY']
zip_code = ['13790']

zillow_data = ZillowWrapper('X1-ZWz1835knufc3v_38l6u')
deep_search_response = zillow_data.get_deep_search_results(address, zip_code)
result = GetDeepSearchResults(deep_search_response)

print(result.rentzestimate_amount)

Which correctly returns the Rent Zestimate of $1200, which can be validated at the Zillow page of that address.

like image 121
FatihAkici Avatar answered Jan 03 '23 07:01

FatihAkici