How to Get Zillow FSBO Properties with Python [2023]

Welcome to my latest video! In this tutorial, I will demonstrate two efficient methods to obtain Zillow for sale by owner listings. Whether you have coding skills or not, you'll be able to easily download the data and access details such as the owner's phone number. With my step-by-step guidance, you'll be able to expand your real estate leads and boost your business. Don't forget to like and subscribe for more valuable insights!

Video Block
Double-click here to add a video by URL or embed code. Learn more

Ariel Herrera 0:00

across the US real estate markets have been shifting from a seller's market to a more balanced and even in some cases a buyers market. This is making more home owners consider selling their property on their own to keep more profit in the deal we call the seller's FSBO for sale by owner properties are a valuable leads list. Agents investors and wholesalers can strategically market to these owners. But how do we find the leads? In this video I will show you two ways to get Zillow for sale by owner listings. With code and without code, we will be able to download the data and even get details like owner phone number. My name is Ariel Herrera, your fellow data scientists with the analytics area channel where we bridge the gap between real estate and technology. I love bringing easy to use data driven solutions that you can apply to your business. Please like this video so that we can reach a wider audience and subscribe to this channel so you don't miss out on the latest content. All right, let's get started.

To start, let's explore what for sale by owner listings are. So overall for sale by owner FSBO means properties that are being sold directly by the owner without the help of an agent, the owner and takes responsibility of the marketing showing negotiating and completion of the transaction. So why would an owner want to do this to begin with? Well, when they usually sell their homes, they have to pay between five to 6% of the sales price to the agents. So for sale by owner can be really appealing to homeowners because they can avoid paying commission and receive more of the profits. However, FSBO sounds very nice, but it's actually challenging and time consuming. owners have to handle everything about the sale, including advertising, showing the property negotiating and completing all the paperwork. Because of all the work behind it most for sale by owner leads actually don't get completed, they either just take them off the listings or they work with an agent at the very end or a wholesaler or an investor to acquire the property. So why market to FSBO leads. So for agents, this can be a great approach because many sellers are not aware of the legal requirements and complexities of selling a home. So you can market to these owners and say, Hey, I've seen that your property has been in the market for 30 plus days and you haven't got that much traction, Can I at least show you what the value would be of having an agent as well, you could find potential buyers. So if the FSBO seller is unable to find a buyer on their own, they may turn for an agent for assistance. So you'll be able to not only show your buyers on market properties for off market as well, for an investor you could possibly negotiate to make a better deal and have larger profit. Since typically the FSBO properties, there's no commission to an agent, as well, you could build relationships with these owners. Maybe one of the owners is an investor themselves and they actually have five other properties are considering to also sell, it's good to have them in your network. Then for wholesalers FSBO could be a great leads list to serve as the middleman. So wholesalers can help the seller find a buyer quickly and easily then take a cut of the sale price. And where do we actually find this for sale by owner data. So let's walk through an example. Now. I'm on Zillow. And if I type in my particular city, so let's go to Tampa, Florida. Upon search, I see all the listings. Now if we want to filter on for sale by owner, we can select by for sale, drop down and remove by agent. I'm also going to remove the rest of these categories as well just to only have by owner and click Apply. Now when I look to the right, we have no matching results. But if we go to the other listings, we have no agent listings. So let's go to other we can now see the for sale by owner. So I'm going to look just a single family homes here and only have houses selected as well. Just to narrow down a little bit, I'm going to only have properties that are no more than $1 million. So we have in total 20 other listings that are for sale by owner. If I click into one of them, this description was provided by the owner themselves. And we could see their information here as well so we can directly contact them if we were an investor and wanted to maybe work on a deal with them. If we wanted to know their name, for example, we could go on county records and be able to pull the current property owner. Now the first way you may be thinking of how we actually get this data and analyze it, is we came to the website. And maybe we put all the data so the address, bedrooms, bathrooms, square feet into an excel sheet, and then analyze what the estimated value is and what an offer can be. Now, that would be super tedious. And imagine if we were doing this across markets, that wouldn't be ideal. So we would want to use web scraping or to get information automatically from a public web page. However, web scraping does take some upfront work. If you were a coder, you'd have to program out web scraping. Or you would purchase outside services, such as someone from Fiverr, or maybe even using a great tool like browse API. However, in this use case, we're going to skip over web scraping and actually utilize an API that already has done all the scraping for us and provides the data in a structured format. The API we're using is Zillow scraper by scrape peak, three peak has already created a bot that retrieves data for Zillow, so we could utilize it in order to get information that we need. And in the description, they state. That Zillow scraper has US and Canada real estate data, you could search for millions of for sale and rental listings by state address, neighborhood city or zip code. And the best part is that you can get started for free. So if you're new to scrape peak, you're going to get started by clicking try for free, you're going to quickly sign up. And then once you come to your dashboard, you will see that you have the Zillow scraper here, you can come over to plans. And this API provides 1000 credits for free per month under the starter plan. That translates to 100 Free searches. Let's get started. Select try for free for starter. And depending on your future use cases, you may want to go up to different plans. Once you select that starter, come to account settings. Account Settings will have your information, the current plan you're under how many plan credits you have, how many have been used, and then your API key. Think of this almost as like a password that allows us to be able to get this information that's unique to us. So make sure you copy your API key as we're going to reference it later. The first of the two approaches to get for sale by owner listings is with no code. So I've actually developed a quick streamlet app that allows us to query information from the API without needing to write any code. So in this case, I've already have my list, which is this list here. I'm going to copy the URL of top because I want to get all 20 listings into a spreadsheet so that I can then analyze them. So I'm going to copy this and come to the stream labs app. All of the links relevant are below including how to get the API as well as how to be able to use this tool, which is for free. So the first step you would take is signing up, enter in your information, then click sign up. Next, come to listing search. Here, you can enter in the URL, then take your API key that you've previously copied from your dashboard. Once you paste your API key, your last step is just to enter in your email. Click Run, the data is now being retrieved. Once complete, we could see our unique search ID as well as a number of properties that match our search. It says 20 here, and when we go back to our search, we could see that we did have 20 other listings, it's now back into the app, we can go to the analytics tab. And to view our results, let's enter in our email. And then click Go. Once we select our file, we could see some quick stats as includes all of our properties, average sale price, average estimate value, which is his estimate, and average rent value, we could look at the distribution as well all these properties. So we see that at the higher end we have one property for sale by owner that's 970k on the lower end to 65k. If most of them sitting between 330 5k and 580 7k. We can also view the estimated value as estimate. And as we could see the Zestimate is lower than the average sale price. And this automatically makes me think that these owners are pricing their properties too high. They'll likely sit on the market longer and will likely need an agent or An investor A wholesaler to make the deal. Then if we go all the way down, we could view all the properties in the map. And lastly, we can download it will have information including property address, latitude, longitude, sale, price, bedrooms, bathrooms, square footage, lot size, and more. Great. So at this stage, if you're a non coder, you have your solution to find for sale by owner properties for free and your market. The steps just to cover it once more, we were signing up for scrape peak API, which is a one time occurrence, we get our API key,

we bring it into this app. We then search by taking the URL from Zillow, pasting it into listing search, then we come to analytics. And we could download this information. We also have our data store for 14 days. So if we need to look back at previous searches, we can. But this begs the question, what if we want to look at for sale by owner properties for many markets, maybe we want to look at all of the major cities in Florida or Texas or California? Well, it's going to be repetitive to have to actually copy and paste the URL each and every time. Or maybe we want to automate this process in a way so we can have it scheduled say, every week or every day to see when new for sale by owner listings come about. This is where we want to use programming. And specifically, I'm going to show you in Python, how to get this data and how to extract phone number for our use case we're going to use Google collab. Google collab is a free to use tool provided by Google that allows us to code in Python with without having to have it installed on our machine. So that's a quick way to get started. If you're brand new to Python, I highly suggest for you to check out the introduction to Python course and series that I have a for free on YouTube. And then if you want to take your skills and level up to be able to know web scraping more API's market data, then I suggest to take the introduction to real estate Data Analytics course. Great. So we have this open and the link is below. Next, we want to import our libraries that we're going to be referencing, as well as functions which I'll detail these in a moment, then you're going to want to bring in your API key one of two ways. I personally have a CSV file, where I have all of my API key saved. So I'm basically reading in my CSV file from my Google Drive location. Here, I read it with pandas, and then I specify scrape peak, go get the key. So the column that has the key, I locate it, and there is my API key. Now, if you want to just quickly get through this, you can disregard these two cells and just create a variable within strings that has your API key. So now skipping down to the bottom, we're going to specifically get for sale by owner properties. So going back to my search, I'm going to first copy my URL. And I'm setting my FSBO underscore URL variable as the string of my full URL. So let's click Play to run this. And now we want to get all the listings, we want to get all 20 of these listings. To analyze. In order to do so we're going to use the get listings function. So if we go back up top to our functions, I'll quickly walk through what this function does. So what we do is we point towards the endpoint listings. And if we go over to scrape peaks documentation, we could see here that listings is one of the endpoints, we could use this to get all the properties on a particular page. It requires two different inputs, your API key and the URL you're trying to retrieve data from. Therefore, in our function, we're passing those two variables in API key is our API key and our URLs or listing URL, we then make a GET request to go to this endpoint, and get the data that is specifically for our list in URL. So let's jump back down to the bottom of our code, where we can now call this function. So here, I'm passing an API key FSBO URL, and I'm going to get a response. So I'll press play. Once the request is complete, we can look at the data. So let's first transform our response into a JSON object. We want to retrieve the data and specifically let's first just get the total result count. So let's press play here. And we have 20 prop Arrays, now of working with JSON objects or dictionaries is brand new to you, I highly suggest again to go through the introduction to Python course for free, as we detail how to actually extract information from JSON objects and dictionaries. Now, to view this data, we're going to index our JSON object and get search results map results, we are then transforming this JSON object into a panda's data frame, using JSON underscore normalized method. If we press play here, we could see that we have in total 20 rows with 67 columns, we could see we have columns like z PID price status, which is for sale, all and just say, for sale by owner. And we get more information, including Zestimate. And rent estimate as well, at this stage as investors, we may think, okay, great. I've analyzed I have this data. Now I've maybe added some metrics on top of this. And I want to reach out to some of these property owners, how do we do so. So as we saw previously, if we click back into this property, we could see towards the bottom here, we have property owner and their phone number. Now because it is on this page, this is the property details which we covered in a previous video. If we go back to scrape peaks documentation, we could see that they have an endpoint for property where we get property details, all we have to pass through is our API key, and xe PID. So going to the property, I can get CPI D up top from the URL. So I'm going to copy this and paste it into our notebook, we have our listing. So let's press play here. Now we're getting property detail, we have a function that's pretty similar and that we point towards an endpoint, or passing an API key and this case a little bit different sort of the URL or passing in the XEP ID. Once we do this, we're going to get our response back as a JSON object, we will then transform this JSON object into a data frame. So we could once more read it as rows and columns. When we get the property detail, we see we have 607 columns, there's so much information on a property on the property details page, that we're able to get all of it with the API. Scrolling to the right, I could see that there's a series of columns that start with contact form render data. And this gives us the same exact phone number information that we see here. So here we see 813-400-7777. And if we go back here, we could see 813 400 on the right side, and then the middle 7777. Now if we want to string this together, we could do so as well, we're going to use a lambda function in order to string together these three columns. And I'm stringing them with a dash in between, and calling this a new column called phone number. I'm also creating a second new column called full address, which will take street address, city, state and zip code. Lastly, printing out for the property address which we're going to enter here, what the phone number is. So let's run this. And now we could see the phone number for property address and the addresses there is 813-400-7777. Awesome, so we've programmatically been able to get all 20 For Sale By Owner listings. And for a particular listing, we're able to see how we can get phone number. Now if you want to do this across all the listings. All you need to do is a for loop, which is what we cover in the introduction to Python series on YouTube. I hope this tutorial has been super useful to show how you could use programming and non programming tools to get data on for sale by owner for free. Next steps you could take is maybe integrating this API into your existing CRM software such as Podio, HubSpot, or Zoho what I'd love to hear are what leads you're looking into so that I can create future videos that are relevant to your searches. And you can automate and scale your business. Comment below and if you haven't already, please like and subscribe. Thanks

Transcribed by https://otter.ai

Previous
Previous

How Key Principals can Help Close Multi-Family Deals with Ethan Gao

Next
Next

How to Get Zillow Property Details with Python 2023