Introduction
Main API Endpoint:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client")
.get()
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client');
$request->setMethod(HTTP_METH_GET);
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client"
req, _ := http.NewRequest("GET", url, payload)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Welcome to the Mashvisor API documentation. Mashvisor API endpoints allow developer access for the implementation of custom applications. We provide granular and summary level real estate information, in-depth property performance analysis, and up-to-date calculations performance metrics for cities, zip codes, and neighborhoods across the United States.
Preview code examples on the right, and switch the programming language of the examples using tabs in the top right.
Mashvisor API is RESTfull. Our API has predictable, resource-oriented URLs, and uses HTTPresponse codes to indicate API errors. We use built-in HTTP features, like HTTP authentication and HTTP verbs, which are understood by off-the-shelf HTTP clients. JSON is returned by all API responses, including errors.
The requests in the right sidebar are designed to work as-is. The sample requests are performed using a test mode.Our data is updated nightly.
NOTE: MLS data shared via APIs is only available for inactive listings due to MLS regulations.
Contact us at [email protected] if you have questions.
Global Data Support
In our commitment to providing comprehensive and valuable data services to our users worldwide, we are pleased to announce an expansion of our API offerings to include support for global data. This means that in addition to our existing United States-focused data, our APIs will now provide access to information from other key countries, including Great Britain, Spain, and more.
Supported Countries
Our APIs are now equipped to provide data from several prominent countries, with plans to continually expand our coverage. As of this update, we are proud to support data access from the following countries:
- Great Britain: GB
- Canada: CA
- Spain: ES
- Australia: AU
- United Arab Emirates: AE
- France: FR
- South Africa: ZA
We are actively working on extending our global data coverage to include additional countries. Stay tuned for updates on new supported regions.
How to Use
In the Short Term Rentals APIs, you have the ability to configure the 'country' parameter. By default, it is set to 'US,' but specifying this parameter is optional. Please note that if you choose to specify the 'country' parameter, it should be in ISO-3166 Alpha-2 code format. For example, 'GB' for Great Britain and 'ES' for Spain.
Authentication
To authorize, use the below code, and make sure to replace
YOUR_API_KEY
with your API key:
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/octet-stream");
RequestBody body = RequestBody.create(mediaType, null);
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client"
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Mashvisor uses API keys to allow access. To request your API key, follow these steps:
To request your API key, register for a new developer user account, and you will be able to start a 2-weeks trial when you’re ready.
The API key is required to be included in all API requests.
Mashvisor allows you to authenticate your account when using the API by including your secret x-api-key header in the request, performed via the authentication scheme (token authentication) which is an HTTP authentication scheme.
All API requests require the JWT authentication must be made over HTTPS. Calls made over non-secure HTTP will fail.
Core Resources
Below is the detailed list of resources that Mashvisor allows you to access via API.
Search
List Cities
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/city/list?state=FL")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/city/list?state=FL")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/city/list');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'FL'
));
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/city/list?state=FL"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"count": 693,
"list": [
"Alachua",
"Alford",
"ALLIGATOR POINT",
"Altamonte Springs",
"ALTHA",
"ALTOONA",
"Alva",
"ANNA MARIA",
"Anthony",
"APALACHICOLA"
]
}
}
This endpoint retrieves the cities with the highest occupancy rates in a specific state.
HTTP Request
GET http://api.mashvisor.com/v1.1/client/city/list
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | state* name, ex: NV. If ignored, it will fetch all available cities. | |
page | Integer | 1 | The page to return the content for. Valid values:1, ... etc. |
items | Integer | 10 | The items to return the content for. Valid values: 10, ... etc. |
List Neighborhoods
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/city/neighborhoods/CA/Los%20Angeles")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/city/neighborhoods/CA/Los%20Angeles")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/city/neighborhoods/CA/Los%20Angeles');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/city/neighborhoods/CA/Los%20Angeles"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"count": 96,
"results": [
{
"id": 7877,
"city": "Los Angeles",
"latitude": 33.952138,
"longitude": -118.404407,
"name": "Westchester",
"state": "CA",
"county": "Los Angeles",
"is_village": 0
},
{
"id": 13017,
"city": "Los Angeles",
"latitude": 34.238792,
"longitude": -118.477272,
"name": "North Hills",
"state": "CA",
"county": "Los Angeles",
"is_village": 0
},
{
"id": 13176,
"city": "Los Angeles",
"latitude": 34.228894,
"longitude": -118.444025,
"name": "Panorama City",
"state": "CA",
"county": "Los Angeles",
"is_village": 0
},
...
]
},
"message": "City neighborhoods list fetched successfully"
}
This endpoint retrieves all available neighborhoods/areas per city.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/city/neighborhoods/{state}/{city}
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | state* name, ex: NV. | |
city* | String | City Name, Ex: Los Angeles |
List Top Markets
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/city/top-markets?state=GA")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/city/top-markets?state=GA")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/trends/neighborhoods');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'GA'
));
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/city/top-markets?state=GA"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": [
{
"city": "Atlanta",
"state": "GA",
"smart_location": "Atlanta, GA",
"homes_for_sale": 6019
},
{
"city": "Marietta",
"state": "GA",
"smart_location": "Marietta, GA",
"homes_for_sale": 1183
},
{
"city": "Savannah",
"state": "GA",
"smart_location": "Savannah, GA",
"homes_for_sale": 1110
},
{
"city": "Decatur",
"state": "GA",
"smart_location": "Decatur, GA",
"homes_for_sale": 1029
},
{
"city": "Lawrenceville",
"state": "GA",
"smart_location": "Lawrenceville, GA",
"homes_for_sale": 873
}
],
"message": "Top markets list fetched successfully"
}
This endpoint retrieves top cities/metro areas in a specific state with a count of active homes for sale.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/city/top-markets
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | state* name, ex: NV. | |
items | Integer | 5 | The items to return the content for. Valid values: 10, ... etc. |
Get City Invesmtent Performance
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/city/investment/CA/Los%20Angeles")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/city/investment/CA/Los%20Angeles")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/city/investment/CA/Los%20Angeles');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/city/investment/CA/Los%20Angeles"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"median_price": 998378.0407,
"sqft": 1842.1734,
"investment_properties": 4448,
"airbnb_properties": 7084,
"traditional_properties": 14354,
"occupancy": 68.6682,
"traditional_coc": 1.6432380442643497,
"airbnb_coc": 1.6819542874835247,
"traditional_rental": 3777.875777894207,
"airbnb_rental": 4093.917001833255,
"airbnb_rental_rates": {
"oneBedRoomHomeValue": 2336.444943967073,
"twoBedRoomsHomeValue": 3083.203274119984,
"threeBedRoomsHomeValue": 4045.138149354516,
"fourBedRoomsHomeValue": 5573.433687482561
},
"traditional_rental_rates": {
"oneBedRoomHomeValue": 1763.9154224395752,
"twoBedRoomsHomeValue": 2686.9422912597656,
"threeBedRoomsHomeValue": 3942.8028729756675,
"fourBedRoomsHomeValue": 4796.2156499226885
}
},
"message": "City Overview fetched successfully"
}
This endpoint retrieves the details of median property performance metrics per city.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/city/investment/{state}/{city}
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | state* name, ex: NV. | |
city | String | City Name, Ex: Los Angeles |
Get City Top Properties
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/city/properties/CA/Los%20Angeles")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/city/properties/CA/Los%20Angeles")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/city/properties/CA/Los%20Angeles');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/city/properties/CA/Los%20Angeles"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"properties": [
{
"id": 642325,
"neighborhood": "Westlake",
"neighborhood_id": 276023,
"address": "308 N Mountain View Avenue",
"zip_code": 90026,
"zip": 90026,
"city": "Los Angeles",
"county": "LOS ANGELES",
"state": "CA",
"type": "Single Family Residential",
"image_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"list_price": 275000,
"baths": 1,
"beds": 2,
"sqft": 1247,
"days_on_market": 1203,
"next_open_house_date": null,
"next_open_house_start_time": null,
"next_open_house_end_time": null,
"last_sale_date": "2017-02-15 00:00:00",
"last_sale_price": 415000,
"listing_id": "RS16117046",
"has_pool": null,
"is_water_front": null,
"num_of_units": null,
"latitude": 34.0691,
"longitude": -118.267,
"traditional_ROI": 5.10278,
"airbnb_ROI": 9.7587,
"traditional_rental": 2406.54,
"airbnb_rental": 4217.37,
"traditional_cap": 5.10278,
"airbnb_cap": 9.7587,
"list_price_formatted": "$275,000",
"price_per_sqft": 221,
"country": "United States",
"COC": {
"airbnb": 9.7587,
"traditional": 5.10278
},
"rental_income": {
"airbnb": 4217.37,
"traditional": 2406.54
},
"cap_rate": {
"airbnb": 9.7587,
"traditional": 5.10278
},
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
},
{
"id": 1046266,
"neighborhood": "Sun Valley",
"neighborhood_id": 41131,
"address": "11854 Roscoe Boulevard",
"zip_code": 91352,
"zip": 91352,
"city": "Los Angeles",
"county": "LOS ANGELES",
"state": "CA",
"type": "Single Family Residential",
"image_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"list_price": 255000,
"baths": 2,
"beds": 3,
"sqft": 1048,
"days_on_market": 449,
"next_open_house_date": null,
"next_open_house_start_time": null,
"next_open_house_end_time": null,
"last_sale_date": null,
"last_sale_price": null,
"listing_id": "18006654",
"has_pool": null,
"is_water_front": null,
"num_of_units": null,
"latitude": 34.2213,
"longitude": -118.392,
"traditional_ROI": 6.54324,
"airbnb_ROI": 9.51711,
"traditional_rental": 2672.32,
"airbnb_rental": 3857.34,
"traditional_cap": 6.54324,
"airbnb_cap": 9.51711,
"list_price_formatted": "$255,000",
"price_per_sqft": 243,
"country": "United States",
"COC": {
"airbnb": 9.51711,
"traditional": 6.54324
},
"rental_income": {
"airbnb": 3857.34,
"traditional": 2672.32
},
"cap_rate": {
"airbnb": 9.51711,
"traditional": 6.54324
},
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
},
{
"id": 2104921,
"neighborhood": "Boyle Heights",
"neighborhood_id": 113886,
"address": "1222 S Herbert Avenue",
"zip_code": 90023,
"zip": 90023,
"city": "Los Angeles",
"county": "Los Angeles",
"state": "CA",
"type": "Single Family Residential",
"image_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"list_price": 340000,
"baths": 2,
"beds": 4,
"sqft": 1600,
"days_on_market": 7,
"next_open_house_date": null,
"next_open_house_start_time": null,
"next_open_house_end_time": null,
"last_sale_date": "2017-03-14 00:00:00",
"last_sale_price": 280000,
"listing_id": "MB19181287",
"has_pool": null,
"is_water_front": null,
"num_of_units": null,
"latitude": 34.0182,
"longitude": -118.183,
"traditional_ROI": 3.39692,
"airbnb_ROI": 9.04391,
"traditional_rental": 2455.65,
"airbnb_rental": 4994.44,
"traditional_cap": 3.39692,
"airbnb_cap": 9.04391,
"list_price_formatted": "$340,000",
"price_per_sqft": 213,
"country": "United States",
"COC": {
"airbnb": 9.04391,
"traditional": 3.39692
},
"rental_income": {
"airbnb": 4994.44,
"traditional": 2455.65
},
"cap_rate": {
"airbnb": 9.04391,
"traditional": 3.39692
},
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
},
{
"id": 1953384,
"neighborhood": "Harbor City",
"neighborhood_id": 38888,
"address": "24815 Normandie Avenue #66",
"zip_code": 90710,
"zip": 90710,
"city": "Los Angeles",
"county": "LOS ANGELES",
"state": "CA",
"type": "Other",
"image_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"list_price": 65000,
"baths": 1,
"beds": 1,
"sqft": 654,
"days_on_market": 86,
"next_open_house_date": null,
"next_open_house_start_time": null,
"next_open_house_end_time": null,
"last_sale_date": null,
"last_sale_price": null,
"listing_id": "SB19148313",
"has_pool": null,
"is_water_front": null,
"num_of_units": null,
"latitude": 33.8002,
"longitude": -118.298,
"traditional_ROI": 9.94736,
"airbnb_ROI": 8.81465,
"traditional_rental": 1179.68,
"airbnb_rental": 1552.57,
"traditional_cap": 9.94736,
"airbnb_cap": 8.81465,
"list_price_formatted": "$65,000",
"price_per_sqft": 99,
"country": "United States",
"COC": {
"airbnb": 8.81465,
"traditional": 9.94736
},
"rental_income": {
"airbnb": 1552.57,
"traditional": 1179.68
},
"cap_rate": {
"airbnb": 8.81465,
"traditional": 9.94736
},
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
}
]
},
"message": "City Properties fetched successfully"
}
This endpoint retrieves detailed data on a specific city's top X investment properties performance.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/city/properties/{state}/{city}
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | state* name, ex: NV. | |
city | String | City Name, Ex: Los Angeles |
Get Top Neighborhoods
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/trends/neighborhoods?state=IL&city=Chicago&items=3")
.get()
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/trends/neighborhoods?state=IL&city=Chicago&items=3")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/trends/neighborhoods');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'IL',
'city' => 'Chicago',
'items' => '3'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/trends/neighborhoods?state=IL&city=Chicago&items=3"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"total_results": 3,
"current_page": 1,
"state": "IL",
"city": "Chicago",
"neighborhoods": [
{
"id": 269585,
"name": "Humboldt Park",
"city": "Chicago",
"state": "IL",
"occupancy": "55.40430000",
"total_listing": 47,
"description": null,
"single_home_value": 520000,
"single_home_value_formatted": "$520,000",
"investment_rentals": {
"airbnb_rental": {
"roi": 2.206806357417788,
"cap_rate": 4.275257478632692,
"rental_income": 1852.6115740741664
},
"traditional_rental": {
"roi": 0.2465075217187405,
"cap_rate": 3.185552884615385,
"rental_income": 1380.40625
}
},
"mashMeter": 57.7665
},
{
"id": 269592,
"name": "Logan Square",
"city": "Chicago",
"state": "IL",
"occupancy": "55.10080000",
"total_listing": 119,
"description": null,
"single_home_value": 350000,
"single_home_value_formatted": "$350,000",
"investment_rentals": {
"airbnb_rental": {
"roi": 3.7590651363134384,
"cap_rate": 6.757881386799999,
"rental_income": 1971.0487378166665
},
"traditional_rental": {
"roi": 1.5805461276322603,
"cap_rate": 5.608165714285714,
"rental_income": 1635.715
}
},
"mashMeter": 58.353
},
{
"id": 403312,
"name": "Ukrainian Village",
"city": "Chicago",
"state": "IL",
"occupancy": "54.73170000",
"total_listing": 41,
"description": null,
"single_home_value": 464500,
"single_home_value_formatted": "$464,500",
"investment_rentals": {
"airbnb_rental": {
"roi": 2.949021758402095,
"cap_rate": 6.284044771359168,
"rental_income": 2432.448996913611
},
"traditional_rental": {
"roi": 0.749465583878405,
"cap_rate": 4.492094725511302,
"rental_income": 1738.815
}
},
"mashMeter": 62.044
}
]
},
"message": "City Overview fetched successfully"
}
This endpoint retrieves top X neighborhoods with the highest occupancy rate in a specific city and state.
HTTP Request
GET http://api.mashvisor.com/v1.1/client/trends/neighborhoods
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | state* name, ex: NV. | |
city | String* | city name, ex: Las Vegas. | |
page | Integer | 1 | The page to return the content for. Valid values:1, ... etc. |
items | Integer | 5 | The items to return the content for. Valid values: 10, ... etc. |
Get Neighborhood Overview
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/neighborhood/268201/bar?state=CA")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/neighborhood/268201/bar?state=CA")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/neighborhood/268201/bar');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'CA'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/neighborhood/268201/bar?state=CA"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"id": "268201",
"name": "Haight Ashbury",
"city": "San Francisco",
"county": "San Francisco",
"state": "CA",
"is_village": 0,
"description": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
"image": "https://9ac82074a42d61a93c2a-4910baab8d3df1a59178432e0b86512c.ssl.cf5.rackcdn.com",
"latitude": 37.768094,
"longitude": -122.448285,
"walkscore": 96,
"num_of_properties": 3,
"num_of_airbnb_properties": 161,
"num_of_traditional_properties": 21,
"median_price": 699000,
"price_per_sqft": 908.19,
"mashMeter": 84.86,
"avg_occupancy": 82.7578,
"strategy": "airbnb",
"airbnb_rental": {
"roi": 3.7042534351348877,
"cap_rate": 10.878766820904865,
"rental_income": 6336.881673177083
},
"traditional_rental": {
"roi": 2.3523680369059243,
"cap_rate": 7.266060085836912,
"rental_income": 4232.4800000000005
}
},
"message": "Neighborhood bar fetched successfully"
}
This endpoint retrieves a neighborhood/area overview and investment analysis. Neighborhoods are defined by MLS publishers and could represent communities or in some cases entire cities.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/neighborhood/{id}/bar
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Integer | Neighborhood id |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | Neighborhood's state |
Property Info
The Property Object
The Property Object:
{
"status": "success",
"content": {
"stateInterest": {
"state": "GA",
"thirtyYearFixed": 4.41,
"thirtyYearFixedCount": 0,
"fifteenYearFixed": 3.83,
"fifteenYearFixedCount": 0,
"fiveOneARM": 3.95,
"fiveOneARMCount": 0
},
"isShortSale": null,
"source": "Property Services of Atlanta, Inc.",
"yearBuilt": 2005,
"nextOpenHouseEndTime": null,
"sqft": 1566,
"lastSaleDate": "2017-03-23 00:00:00",
"id": 2214791,
"state": "GA",
"county": "DeKalb",
"longitude": -84.51863861083984,
"zip": 30331,
"image": {
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"width": 100,
"height": 100
},
"extra_images": [
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
],
"videos": [],
"virtual_tours": [],
"tax": 1765,
"mls_id": "8655658",
"daysOnMarket": 3,
"neighborhood": {
"country": "United States",
"image": "https://9ac82074a42d61a93c2a-4910baab8d3df1a59178432e0b86512c.ssl.cf5.rackcdn.com",
"city": "Atlanta",
"singleHomeValue": 140000,
"mashMeter": 67.49,
"latitude": 33.692139,
"description": null,
"singleHomeValue_formatted": "$140,000",
"is_village": false,
"mashMeter_formatted": 67.49,
"name": "Fairburn",
"id": 403452,
"state": "GA",
"longitude": -84.522495,
"walkscore": 14,
"airbnb_properties_count": 6,
"traditional_properties_count": 0
},
"homeType": "Single Family Residential",
"property_type": "Residential",
"property_sub_type": "Single Family Detached",
"beds": 4,
"num_of_units": null,
"favorite": null,
"city": "Atlanta",
"saleType": "MLS Listing",
"latitude": 33.69144821166992,
"description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
"nextOpenHouseDate": null,
"recentReductionDate": null,
"title": "Single Family Detached, Traditional - Atlanta, GA",
"rent_appreciation_rate": null,
"originalListPrice": null,
"parkingSpots": 1,
"parkingType": "Attached",
"address": "2333 Daniel",
"nextOpenHouseStartTime": null,
"lotSize": 5663,
"agents": [
{
"id": 39995,
"office_id": 8461
}
],
"url": "https://www.mashvisor.com/explore/#!/property/analysis/fairburn-atlanta-ga/2333-daniel/home/2214766",
"baths": 3,
"address_revealing": true,
"location": "Fairburn",
"interested": null,
"listPrice": 125000,
"price_per_sqft": 79.82120051085569,
"lastSalePrice": 145000,
"is_foreclosure": 0,
"foreclosure_status": null,
"occupancy_status": null,
"owner_occupied": false,
"heating_system": "Fireplace",
"cooling_system": "Ceiling Fan(s)",
"hoa_dues": null,
"view_type": null,
"parcel_number": "14F-0032-0005-068-9",
"architecture_style": "New Traditional",
"has_pool": null,
"is_water_front": null,
"needs_repair": 0,
"tenant_occupied": 0,
"is_market_place": 0,
"schools": [
{
"category": "Elementary",
"name": "Deerwood Academy",
"district": null
},
{
"category": "High",
"name": "Therrell",
"district": null
},
{
"category": "JuniorHigh",
"name": null,
"district": null
},
{
"category": "Middle",
"name": "Bunche",
"district": null
}
],
"modification_timestamp": "2019-09-08T18:40:39.000Z",
"created_at": "2019-09-09T05:23:45.000Z",
"updated_at": "2019-09-09T05:23:45.000Z"
}
}
Our comprehensive database contains information of over 6 million active and inactive listings sourced from 600+ of the 820 MLS providers across the US, with active listings added daily.
Please note that our API provides access to this aggregated data, not direct access to the MLS systems themselves.
Property Data Dictionary
Attribute | Definition | Possible Returns |
---|---|---|
id | Mashvisor Property ID | Integer |
title | A short title for the property | String |
description | Longer description of the property | String |
home_type | The property sub type as provided by the MLS provider | String Possible values: 1. Single Family Residential 2.Townhouse 3.Condo/Coop 4.Multi Family 5. Other |
property_main_type | The property main type as provided by the MLS provider | String Possible values: * Residential * Commercial * Common Interest * Farm And Agriculture * Lots And Land * MultiFamily * Other * Rental * Residential |
property_category | The main property listing category | String Possible values: * Purchase * Lease * Rent |
address | The full street address of the property, ex: 36981 Newark Blvd #B |
String |
city | The city where the property is located | String |
state* | The state where the property is located | String |
county | County where a property is located | String |
zip | Postal code where a property is located | Integer |
location | The neighborhood where the property is located | String |
beds | Property full bedrooms count | Integer |
baths | Property full bathrooms count | Integer |
num_of_units | Number of units in the property, only exists with multifamily properties | Integer |
sqft | Property living area in square feet unit | Integer |
lot_size | The lot size of the property in square feet unit | Integer |
parcel_number | The property APN assigned by tax assessor | String |
listing_id | The MLS ID of the property | String |
year_built | The year was constructed in | Integer |
walkscore | The walkscore value of the property address | Integer |
tax | The last knows tax amount | Integer |
tax_history | Collection of all the taxes reported for a property | JSON Array |
list_price | The listed price for the property | Integer |
price_per_sqft | Price per sqft value | Float |
days_on_market | Number of days since the property was on market for sale | Integer |
parking_spots | Number of parking spots | Integer |
parking_type | An indicator for the parking type | Integer |
last_sale_date | The last sale date of the property | Date |
last_sale_price | The last sale price of the property | Integer |
is_foreclosure | An indicator if the property is foreclosure or not | Boolean Possible values: 0, 1 |
foreclosure_status | The foreclosure status as described by the MLS provider | String Possible values * Foreclosure - Other * Lis Pendens (Pre-Foreclosure) * Notice of Default (Pre-Foreclosure) * Notice of Foreclosure Sale (Auction) * Notice of Trustee Sale (Auction) * Other * REO - Bank Owned |
next_open_house_date | The date of the open house occuring | Date |
next_open_house_start_time | The time of the open house starting | Time |
next_open_house_end_time | The time of the open house ending | Time |
url | The URL of the property | String |
source | The name of the entity authorized the property to be syndicated | String |
provider_url | The URL of the entity authorized the property to be syndicated | String |
franchise | The franchise of the property | String |
latitude | Latitude of the property | Float |
longitude | Longitude of the property | Float |
directions | The directions for the property | String |
heating_system | The heating system type | String |
cooling_system | The cooling system type | String |
neighborhood_id | The property neighborhood ID | Integer |
schools | Collection of all the schools nearby a property | JSON Array |
view_type | The property view type | String Possible values: * Airport * Average * Bluff * Bridge * Canyon * City * Desert * Forest * Golf Course * Harbor * Hills * Lake * Marina * Mountain * None * Ocean * Other * Panorama * Park * Ravine * River * Territorial * Unknown * Valley * Vista * Water |
image_url | The property main image URL | String |
extra_images | List of the images associated with a property | String |
videos | Videos associated with a property | String |
virtual_tours | Virtual tour link for a property | String |
updated_at | Date it’s updated in the database | Date |
buyer_name | The property buyer’s name | String |
seller_name | The property seller’s name | String |
owner_ame | The property owner’s name | String |
owner_address | The owner full street address | String |
owner_city | The owner city | String |
owner_state | The owner city | String |
owner_zip_code | The owner city | String |
owner_phone_number | The owner phone number | String |
owner_image | The owner headshot | String |
owner_email | The owner email | String |
occupancy_status | Property occupancy status | String Possible values: * Assumed Owner Occupancy * Owner Occupied or Primary Residence * Second Home |
agent_id | The property’s agent ID associated to it | Integer |
Expense | Collection of all the expenses reported for a property | JSON Array Possible values: * AC Maintenance Fee * Accounting Fee * Additional Pet Fee * Amenity Fee * Annual Operating Expenses * Application Fee * Beach Fee * Boat Fee * Broadband Fee * Building Insurance * Building Maintenance Fee * Bus Service Fee * Cable Fee * Capital Improvements Fee * Carpet Cleaning Fee * Cleaning Deposit * Cleaning Fee * Closing Cost * Club Fee * Club Membership Fee * Co-Op Fee * Cold Water Fee * Common Area Maintenance Fee * Community Development District Fee * Community/Master Home Owner Fee * Condo Management Fee * Condo/Co-Op Fee * Contingency Fund Fee * Cook Fee * Day Care Fee * Dock Fee * Doorman Fee * Dredging Fee * Electric Fee * ElevatorUseFee * EquestrianFee * ExterminatorFee * FacilitiesFee * FireDepartmentDues * FireInsuranceFee * FirewoodFee * FirstMonthsRent * FirstTwoMonthsRent * FitnessCenterFee * FrontFootFee * GardenerFee * GasFee * GreenFee * GroundMaintenanceFee * GroundRent * GutterCleaningFee * HealthFee * HomeOwnerAssessmentsFee * HomeOwnerTransferFee * HorseCareFee * InitiationFee * KeyDeposit * LandAssessmentFee * LandFee * LastMonthsRent * LawnMaintenanceFee * LegalFee * LifeguardFee * LightBulbs Filters Fuses AlarmCareFee * LightFee * MaidServiceFee * MaintenanceonPool * ManagementFee * MarinaFee * Mello-RoosCommunityFacilitiesDistrictFee * MHParkFees * MoveinFee * MoveoutFee * OilFee * OnsiteParkingFee * OriginationFee * Other * OwnerPays * ParkFee * ParkingFee * PetAddendumFee * PetApplicationFee * PetDeposit * PhoneFee * Pier/DockMaintenanceFee * PlannedAreaDevelopmentFee * POAFee * Pool/SpaFee * ProcessingFee * RanchFee * Re-KeyFee * RecaptureFee * RecreationFee * RecyclingFee * RegimeFee * RepairDeductible * ReservationFee * ResortFee * RoofMaintenanceFee * RoofRepairFee * RoofReplacementFee * RVFee * RVParkingFee * SecurityDeposit * SecurityLightFee * SecurityMonitoringFee * SecurityServiceFee * SecurityStaffFee * SecuritySystemFee * SepticInspectionFee * SewerFee * SewerTapFee * SnowRemovalFee * SocialFee * SpecialAssessmentFee * StormWaterFee * StreetLightingFee * StreetMaintenanceFee * StreetParkingFee * StructuralMaintenanceFee * TenantPays * TennisFee * TrashFee * TripleNetFee * UtilitiesFee * WalkingTrailFee * WaterFee * WaterHeaterFee * WaterIrrigationFee * WaterPipeFee * WaterRightsFee * WaterTapFee * WaterTreatmentFee * WaterUseFee * Water/SewerHookupFee * WaterfrontFee * WindowCleaningFee * YardCareFee |
builder_name | The builder name of a property | String |
builder_email | The builder email of a property | String |
builder_number | The builder phone number of a property | String |
builder_address | The builder full address of a property | String |
disclaimer | String serves as a negation or limitation of the rights under a warranty given by a seller to a buyer | String |
appliances | A description of the appliance as provided | JSON Array Possible values: * BarbequeorGrill * CoffeeSystem * CoffeeSystem-Roughin * Cooktop * Cooktop-Electric * Cooktop-Electric2burner * Cooktop-Electric6burner * Cooktop-Gas * Cooktop-Gas2burner * Cooktop-Gas5burner * Cooktop-Gas6burner * Cooktop-GasCustom * Cooktop-Induction * Cooktop-Induction2burner * Cooktop-Induction6burner * Dishwasher * Dishwasher-Drawer * Dishwasher-Twoormore * Dryer * Dryer-Dualfuel * Dryer-Electric110V * Dryer-Electric220V * Dryer-Gas * Dryer-Gasroughin * Freezer * Freezer-Compact * Freezer-Upright * GarbageDisposer * IceMaker * Microwave * None * Other * Oven * Oven-Convection * Oven-Double * Oven-DoubleElectric * Oven-DoubleGas * Oven-Gas * Oven-Gas3wide * Oven-Self-Cleaning * Oven-Steam * Oven-Twin * Oven-TwinElectric * Oven-TwinGas * Oven-TwinGas3wide * Oven-TwinMixed * Range * Range-BuiltIn * Range-Dual * Range-Dual10burner * Range-Dual6burner * Range-Dual8burner * Range-Electric * Range-Gas * Range-Gas10burner * Range-Gas6burner * Range-Gas8burner * Range-Induction * Range-Other * Rangetop-Electric * Rangetop-Electric2burner * Rangetop-Electric6burner * Rangetop-Gas * Rangetop-Gas10burner * Rangetop-Gas2burner * Rangetop-Gas4burnercompact * Rangetop-Gas6burner * Rangetop-Gas8burner * Rangetop-GasCustom * Rangetop-Induction * Rangetop-Induction2burner * Rangetop-Induction6burner * Refrigerator * Refrigerator-Bar * Refrigerator-Built-in * Refrigerator-Built-inWithPlumbing * Refrigerator-Drawer * Refrigerator-SidebySide * Refrigerator-Undercounter * Refrigerator-WineStorage * Refrigerator-WithPlumbing * TrashCompactor * VacuumSystem * VacuumSystem-Roughin * VentHood * VentHood10burner * VentHood6burner * VentHood8burner * WarmingDrawer * Washer * Washer-Frontload * Washer-Steamer * Washer-Topload * Washer/DryerCombo * Washer/DryerStack * Water-Filter * Water-InstantHot * Water-Purifier * Water-Softener |
detailed_characteristics | Detailed characteristics | JSON Array |
room_count | Total rooms count | Integer |
year_updated | Indicates the year the property received updates | Integer |
half_baths | Indicates the half bathrooms value for a property | Integer |
Get Property
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/property?id=2214791&state=GA")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/property?id=2214791&state=GA")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/property');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'GA',
'id' => 2214791
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/property?id=2214791&state=GA"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"stateInterest": {
"state": "GA",
"thirtyYearFixed": 4.41,
"thirtyYearFixedCount": 0,
"fifteenYearFixed": 3.83,
"fifteenYearFixedCount": 0,
"fiveOneARM": 3.95,
"fiveOneARMCount": 0
},
"isShortSale": null,
"source": "Property Services of Atlanta, Inc.",
"yearBuilt": 2005,
"nextOpenHouseEndTime": null,
"sqft": 1566,
"lastSaleDate": "2017-03-23 00:00:00",
"id": 2214791,
"state": "GA",
"county": "DeKalb",
"longitude": -84.51863861083984,
"zip": 30331,
"image": {
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"width": 100,
"height": 100
},
"extra_images": [
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
],
"videos": [],
"virtual_tours": [],
"tax": 1765,
"mls_id": "8655658",
"daysOnMarket": 3,
"neighborhood": {
"country": "United States",
"image": "https://9ac82074a42d61a93c2a-4910baab8d3df1a59178432e0b86512c.ssl.cf5.rackcdn.com",
"city": "Atlanta",
"singleHomeValue": 140000,
"mashMeter": 67.49,
"latitude": 33.692139,
"description": null,
"singleHomeValue_formatted": "$140,000",
"is_village": false,
"mashMeter_formatted": 67.49,
"name": "Fairburn",
"id": 403452,
"state": "GA",
"longitude": -84.522495,
"walkscore": 14,
"airbnb_properties_count": 6,
"traditional_properties_count": 0
},
"homeType": "Single Family Residential",
"property_type": "Residential",
"property_sub_type": "Single Family Detached",
"beds": 4,
"num_of_units": null,
"favorite": null,
"city": "Atlanta",
"saleType": "MLS Listing",
"latitude": 33.69144821166992,
"description": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
"nextOpenHouseDate": null,
"recentReductionDate": null,
"title": "Single Family Detached, Traditional - Atlanta, GA",
"rent_appreciation_rate": null,
"originalListPrice": null,
"parkingSpots": 1,
"parkingType": "Attached",
"address": "2333 Daniel",
"nextOpenHouseStartTime": null,
"lotSize": 5663,
"agents": [
{
"id": 39995,
"office_id": 8461
}
],
"url": "https://www.mashvisor.com/explore/#!/property/analysis/fairburn-atlanta-ga/2333-daniel/home/2214766",
"baths": 3,
"address_revealing": true,
"location": "Fairburn",
"interested": null,
"listPrice": 125000,
"price_per_sqft": 79.82120051085569,
"lastSalePrice": 145000,
"is_foreclosure": 0,
"foreclosure_status": null,
"occupancy_status": null,
"owner_occupied": false,
"heating_system": "Fireplace",
"cooling_system": "Ceiling Fan(s)",
"hoa_dues": null,
"view_type": null,
"parcel_number": "14F-0032-0005-068-9",
"architecture_style": "New Traditional",
"has_pool": null,
"is_water_front": null,
"needs_repair": 0,
"tenant_occupied": 0,
"is_market_place": 0,
"schools": [
{
"category": "Elementary",
"name": "Deerwood Academy",
"district": null
},
{
"category": "High",
"name": "Therrell",
"district": null
},
{
"category": "JuniorHigh",
"name": null,
"district": null
},
{
"category": "Middle",
"name": "Bunche",
"district": null
}
],
"modification_timestamp": "2019-09-08T18:40:39.000Z",
"created_at": "2019-09-09T05:23:45.000Z",
"updated_at": "2019-09-09T05:23:45.000Z"
}
}
This endpoint retrieves the property's detailed dataset.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/property
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | The property Id from the Mashvisor database. | |
state* | String | The state of the property should be provided to the api or api will throw error 404. | |
parcel_number | String | Property parcel or APN | |
mls_id | String | Property MLS id | |
address | String | Property street address | |
city | String | Property city | |
zip_code | String | Property zip code |
Get Taxes
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/property/2214791/taxing?state=GA")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/property/2214791/taxing?state=GA")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/property/2214791/taxing');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'GA'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/property/2214791/taxing?state=GA"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"tax_history": [
{
"year": "2014",
"property_tax": 1414.47,
"assessment": 105300
},
{
"year": "2015",
"property_tax": 1340.14,
"assessment": 99400
},
{
"year": "2016",
"property_tax": 1340.14,
"assessment": 99400
},
{
"year": "2017",
"property_tax": 1340.14,
"assessment": 99400
},
{
"year": "2018",
"property_tax": 977.59,
"assessment": 99400
},
{
"year": "2019",
"property_tax": 977.59,
"assessment": 151200
}
]
}
}
This endpoint retrieves the property's historical tax rates.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/property/{id}/taxing
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | The property Id from the Mashvisor database. |
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state of the property should be provided to the api or api will throw error 404. |
Property Ownership
The Ownership Objects
The Contact Object:
{
"id": 3432,
"first_name": "Ahmed",
"last_name": "Hashlamon",
"email_address": "[email protected]",
"phone_number": "(669) 222-6396",
"line_type": null,
"address": null,
"city": "Campbell",
"state": "CA",
"zip_code": "95008",
"created_at": "2016-12-15T14:53:40.000Z",
"updated_at": "2019-09-10T02:58:01.000Z"
}
The Demographics Object:
{
"dob": "24081992",
"age_range": "25-29",
"ethnicity": "Hispanic",
"single_parent": "Yes",
"senior_adult_household": "Yes",
"young_adult_household": null,
"business_owner": "Accountant",
"language": "English",
"religion": "Christian",
"number_of_children": "3",
"presence_of_children": "Yes",
"education": null,
"occupation": null,
"gender": "Male",
"marital_status": "Married",
"owner_renter": "Owner",
"social_presence_indicator": "Yes"
}
The Lifestyle and Interests Object:
{
"magazines": "Yes",
"technology": "Yes",
"dieting_and_wellness": "Yes",
"exercise": "Yes",
"diy_home_improvement": "Yes",
"jewelry": null,
"mail_order_buyer": "Yes",
"membership_clubs": "Yes",
"online_education": "Yes",
"spectator_sports": "Yes",
"outdoor_sports": "Yes",
"investing": null,
"books": null,
"political_donor": "Yes",
"hobbies_and_crafts": "Yes",
"cosmetics": "Yes",
"travel": "Yes",
"charitable_donations": "Yes",
"arts_and_antiques": "Yes",
"pet_owner": "Yes",
"cooking": null,
"diy_auto_work": "Yes",
"health_and_beauty": "Yes",
"parenting": null,
"music": null,
"film_and_movies": "Yes",
"self_improvement": "Yes",
"womens_apparel": "Yes"
}
The Financials, Household incomes, wealth score, and autos Object:
{
"est_household_income": "$80,000 - 100,000",
"length_of_residence": "10 years",
"home_purchase_date": "201770",
"est_home_purchase_price": "$950,000-1,100,999",
"dwelling_type": "Single Family",
"auto_year": null,
"number_of_credit_lines": "2",
"auto_make": null,
"credit_card_holder": "Yes",
"auto_model": null,
"est_home_value": null,
"auto_edition": null,
"est_net_worth": "$500,000-749,999",
"gas_credit_card_holder": null,
"upscale_card_holder": "Yes",
"wealth_score": 98
}
Mashvisor database contains historical data on property owners' contact information, demographics, lifestyle, interests, financials, and estimated household income.
Owner Data Dictionary
Attribute | Definition | Possible Returns |
---|---|---|
First Name | Owner First name | String |
Last Name | Owner Last name | String |
Phone Number | Phone number, including area code | Integer |
Line Type | Landline or Mobile | String |
Email Address | Owner email address | String |
Address | Street address | String |
City | City name | String |
state* | state* abbreviation | String |
Zip Code | Zip code | Integer |
DOB | A month and year of person’s born | String |
Age Range | Age range of the person | String |
Ethnicity | Ethnicity of the person | String |
Single Parent | Is single parent presence in household | String |
Senior Adult Household | Yes or null | String |
Young Adult Household | Yes or null | String |
Business Owner | Business owner; Accountant, Builder, Director, .. | String |
Language | Primary Language | String |
Religion | Person’s religion | String |
Number of Children | Children within the household | Integer |
Presence of Children | Yes or null | String |
Education | Highest level of education | String |
Occupation | Industry of occupation | String |
Gender | Male or Female | String |
Marital Status | Single or Married | String |
Own/Rent | Own or rent household | String |
Social Presence Indicator | Whether the person has an account on social networks or not, Yes or null | String |
Magazines | If there’s a match, the title will be listed | String |
Technology | If there’s a match, the title will be listed | String |
Dieting and Wellness | If there’s a match, the title will be listed | String |
Exercise | If there’s a match, the title will be listed | String |
DIY Home Improvement | If there’s a match, the title will be listed | String |
Jewelry | If there’s a match, the title will be listed | String |
Mail Order Buyer | If there’s a match, the title will be listed | String |
Membership Clubs | If there’s a match, the title will be listed | String |
Online Education | If there’s a match, the title will be listed | String |
Spectator Sports | If there’s a match, the title will be listed | String |
Outdoor Sports | If there’s a match, the title will be listed | String |
Investing | If there’s a match, the title will be listed | String |
Books | If there’s a match, the title will be listed | String |
Political Donor | If there’s a match, the title will be listed | String |
Hobbies and Crafts | If there’s a match, the title will be listed | String |
Cosmetics | If there’s a match, the title will be listed | String |
Travel | If there’s a match, the title will be listed | String |
Charitable Donations | If there’s a match, the title will be listed | String |
Arts and Antiques | If there’s a match, the title will be listed | String |
Pet Owner | If there’s a match, the title will be listed | String |
Cooking | If there’s a match, the title will be listed | String |
DIY Auto work | If there’s a match, the title will be listed | String |
Health and Beauty | If there’s a match, the title will be listed | String |
Parenting | If there’s a match, the title will be listed | String |
Music | If there’s a match, the title will be listed | String |
Film and Movies | If there’s a match, the title will be listed | String |
Self Improvement | If there’s a match, the title will be listed | String |
Womens Apparel | Yes or null | String |
Est. Household Income | Estimated household income | String |
Length of Residence | Length of residence | String |
Home Purchase Date | Estimated date of home purchase | Date |
Est. Home Purchase Price | Estimated price of home purchase | String |
Dwelling Type | Single family or multi-family | String |
Auto year | Year of automobile | Integer |
Number of credit lines | City Number of lines of credit | Integer |
Auto make | Make of automobile | String |
Credit card holder | Yes or null | String |
Auto model | Model of automobile | String |
Est. Home Value | Estimated home value | String |
Auto edition | Edition of automobile | String |
Est. Net Worth | Estimated net worth | String |
Gas credit card holder | Yes or null | String |
Upscale card holder | Yes or null | String |
Wealth Score | Measure of wealth, 0 - 100 | Integer |
Get Contact Info
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/owner/contact?mls_id=SF453443465&state=GA")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/owner/contact?mls_id=SF453443465&state=GA")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/owner/contact');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'mls_id' => 'SF453443465'
'state' => 'GA'
));
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/owner/contact?mls_id=SF453443465&state=GA"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"id": 3432,
"first_name": "Ahmed",
"last_name": "Hashlamon",
"email_address": "[email protected]",
"phone_number": "(669) 222-6396",
"line_type": "Mobile",
"address": null,
"city": "Campbell",
"state": "CA",
"zip_code": "95008",
"created_at": "2016-12-15T14:53:40.000Z",
"updated_at": "2019-09-10T02:58:01.000Z"
}
}
This endpoint retrieves contact details for a single property owner.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/owner/contact
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
parcel_number | String | Property parcel or APN | |
mls_id | String | Property MLS id | |
address | String | Property street address | |
city | String | Property city | |
state* | String | Property state | |
zip_code | String | Property zip code |
Get Demographics
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/owner/demographics?phone_number=+16692226396")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/owner/demographics?phone_number=+16692226396")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/owner/demographics');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'phone_number' => '+16692226396'
));
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/owner/demographics?phone_number=+16692226396"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"dob": "24081992",
"age_range": "25-29",
"ethnicity": "Catholic",
"single_parent": "Yes",
"senior_adult_household": "Yes",
"young_adult_household": null,
"business_owner": "Accountant",
"language": "English",
"religion": "Christian",
"number_of_children": "3",
"presence_of_children": "Yes",
"education": null,
"occupation": null,
"gender": "Male",
"marital_status": "Married",
"owner_renter": "Owner",
"social_presence_indicator": "Yes"
}
}
This endpoint retrieves the property owners’ demographics when matching on a full name, phone number, email address, or on a complete mailing address.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/owner/demographics
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
first_name | String | First name | |
last_name | String | Last name | |
phone_number | String | Person phone number | |
email_address | String | Person email address | |
address | String | Property street address | |
zip_code | String | Property zip code | |
city | String | Property city | |
state* | String | Property state |
Get Lifestyle and Interests
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/owner/lifeint?phone_number=+16692226396")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/owner/lifeint?phone_number=+16692226396")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/owner/lifeint');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'phone_number' => '+16692226396'
));
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/owner/lifeint?phone_number=+16692226396"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"magazines": "Yes",
"technology": "Yes",
"dieting_and_wellness": "Yes",
"exercise": "Yes",
"diy_home_improvement": "Yes",
"jewelry": null,
"mail_order_buyer": "Yes",
"membership_clubs": "Yes",
"online_education": "Yes",
"spectator_sports": "Yes",
"outdoor_sports": "Yes",
"investing": null,
"books": null,
"political_donor": "Yes",
"hobbies_and_crafts": "Yes",
"cosmetics": "Yes",
"travel": "Yes",
"charitable_donations": "Yes",
"arts_and_antiques": "Yes",
"pet_owner": "Yes",
"cooking": null,
"diy_auto_work": "Yes",
"health_and_beauty": "Yes",
"parenting": null,
"music": null,
"film_and_movies": "Yes",
"self_improvement": "Yes",
"womens_apparel": "Yes"
}
}
This endpoint retrieves the property owners’ lifestyle and interests when matching on a full name, phone number, email address, or on a complete mailing address.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/owner/lifeint
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
first_name | String | First name | |
last_name | String | Last name | |
phone_number | String | Person phone number | |
email_address | String | Person email address | |
address | String | Property street address | |
zip_code | String | Property zip code | |
city | String | Property city | |
state* | String | Property state |
Get Financials, Household Incomes
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/owner/finhouse?phone_number=+16692226396")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/owner/finhouse?phone_number=+16692226396")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/owner/finhouse');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'phone_number' => '+16692226396'
));
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/owner/finhouse?phone_number=+16692226396"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"est_household_income": "$80,000 - 100,000",
"length_of_residence": "10 years",
"home_purchase_date": "201770",
"est_home_purchase_price": "$950,000-1,100,999",
"dwelling_type": "Single Family",
"auto_year": null,
"number_of_credit_lines": "2",
"auto_make": null,
"credit_card_holder": "Yes",
"auto_model": null,
"est_home_value": null,
"auto_edition": null,
"est_net_worth": "$500,000-749,999",
"gas_credit_card_holder": null,
"upscale_card_holder": "Yes",
"wealth_score": 98
}
}
This endpoint retrieves property owners’ financials, household income, and wealth score when matching on a full name, phone number, email address, or on a complete mailing address.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/owner/finhouse
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
first_name | String | First name | |
last_name | String | Last name | |
phone_number | String | Person phone number | |
email_address | String | Person email address | |
address | String | Property street address | |
zip_code | String | Property zip code | |
city | String | Property city | |
state* | String | Property state |
Investment Analysis
The Investment Performance Object
The Investment Performance Object:
{
"principle_with_interest": 0,
"traditional": {
"occupancy": 93.9,
"cash_flow": 698.3238000000001,
"roi": 9.53343071672355,
"cap_rate": 9.53343071672355,
"rental_income": 1450.755,
"maintenance_cost": 73.25,
"traditional_utilities": 170,
"management_cost": 145.0755,
"traditional_property_tax": 70,
"traditional_home_owner_insurance": 91,
"cleaningFees": 0,
"traditional_rental_income_tax": 203.10570000000004,
"total_expenses": 752.4312,
"traditional_other": 0,
"hoa_dues": 0,
"expenses_details": {
"utilities": {
"expenses": {
"trash": null,
"water": null,
"cable": null,
"electricity": null,
"fuel": null
},
"sum": 0
}
}
},
"airbnb": {
"occupancy": 62.5,
"cash_flow": 1686.5176527777778,
"roi": 23.024131778536216,
"cap_rate": 23.024131778536216,
"rental_income": 2751.0100694444445,
"maintenance_cost": 73.25,
"airbnb_utilities": 170,
"management_cost": 275.10100694444446,
"airbnb_property_tax": 70,
"airbnb_home_owner_insurance": 91,
"airbnb_rental_income_tax": 385.1414097222223,
"cleaningFees": 0,
"total_expenses": 1064.4924166666667,
"airbnb_other": 0,
"hoa_dues": 0,
"expenses_details": {
"utilities": {
"expenses": {
"trash": null,
"water": null,
"cable": null,
"electricity": null,
"fuel": null
},
"sum": 0
}
}
},
"property_tax": 70
}
Property Data Dictionary
Attribute | Definition | Possible Returns |
---|---|---|
Traditional Rental | The expected monthly rent if the property is rented out traditionally (long-term rental) | Double |
Traditional ROI | Measures the returns of a property based on the amount of cash put down: (Cash Flow X 12 Months X 100)/Total Cash Invested | Double |
Traditional Cap Rate | Measures the expected income and potential return of a property; does not take property financing into consideration, gives return as if property is paid off: (Cash Flow X 12 Months)/Property Price | Double |
Traditional Vacancy Rate | The expected number of days the property won’t be reserved/rented per year. | Double |
AirBnB Rental | The expected monthly rent if the property is listed on Airbnb (short-term vacation rental) versus if the property is rented out traditionally (long-term rental) | Double |
AirBnB ROI | Measures the returns of a property based on the amount of cash put down: (Cash Flow X 12 Months X 100)/Total Cash Invested | Double |
AirBnB Cap Rate | Measures the expected income and potential return of a property; does not take property financing into consideration, gives return as if property is paid off: (Cash Flow X 12 Months)/Property Price | Double |
AirBnB Occupancy | The expected number of days the property will be reserved/rented per year. num of days per year, or a percentage Based on "is_days" param, eg: 70 as a percentage, or 150 as days | Double |
Down Payment | Down payment | Integer |
Loan Type | Loan type | Integer |
Interest Rate | Interest rate | Double |
Payment Type | loan, or cash | String Default: cash |
Traditional Occupancy | num of days per year, or a percentage Based on "is_days" param, eg: 70 as a percentage, or 150 as days | Double |
Is Days | If it's set to 0, the "traditional_occupancy" is considered as a percentage, if it's 1, it's considered as num of days per year | Integer Default: 0 |
Max Bid | Sets the property listing price to its value | Integer |
Traditional Maintenance Cost | Sets the traditional maintenance cost, e.g: 250 | Double |
Airbnb Maintenance Cost | Sets the airbnb maintenance cost, e.g: 230 | Double |
Traditional Management Cost | Sets the traditional management cost, e.g: 130 | Double |
Airbnb Management Cost | Sets the airbnb management cost, e.g: 120 | Double |
Airbnb Property Tax | Sets the airbnb property tax value, e.g: 1705 | Float |
Traditional Property Tax | Sets the traditional property tax value, e.g: 1705 | Float |
Airbnb Home Owner Insurance | Sets the airbnb home owner insurance cost, e.g: 83 | Integer |
Traditional Home Owner Insurance | Sets the traditional home owner insurance cost, e.g: 83 | Integer |
Airbnb Total Expenses | Sets the airbnb total expenses, e.g: 1700 | Double |
Traditional Total Expenses | Sets the traditional total expenses, e.g: 1900 | Double |
Startup Cost | First time costs, paid only once | Integer Default: 8000 |
Get Investment Performance
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/property/664367/investment?state=GA&payment_type=loan&interest_rate=0.5&loan_type=1&down_payment=100")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/property/664367/investment?state=GA&payment_type=loan&interest_rate=0.5&loan_type=1&down_payment=100")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/property/664367/investment');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'GA',
'payment_type' => 'loan',
'interest_rate' => '0.5',
'loan_type' => '1',
'down_payment' => '100'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/property/664367/investment?state=GA&payment_type=loan&interest_rate=0.5&loan_type=1&down_payment=100"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "6dc17686-8955-e00f-f0bb-d8f60f49a16b")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"principle_with_interest": 0,
"traditional": {
"occupancy": 93.9,
"cash_flow": 698.3238000000001,
"roi": 9.53343071672355,
"cap_rate": 9.53343071672355,
"rental_income": 1450.755,
"maintenance_cost": 73.25,
"traditional_utilities": 170,
"management_cost": 145.0755,
"traditional_property_tax": 70,
"traditional_home_owner_insurance": 91,
"cleaningFees": 0,
"traditional_rental_income_tax": 203.10570000000004,
"total_expenses": 752.4312,
"traditional_other": 0,
"hoa_dues": 0,
"expenses_details": {
"utilities": {
"expenses": {
"trash": null,
"water": null,
"cable": null,
"electricity": null,
"fuel": null
},
"sum": 0
}
}
},
"airbnb": {
"occupancy": 62.5,
"cash_flow": 1686.5176527777778,
"roi": 23.024131778536216,
"cap_rate": 23.024131778536216,
"rental_income": 2751.0100694444445,
"maintenance_cost": 73.25,
"airbnb_utilities": 170,
"management_cost": 275.10100694444446,
"airbnb_property_tax": 70,
"airbnb_home_owner_insurance": 91,
"airbnb_rental_income_tax": 385.1414097222223,
"cleaningFees": 0,
"total_expenses": 1064.4924166666667,
"airbnb_other": 0,
"hoa_dues": 0,
"expenses_details": {
"utilities": {
"expenses": {
"trash": null,
"water": null,
"cable": null,
"electricity": null,
"fuel": null
},
"sum": 0
}
}
},
"property_tax": 70
}
}
This endpoint retrieves the property's investment performance.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/property/{id}/investment
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | The property Id from the Mashvisor database. |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state of the property should be provided to the api or api will throw error 404. | |
down_payment | Integer | Down payment | |
loan_type | Integer | Loan type | |
interest_rate | Double | Interest rate | |
payment_type | String | loan, cash | |
airbnb_rental | Double | Monthly Airbnb rental income, ex: 2000 | |
traditional_rental | Double | Monthly traditional rental income, ex: 1700 | |
airbnb_occupancy | Double | num of days per year, or a percentage Based on "is_days" param, eg: 70 as a percentage, or 150 as days | |
traditional_occupancy | Double | num of days per year, or a percentage Based on "is_days" param, eg: 70 as a percentage, or 150 as days | |
is_days | Integer | 0 | If it's set to 0, the "traditional_occupancy" is considered as a percentage, if it's 1, it's considered as num of days per year |
max_bid | Integer | Sets the property listing price to its value | |
traditional_maintenance_cost | Double | Sets the traditional maintenance cost, e.g: 250 | |
airbnb_maintenance_cost | Double | Sets the airbnb maintenance cost, e.g: 230 | |
traditional_management_cost | Double | Sets the traditional management cost, e.g: 130 | |
airbnb_management_cost | Double | Sets the airbnb management cost, e.g: 120 | |
airbnb_property_tax | Float | Sets the airbnb property tax value, e.g: 1705 | |
traditional_property_tax | Float | Sets the traditional property tax value, e.g: 1705 | |
airbnb_home_owner_insurance | Integer | Sets the airbnb home owner insurance cost, e.g: 83 | |
traditional_home_owner_insurance | Integer | Sets the traditional home owner insurance cost, e.g: 83 | |
airbnb_total_expenses | Double | Sets the airbnb total expenses, e.g: 1700 | |
traditional_total_expenses | Double | Sets the traditional total expenses, e.g: 1900 | |
valuation_score | Boolean | false | If true, gets the property valuation score |
startup_cost | Integer | 8000 |
Get Investment Breakdown
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/property/664367/investment/breakdown?state=GA&startup_cost=39000&recurring_cost=200&turnover_cost=200")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/property/664367/investment/breakdown?state=GA&startup_cost=39000&recurring_cost=200&turnover_cost=200")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/property/664367/investment/breakdown');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'GA',
'startup_cost' => '39000',
'recurring_cost' => '200',
'turnover_cost' => '200'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/property/664367/investment/breakdown?state=GA&startup_cost=39000&recurring_cost=200&turnover_cost=200"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"strategy": "Airbnb",
"breakdown": [
{
"month": 1,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 36648.98993055556
},
{
"month": 2,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 34297.97986111112
},
{
"month": 3,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 31946.969791666674
},
{
"month": 4,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 29595.95972222223
},
{
"month": 5,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 27244.949652777785
},
{
"month": 6,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 24893.93958333334
},
{
"month": 7,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 22542.929513888896
},
{
"month": 8,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 20191.91944444445
},
{
"month": 9,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 17840.909375000007
},
{
"month": 10,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 15489.899305555562
},
{
"month": 11,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 13138.889236111117
},
{
"month": 12,
"gross_rental_revenue": 4091.0416666666665,
"cleaning_fee_collected": 316.84027777777777,
"vacancy": 1534.140625,
"airbnb_hosting_fee": 122.73124999999999,
"adjusted_gross_income": 2751.0100694444445,
"net_rents": 2351.0100694444445,
"yield_on_investment": 6.028230947293448,
"balance": 10787.879166666673
}
],
"avg_occupancy": 0.625,
"days_leased_per_month": 19.010416666666668,
"avg_daily_leased_rate": 134.5,
"airbnb_tax": 0,
"cash_flow": 2351.0100694444445,
"net_operating_income": 2351.0100694444445,
"rental_yield": 32.09570060675009,
"annually_breakdown": [
{
"year": 1,
"gross_rental_revenue": 49092.5,
"cleaning_fee_collected": 3802.083333333333,
"vacancy": 18409.6875,
"airbnb_hosting_fee": 1472.7749999999999,
"adjusted_gross_income": 33012.120833333334,
"net_rents": 28212.120833333334,
"yield_on_investment": 6.028230947293448,
"balance": 10787.879166666666
},
{
"year": 2,
"gross_rental_revenue": 49092.5,
"cleaning_fee_collected": 3802.083333333333,
"vacancy": 18409.6875,
"airbnb_hosting_fee": 1472.7749999999999,
"adjusted_gross_income": 33012.120833333334,
"net_rents": 28212.120833333334,
"yield_on_investment": 6.028230947293448,
"balance": -17424.24166666667
},
{
"year": 3,
"gross_rental_revenue": 49092.5,
"cleaning_fee_collected": 3802.083333333333,
"vacancy": 18409.6875,
"airbnb_hosting_fee": 1472.7749999999999,
"adjusted_gross_income": 33012.120833333334,
"net_rents": 28212.120833333334,
"yield_on_investment": 6.028230947293448,
"balance": -45636.3625
},
{
"year": 4,
"gross_rental_revenue": 49092.5,
"cleaning_fee_collected": 3802.083333333333,
"vacancy": 18409.6875,
"airbnb_hosting_fee": 1472.7749999999999,
"adjusted_gross_income": 33012.120833333334,
"net_rents": 28212.120833333334,
"yield_on_investment": 6.028230947293448,
"balance": -73848.48333333334
},
{
"year": 5,
"gross_rental_revenue": 49092.5,
"cleaning_fee_collected": 3802.083333333333,
"vacancy": 18409.6875,
"airbnb_hosting_fee": 1472.7749999999999,
"adjusted_gross_income": 33012.120833333334,
"net_rents": 28212.120833333334,
"yield_on_investment": 6.028230947293448,
"balance": -102060.60416666667
},
{
"year": 6,
"gross_rental_revenue": 49092.5,
"cleaning_fee_collected": 3802.083333333333,
"vacancy": 18409.6875,
"airbnb_hosting_fee": 1472.7749999999999,
"adjusted_gross_income": 33012.120833333334,
"net_rents": 28212.120833333334,
"yield_on_investment": 6.028230947293448,
"balance": -130272.725
},
{
"year": 7,
"gross_rental_revenue": 49092.5,
"cleaning_fee_collected": 3802.083333333333,
"vacancy": 18409.6875,
"airbnb_hosting_fee": 1472.7749999999999,
"adjusted_gross_income": 33012.120833333334,
"net_rents": 28212.120833333334,
"yield_on_investment": 6.028230947293448,
"balance": -158484.84583333333
},
{
"year": 8,
"gross_rental_revenue": 49092.5,
"cleaning_fee_collected": 3802.083333333333,
"vacancy": 18409.6875,
"airbnb_hosting_fee": 1472.7749999999999,
"adjusted_gross_income": 33012.120833333334,
"net_rents": 28212.120833333334,
"yield_on_investment": 6.028230947293448,
"balance": -186696.96666666667
},
{
"year": 9,
"gross_rental_revenue": 49092.5,
"cleaning_fee_collected": 3802.083333333333,
"vacancy": 18409.6875,
"airbnb_hosting_fee": 1472.7749999999999,
"adjusted_gross_income": 33012.120833333334,
"net_rents": 28212.120833333334,
"yield_on_investment": 6.028230947293448,
"balance": -214909.08750000002
},
{
"year": 10,
"gross_rental_revenue": 49092.5,
"cleaning_fee_collected": 3802.083333333333,
"vacancy": 18409.6875,
"airbnb_hosting_fee": 1472.7749999999999,
"adjusted_gross_income": 33012.120833333334,
"net_rents": 28212.120833333334,
"yield_on_investment": 6.028230947293448,
"balance": -243121.20833333337
}
]
}
}
This endpoint retrieves the property's investment breakdown performance for Airbnb or Traditional.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/property/{id}/investment/breakdown
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | The property Id from the Mashvisor database. |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state of the property should be provided to the api or api will throw error 404. | |
airbnb_rental | Double | Monthly Airbnb rental income, ex: 2000 | |
traditional_rental | Double | Monthly traditional rental income, ex: 1700 | |
airbnb_occupancy | Double | num of days per year, or a percentage Based on "is_days" param, eg: 70 as a percentage, or 150 as days | |
traditional_occupancy | Double | num of days per year, or a percentage Based on "is_days" param, eg: 70 as a percentage, or 150 as days | |
is_days | Integer | 0 | If it's set to 0, the "traditional_occupancy" is considered as a percentage, if it's 1, it's considered as num of days per year |
max_bid | Integer | Sets the property listing price to its value | |
startup_cost | Double | 8000 | Startup cost for the investment, e.x: 8000 |
source | String | Airbnb | Defines the monthly calculations should be calculated for "Airbnb" or "Traditional" |
recurring_cost | Double | Recurring cost of the investment strategy, ex: 1435 | |
turnover_cost | Double | Turnover cost |
Get Property Marker
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/property/marker?state=CA&pid=2207289&type=Investment")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/property/marker?state=CA&pid=2207289&type=Investment")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/property/marker');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA',
'pid' => '2207289',
'type' => 'Investment'
));
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/property/marker?state=CA&pid=2207289&type=Investment"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"id": 2207289,
"neighborhood": {
"id": 417524,
"name": "Buena Vista Park"
},
"address": "110 Alpine Terrace",
"city": "San Francisco",
"state": "CA",
"listPrice": 1695000,
"ROI": {
"airbnb_ROI": 0.620426,
"traditional_ROI": -0.208019
},
"Cap": {
"airbnb_Cap": 0.620426,
"traditional_Cap": -0.208019
}
}
}
This endpoint retrieves snapshot data on a specific property.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/property/marker
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
pid | Long | The property Id from the Mashvisor database. | |
state* | String | The state of the property should be provided to the api or API will throw error 404. | |
type | String | Investment, Airbnb, or Traditional | |
payment | String | CASH | CASH, or LOAN |
downPayment | Integer | The downpayment for mortgage calculations, e.g: 40000 | |
loanType | Integer | The loan type, e.g: 30 | |
interestRate | Double | The interest rate for mortgage, e.g: 3.51 | |
loanInterestOnlyYears | Integer | ||
loanArmType | Double | 3/1 | 3/1, 5/1, 7/1, 10/1 |
loanArmRate | Double | .25 | |
startupCost | Double | 8000 | |
loanTerm | Double |
Get Airbnb Comparable Listings
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/neighborhood/269590/airbnb/details?state=IL")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/neighborhood/269590/airbnb/details?state=IL")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/neighborhood/269590/airbnb/details');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'IL'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/neighborhood/269590/airbnb/details?state=IL"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"properties": [
{
"id": 21131720,
"propertyId": "20992111",
"source": "Airbnb",
"status": "ACTIVE",
"nightPrice": 235,
"weeklyPrice": 0,
"monthlyPrice": 0,
"numOfBaths": 2,
"numOfRooms": 4,
"occupancy": 56,
"rentalIncome": 3948,
"airbnbNeighborhoodId": 397651,
"name": "Perfect getaway in the Hudson Valley",
"address": "Red Hook, NY, United States",
"airbnbNeighborhood": null,
"airbnbCity": "Red Hook",
"state": "NY",
"capacityOfPeople": 6,
"zip": "12571",
"propertyType": "House",
"roomType": "Entire home/apt",
"roomTypeCategory": "entire_home",
"amenities": null,
"reviewsCount": 16,
"startRating": 5,
"reviews": null,
"createdAt": "2019-08-19T16:00:19.000Z",
"updatedAt": "2019-08-19T16:00:19.000Z",
"numOfBeds": 4,
"lat": 41.9516716003418,
"lon": -73.77474975585938,
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"url": null,
"rental_income": 3948.0000000000005,
"neighborhood": {
"id": 397651,
"name": null
},
"nightRate": 235,
"property_id": "20992111",
"airbnbZIP": "12571",
"distance": 6.204173070158869,
"similarity": 0.5
},
{
"id": 21131669,
"propertyId": "15235032",
"source": "Airbnb",
"status": "ACTIVE",
"nightPrice": 268,
"weeklyPrice": 0,
"monthlyPrice": 0,
"numOfBaths": 1.5,
"numOfRooms": 2,
"occupancy": 84,
"rentalIncome": 6754,
"airbnbNeighborhoodId": 397651,
"name": "Modern Upstate NY cabin + hot pool in the woods.",
"address": "Red Hook, NY, United States",
"airbnbNeighborhood": null,
"airbnbCity": "Red Hook",
"state": "NY",
"capacityOfPeople": 6,
"zip": "12571",
"propertyType": "Cabin",
"roomType": "Entire home/apt",
"roomTypeCategory": "entire_home",
"amenities": null,
"reviewsCount": 90,
"startRating": 5,
"reviews": null,
"createdAt": "2019-08-19T15:59:49.000Z",
"updatedAt": "2019-08-19T15:59:49.000Z",
"numOfBeds": 3,
"lat": 42.00767135620117,
"lon": -73.7533187866211,
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"url": null,
"rental_income": 6753.599999999999,
"neighborhood": {
"id": 397651,
"name": null
},
"nightRate": 268,
"property_id": "15235032",
"airbnbZIP": "12571",
"distance": 4.958961405286708,
"similarity": 0.48
},
{
"id": 21131735,
"propertyId": "5602615",
"source": "Airbnb",
"status": "ACTIVE",
"nightPrice": 965,
"weeklyPrice": 4000,
"monthlyPrice": 10000,
"numOfBaths": 2.5,
"numOfRooms": 4,
"occupancy": 21,
"rentalIncome": 6080,
"airbnbNeighborhoodId": 397651,
"name": "Lovely Hudson Valley Country Home",
"address": "Red Hook, NY, United States",
"airbnbNeighborhood": null,
"airbnbCity": "Red Hook",
"state": "NY",
"capacityOfPeople": 8,
"zip": "12571",
"propertyType": "House",
"roomType": "Entire home/apt",
"roomTypeCategory": "entire_home",
"amenities": null,
"reviewsCount": 23,
"startRating": 5,
"reviews": null,
"createdAt": "2019-08-19T16:00:26.000Z",
"updatedAt": "2019-08-19T16:00:26.000Z",
"numOfBeds": 4,
"lat": 42.0384407043457,
"lon": -73.8933334350586,
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"url": null,
"rental_income": 6079.5,
"neighborhood": {
"id": 397651,
"name": null
},
"nightRate": 965,
"property_id": "5602615",
"airbnbZIP": "12571",
"distance": 2.569544555210685,
"similarity": 0.53
}
],
"num_of_properties": 23,
"avg_occupancy": 45.913,
"avg_price": 296.1304,
"num_page_properties": 3,
"page": "3"
}
}
This endpoint retrieves neighborhood/area Airbnb data with comparable attributes and within proximity from the target MLS property.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/neighborhood/{id}/airbnb/details
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | The neighborhood Id from the Mashvisor database. |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
page | Integer | 1 | Page number |
items | Integer | 3 | items number |
bedrooms | Integer | bedrooms number | |
pid | Long | Property to fetch comparble listings for. | |
sort_by | String | Sorting type. Possible input: * name * similarity * distance * address * occupancy * night_price * rental_income * num_of_baths * num_of_rooms * reviews_count |
|
order | String | desc | Order type: desc, or asc |
format | String | json | json, or xml |
Get Traditional Comparable Listings
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/neighborhood/397651/traditional/listing?format=json&items=9&order=desc&page=1&pid=325215&sort_by=address&state=ny")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/neighborhood/397651/traditional/listing?format=json&items=9&order=desc&page=1&pid=325215&sort_by=address&state=NY")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/neighborhood/397651/traditional/listing');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'format' => 'json',
'order' => 'desc',
'pid' => '325215',
'state' => 'ny',
'items' => '4',
'page' => '8',
'sort_by' => 'address'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/neighborhood/397651/traditional/listing?format=json&items=9&order=desc&page=1&pid=325215&sort_by=address&state=ny"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"results": [
{
"id": 6699070,
"title": "2-4 Family, Other - Red Hook, NY",
"lon": -73.84407806396484,
"lat": 42.02531051635742,
"state": "NY",
"city": "Red Hook",
"county": "DUTCHESS COUNTY",
"neighborhood": "Red Hook",
"description": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
"price": 2300,
"baths": 2,
"beds": 4,
"num_of_units": null,
"sqft": 2600,
"lot_size": 28314,
"days_on_market": 26,
"year_built": 1810,
"tax": null,
"tax_history": null,
"videos": null,
"virtual_tours": null,
"parking_spots": null,
"parking_type": "Off Street",
"walkscore": null,
"mls_id": "382940",
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"extra_images": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"zipcode": "12571",
"address": "14 SPRING LAKE RD",
"type": "Other",
"property_type": "Rental",
"property_sub_type": "Other",
"source": "GARY DiMAURO REAL ESTATE, INC.",
"architecture_style": "Other",
"has_pool": null,
"is_water_front": null,
"heating_system": "Forced Air",
"cooling_system": "None",
"view_type": null,
"schools": "[{\"category\":\"Elementary\",\"name\":\"Mill Road - Primary Grades\",\"district\":\"Red Hook Central\"},{\"category\":\"High\",\"name\":\"Red Hook Senior High School\",\"district\":\"Red Hook Central\"},{\"category\":\"JuniorHigh\",\"name\":null,\"district\":\"Red Hook Central\"},{\"category\":\"Middle\",\"name\":\"Linden Avenue Middle School\",\"district\":\"Red Hook Central\"}]",
"parcel_number": "13488900637300012828230000",
"neighborhood_id": 397651,
"modification_timestamp": "2019-07-13T00:18:44.000Z",
"created_at": "2019-06-30T01:04:43.000Z",
"updated_at": "2019-07-24T04:27:49.000Z",
"distance": 0.2280876552393839,
"similarity": 0.45
},
{
"id": 6584461,
"title": "Single Family Detached, Ranch - V. Red Hook, NY",
"lon": -73.87642669677734,
"lat": 42.00033187866211,
"state": "NY",
"city": "Red Hook",
"county": null,
"neighborhood": "Red Hook",
"description": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
"price": 2300,
"baths": 2,
"beds": 4,
"num_of_units": null,
"sqft": 1435,
"lot_size": null,
"days_on_market": null,
"year_built": 1950,
"tax": null,
"tax_history": null,
"videos": null,
"virtual_tours": null,
"parking_spots": null,
"parking_type": null,
"walkscore": null,
"mls_id": "376976",
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"extra_images": null,
"zipcode": "12571",
"address": "14 PARK AVENUE",
"type": "single_home",
"property_type": null,
"property_sub_type": null,
"source": "Berkshire Hathaway HomeServices Hudson Valley Properties",
"original_source": null,
"architecture_style": null,
"has_pool": null,
"is_water_front": null,
"heating_system": null,
"cooling_system": null,
"view_type": null,
"schools": null,
"parcel_number": null,
"neighborhood_id": 397651,
"modification_timestamp": null,
"created_at": "2018-11-30T01:21:38.000Z",
"updated_at": "2019-03-08T01:34:44.000Z",
"distance": 2.1697949933012572,
"similarity": 0.6
},
{
"id": 6756141,
"title": "2-4 Family, Other - Red Hook, NY",
"lon": -73.84525299072266,
"lat": 42.03054809570313,
"state": "NY",
"city": "Red Hook",
"county": "DUTCHESS COUNTY",
"neighborhood": "Red Hook",
"description": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
"price": 1450,
"baths": 1,
"beds": 2,
"num_of_units": null,
"sqft": 1100,
"lot_size": 16988,
"days_on_market": 6,
"year_built": 1860,
"tax": null,
"tax_history": null,
"videos": null,
"virtual_tours": null,
"parking_spots": null,
"parking_type": "Off Street",
"walkscore": null,
"mls_id": "384191",
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"extra_images": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png,https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"zipcode": "12571",
"address": "123 OLD POST ROAD NORTH #B",
"type": "Other",
"property_type": "Rental",
"property_sub_type": "Other",
"source": "PAULA REDMOND LIC. R.E. BKR",
"architecture_style": "Other",
"has_pool": null,
"is_water_front": null,
"heating_system": "Hot Water (Oil)",
"cooling_system": "None",
"view_type": null,
"schools": "[{\"category\":\"Elementary\",\"name\":\"Mill Road - Primary Grades\",\"district\":\"Red Hook Central\"},{\"category\":\"High\",\"name\":\"Red Hook Senior High School\",\"district\":\"Red Hook Central\"},{\"category\":\"JuniorHigh\",\"name\":null,\"district\":\"Red Hook Central\"},{\"category\":\"Middle\",\"name\":\"Linden Avenue Middle School\",\"district\":\"Red Hook Central\"}]",
"parcel_number": "13488900637400002520120000",
"neighborhood_id": 397651,
"modification_timestamp": "2019-09-06T03:19:16.000Z",
"created_at": "2019-09-07T04:20:03.000Z",
"updated_at": "2019-09-11T04:08:44.000Z",
"distance": 0.5151012639728284,
"similarity": 0.38
},
{
"id": 3035205,
"title": "2-4 Family, Other - Red Hook, NY",
"lon": -73.84519958496094,
"lat": 42.03060150146484,
"state": "NY",
"city": "Red Hook",
"county": null,
"neighborhood": "Red Hook",
"description": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
"price": 1400,
"baths": 2,
"beds": 2,
"num_of_units": null,
"sqft": 950,
"lot_size": null,
"days_on_market": null,
"year_built": 1860,
"tax": null,
"tax_history": null,
"videos": null,
"virtual_tours": null,
"parking_spots": null,
"parking_type": null,
"walkscore": null,
"mls_id": "379210",
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"extra_images": null,
"zipcode": "12571",
"address": "123 N OLD POST ROAD #A",
"type": "Other",
"property_type": null,
"property_sub_type": null,
"source": "PAULA REDMOND LIC. R.E. BKR",
"original_source": null,
"architecture_style": null,
"has_pool": null,
"is_water_front": null,
"heating_system": null,
"cooling_system": null,
"view_type": null,
"schools": null,
"parcel_number": null,
"neighborhood_id": 397651,
"modification_timestamp": null,
"created_at": "2017-11-03T01:13:44.000Z",
"updated_at": "2019-04-09T01:09:43.000Z",
"distance": 0.5193335664792641,
"similarity": 0.4
}
],
"total_results": 35,
"total_pages": 9,
"current_page": "8"
}
}
This endpoint retrieves neighborhood/area data for traditionally rented properties with comparable attributes and within proximity from the target MLS property.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/neighborhood/{id}/traditional/listing
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | The neighborhood Id from the Mashvisor database. |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
page | Integer | 1 | Page number |
items | Integer | 3 | items number |
category | Integer | bedrooms number | |
min_price | Integer | min_price of rental value | |
max_price | Integer | max_price of rental value | |
pid | Long | Property to fetch comparble listings for. | |
sort_by | String | Sorting type. Possible input: * address * similarity * distance * beds * baths * price |
|
order | String | desc | Order type: desc, or asc |
format | String | json | json, or xml |
Rental Rates
The Rental Rates Object
The Rental Rates Object:
{
"retnal_rates": {
"studio_value": 2100,
"one_room_value": 2500,
"two_room_value": 3890,
"three_room_value": 4997.5,
"four_room_value": 7995
},
"sample_count": 268,
"detailed": [
{
"state": "CA",
"city": null,
"neighborhood": "117954",
"zipcode": null,
"beds": "0",
"count": 7,
"min": 2000,
"max": 3000,
"avg": 2221.4285714285716,
"median": 2100,
"adjusted_rental_income": 2022.3
},
{
"state": "CA",
"city": null,
"neighborhood": "117954",
"zipcode": null,
"beds": "1",
"count": 31,
"min": 995,
"max": 4500,
"avg": 2641.6129032258063,
"median": 2500,
"adjusted_rental_income": 2407.5
},
{
"state": "CA",
"city": null,
"neighborhood": "117954",
"zipcode": null,
"beds": "2",
"count": 136,
"min": 1300,
"max": 7500,
"avg": 3979.8970588235293,
"median": 3890,
"adjusted_rental_income": 3746.07
},
{
"state": "CA",
"city": null,
"neighborhood": "117954",
"zipcode": null,
"beds": "3",
"count": 78,
"min": 645,
"max": 12000,
"avg": 5288.961538461538,
"median": 4997.5,
"adjusted_rental_income": 4812.5925
},
{
"state": "CA",
"city": null,
"neighborhood": "117954",
"zipcode": null,
"beds": "4",
"count": 16,
"min": 4700,
"max": 27000,
"avg": 11459.6875,
"median": 7995,
"adjusted_rental_income": 7699.1849999999995
}
]
}
Mashvisor API allows estimating rental rates for a specific location either for long-term rentals (traditional rent strategy), or for short-term rentals (Airbnb, VRBO, or Homeaway). These estimates are categorized by the number of bedrooms of a target property/location. The estimates are based on 12-month historical performance for the target area and calculated using sampling of similar listings either recently or currently actively rented in the area.
Property Data Dictionary
Attribute | Definition | Possible Returns |
---|---|---|
Studio Value | The expected monthly rent if a studio property is rented out | Double |
One Rroom Value | The expected monthly rent if a one bedroom property is rented out | Double |
Two Room Value | The expected monthly rent if a two bedrooms property is rented out | Double |
Three Room Value | The expected monthly rent if a three bedrooms property is rented out | Double |
Four Room Value | The expected monthly rent if a four bedrooms property is rented out | Double |
Get Rental Rates
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rental-rates?city=Chicago&state=IL&neighborhood=138261&source=airbnb")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/rental-rates?city=Chicago&state=IL&neighborhood=138261&source=airbnb")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/neighborhood/rental-rates');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'city' => 'Chicago',
'state' => 'IL',
'neighborhood' => '138261',
'source' => 'airbnb'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/rental-rates?city=Chicago&state=IL&neighborhood=138261&source=airbnb"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"retnal_rates": {
"studio_value": 2100,
"one_room_value": 2500,
"two_room_value": 3890,
"three_room_value": 4997.5,
"four_room_value": 7995
},
"sample_count": 268,
"detailed": [
{
"state": "CA",
"city": null,
"neighborhood": "117954",
"zipcode": null,
"beds": "0",
"count": 7,
"min": 2000,
"max": 3000,
"avg": 2221.4285714285716,
"median": 2100,
"adjusted_rental_income": 2022.3
},
{
"state": "CA",
"city": null,
"neighborhood": "117954",
"zipcode": null,
"beds": "1",
"count": 31,
"min": 995,
"max": 4500,
"avg": 2641.6129032258063,
"median": 2500,
"adjusted_rental_income": 2407.5
},
{
"state": "CA",
"city": null,
"neighborhood": "117954",
"zipcode": null,
"beds": "2",
"count": 136,
"min": 1300,
"max": 7500,
"avg": 3979.8970588235293,
"median": 3890,
"adjusted_rental_income": 3746.07
},
{
"state": "CA",
"city": null,
"neighborhood": "117954",
"zipcode": null,
"beds": "3",
"count": 78,
"min": 645,
"max": 12000,
"avg": 5288.961538461538,
"median": 4997.5,
"adjusted_rental_income": 4812.5925
},
{
"state": "CA",
"city": null,
"neighborhood": "117954",
"zipcode": null,
"beds": "4",
"count": 16,
"min": 4700,
"max": 27000,
"avg": 11459.6875,
"median": 7995,
"adjusted_rental_income": 7699.1849999999995
}
]
}
}
This endpoint retrieves traditional neighborhood/area data with comparable attributes and within proximity from the target MLS property.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/rental-rates
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
city | String | A specific city you're looking for. | |
neighborhood | Long | Neighborhood id you're targeting | |
zip_code | Integer | Any postal zip code. | |
source | String | Targeting service to fetch estiamtes for. Possible inputs: * airbnb * traditional |
Rento Calculator
Lookup
Sample Request
OkHttpClient client = new OkHttpClient();
// City Level:
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/lookup?state=TX&city=Austin&resource=airbnb&beds=2")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
// Zip Code Level:
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/lookup?state=TX&zip_code=76549&resource=airbnb&beds=2")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
// Address Level:
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/lookup?state=TX&zip_code=76549&resource=airbnb&beds=3&address=3703 Endicott Dr&city=Killeen&lat=31.0778997&lng=-97.7930442")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/rento-calculator/lookup?city=Chicago&state=TX&zip_code=76549&resource=airbnb&beds=2")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/rento-calculator/lookup');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'TX',
'zip_code' => '76549',
'source' => 'airbnb',
'beds' => '2',
'baths' => '2'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/rento-calculator/lookup?state=TX&zip_code=76549&resource=airbnb&beds=2"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"median_home_value": 228750,
"sample_size": 85,
"median_occupancy_rate": 62,
"median_rental_income": 2150,
"median_night_rate": 107,
"adjusted_rental_income": 1957.3064166666668,
"price_to_rent_ratio": 9.739149597467641,
"cash_flow": 673.3064166666669,
"cash_on_cash": 3.4565463101604292,
"cap_rate": 3.532099234972679,
"expenses": 1284,
"tax_rate": 1.8,
"market": {
"id": 5424,
"name": "Killeen",
"city": "Killeen",
"state": "TX",
"country": "US",
"dist": 4.7163794245538995,
"airbnb_regulations": null,
"currency": "USD"
},
"principle_with_interest": 0,
"expenses_map": {
"propertyTax": 343,
"maintenace": 191,
"management": 489,
"rentalIncomeTax": 0,
"insurance": 91,
"utilities": 170,
"hoa_dues": 0,
"cleaningFees": 0
},
"revpar": 66.34,
"revpan": 66.33999999999999
}
}
This endpoint retrieves the lookup location (city, zip code, neighborhood, or street address) and insights for CAP rate, Cash on Cash rate, median home price, occupancy rate, night rate, and rental incomes and rates.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/rento-calculator/lookup
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
city | String | A specific city you're looking for. | |
zip_code | String | Any postal zip code. | |
address | String | Any street address | |
lat | Float | Latitude value | |
lng | Float | Longitude value | |
beds | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
baths | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
home_type | String | Possible inputs: * single family residential * condo/coop * townhouse * multi family * other |
|
resource | String | Default "airbnb" Possible inputs: * airbnb * traditional |
|
neighborhood_id | String | Any Neighborhood Id |
Beds
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/beds?state=TX&zip_code=76549&resource=airbnb&beds=2")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/rento-calculator/beds?state=TX&zip_code=76549&resource=airbnb&beds=2")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/rento-calculator/beds');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'TX',
'zip_code' => '76549',
'source' => 'airbnb',
'beds' => '2',
'baths' => '2'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/rento-calculator/beds?state=TX&zip_code=76549&resource=airbnb&beds=2"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": [
{
"beds": "3",
"count": 18,
"median": 2260.5,
"adjusted_rental_income": 2384.742708333333,
"median_night_rate": 116.5,
"median_occupancy": 61.5,
"cleaning_fee": 120
},
{
"beds": "4",
"count": 6,
"median": 2652,
"adjusted_rental_income": 2857.088194444444,
"median_night_rate": 136.5,
"median_occupancy": 64,
"cleaning_fee": 100
},
{
"beds": "2",
"count": 2,
"median": 2332,
"adjusted_rental_income": 2686.2225694444446,
"median_night_rate": 88.5,
"median_occupancy": 86.5,
"cleaning_fee": 40
},
{
"beds": "5",
"count": 1,
"median": 1307,
"adjusted_rental_income": 1349.4861111111109,
"median_night_rate": 140,
"median_occupancy": 31,
"cleaning_fee": 150
}
]
}
This endpoint retrieves the locations’ count with city, zip code, neighborhood, or street address and its revenue and occupancy breakdown based on the number of bedrooms.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/rento-calculator/beds
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
city | String | A specific city you're looking for. | |
zip_code | String | Any postal zip code. | |
address | String | Any street address | |
lat | Float | Latitude value | |
lng | Float | Longitude value | |
beds | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
baths | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
home_type | String | Possible inputs: * single family residential * condo/coop * townhouse * multi family * other |
|
resource | String | Default "airbnb" Possible inputs: * airbnb * traditional |
|
neighborhood_id | String | Any Neighborhood Id |
Baths
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/baths?state=TX&zip_code=76549&resource=airbnb&beds=2")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/rento-calculator/baths?state=TX&zip_code=76549&resource=airbnb&beds=2")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/rento-calculator/baths');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'TX',
'zip_code' => '76549',
'source' => 'airbnb',
'beds' => '2',
'baths' => '2'));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/rento-calculator/baths?state=TX&zip_code=76549&resource=airbnb&beds=2&_t=QcG6kP3yDnUHD67hWAAQyqrDdFm4gBPW&baths=2"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": [
{
"baths": 2,
"count": 9,
"min": 526,
"max": 2444,
"avg": 1647.3333333333333,
"median": 1760,
"adjusted_rental_income": 2089.625,
"median_night_rate": 97,
"median_occupancy": 63
},
{
"baths": 1,
"count": 6,
"min": 537,
"max": 2176,
"avg": 1393.6666666666667,
"median": 1391,
"adjusted_rental_income": 1711.2416666666666,
"median_night_rate": 74,
"median_occupancy": 64.5
}
]
}
This endpoint retrieves the locations’ count with city, zip code, neighborhood, or street address and its revenue and occupancy breakdown based on the number of bathrooms.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/rento-calculator/baths
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
city | String | A specific city you're looking for. | |
zip_code | String | Any postal zip code. | |
address | String | Any street address | |
lat | Float | Latitude value | |
lng | Float | Longitude value | |
beds | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
baths | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
home_type | String | Possible inputs: * single family residential * condo/coop * townhouse * multi family * other |
|
resource | String | Default "airbnb" Possible inputs: * airbnb * traditional |
|
neighborhood_id | String | Any Neighborhood Id |
Nearby Listings
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/nearby-listings?state=TX&zip_code=76549&resource=airbnb&beds=2")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/rento-calculator/nearby-listings?state=TX&zip_code=76549&resource=airbnb&beds=2")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/rento-calculator/nearby-listings');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'TX',
'zip_code' => '76549',
'source' => 'airbnb',
'beds' => '2',
'baths' => '2'));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/rento-calculator/nearby-listings?state=TX&zip_code=76549&resource=airbnb&beds=2&_t=QcG6kP3yDnUHD67hWAAQyqrDdFm4gBPW&baths=2"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": [
{
"address": "2413 Royal Crest Circle",
"city": "Killeen",
"state": "TX",
"zip": 76549,
"beds": 2,
"baths": 2,
"home_type": "Townhouse",
"list_price": 105000,
"neighborhood": "Killeen",
"image_url": "http://photos.listhub.net/SMABOR/448457/1?lm=20210811T133003",
"sqft": 1072,
"mls_id": "448457",
"days_on_market": 8,
"last_sale_date": null,
"last_sale_price": null,
"listing_id": "448457",
"has_pool": null,
"is_water_front": null,
"num_of_units": null,
"latitude": 31.1124,
"longitude": -97.7669,
"traditional_ROI": 2.456,
"airbnb_ROI": 8.98189,
"traditional_rental": 601.417,
"airbnb_rental": 1709.72,
"traditional_cap": 2.456,
"airbnb_cap": 8.98189
}
]
}
This endpoint retrieves the top 5 locations (city, zip code, neighborhood, or a street address) MLS listings in the area.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/rento-calculator/nearby-listings
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
city | String | A specific city you're looking for. | |
zip_code | String | Any postal zip code. | |
address | String | Any street address | |
lat | Float | Latitude value | |
lng | Float | Longitude value | |
beds | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
baths | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
home_type | String | Possible inputs: * single family residential * condo/coop * townhouse * multi family * other |
|
resource | String | Default "airbnb" Possible inputs: * airbnb * traditional |
|
neighborhood_id | String | Any Neighborhood Id |
Rental Activity Data
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/rental-activity-data?state=TX&zip_code=76549&resource=airbnb")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/rento-calculator/rental-activity-data?state=TX&zip_code=76549&resource=airbnb")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/rento-calculator/rental-activity-data');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'TX',
'zip_code' => '76549',
'source' => 'airbnb'));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/rento-calculator/rental-activity-data?state=TX&zip_code=76549&resource=airbnb"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": [
[
{
"count": 14,
"sale_quarter": "quarter_1-90_day",
"book_range": "1-90"
},
{
"count": 12,
"sale_quarter": "quarter_181-270_day",
"book_range": "181-270"
},
{
"count": 7,
"sale_quarter": "quarter_272-365_day",
"book_range": "271-365"
},
{
"count": 14,
"sale_quarter": "quarter_91-180_day",
"book_range": "91-180"
}
],
[
{
"count": 5,
"sale_quarter": "quarter_1-90_day",
"unbook_range": "1-90"
},
{
"count": 16,
"sale_quarter": "quarter_181-270_day",
"unbook_range": "181-270"
},
{
"count": 14,
"sale_quarter": "quarter_272-365_day",
"unbook_range": "271-365"
},
{
"count": 12,
"sale_quarter": "quarter_91-180_day",
"unbook_range": "91-180"
}
]
]
}
This endpoint retrieves the Airbnb location rental activity performance grouped by booked and unbooked nights.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/rento-calculator/rental-activity-data
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
city | String | A specific city you're looking for. | |
zip_code | String | Any postal zip code. | |
address | String | Any street address | |
lat | Float | Latitude value | |
lng | Float | Longitude value | |
beds | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
baths | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
home_type | String | Possible inputs: * single family residential * condo/coop * townhouse * multi family * other |
|
resource | String | Default "airbnb" Possible inputs: * airbnb * traditional |
|
neighborhood_id | String | Any Neighborhood Id |
Export Comps
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/export-comps?state=TX&zip_code=76549&resource=airbnb")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/rento-calculator/export-comps?state=TX&zip_code=76549&resource=airbnb")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/rento-calculator/export-comps');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'TX',
'zip_code' => '76549',
'source' => 'airbnb'));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/rento-calculator/export-comps?state=TX&zip_code=76549&resource=airbnb"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"status": 100,
"link": "https://storage.googleapis.com/exports.mashvisor.com/devel%2F8bf2c526-e5a7-4bdb-aa8d-92d7f74ac4fc.xlsx?GoogleAccessId=cultivated-link-832.mashvisor.com@appspot.gserviceaccount.com&Expires=1629616428&Signature=kcQWaA6MZFfwfGMhtZw2YVwBCL3uuReS9vF5JNr%2B3pRElB3A9CF%2B8IfhiXZD5a9T0RlC%2FoE5Es%2F6olpx3sk2aXCnE8BJbZ7Qyjm4yDfguBOY2t%2FZ2qPmZKHHELl%2FZlSYzHGMxUC%2BVI0RisjURNYwSmYy4VPIY9PjXqhXNzX24XOimcuLVfIkpfIsT%2Fos%2F4WKUcXAZIOtIDuZOBhWLbnWE%2BlkePfXpZRuTf1%2Bg0LBSBD0qxlSrksECtKcgg2Q7mVZ0iE%2FcpJJwZfHuVpUexlVODZLagyb1OZBpVvflwdvZcvErrhKuImxl8l3Wp0vSura2B6GVd1dAy5dgrlCC6d5VQ%3D%3D"
}
}
This endpoint retrieves the export of all listings used in the analysis for a specific area based on the inputs for the city, zip code, and the neighborhood/street address.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/rento-calculator/export-comps
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
city | String | A specific city you're looking for. | |
zip_code | String | Any postal zip code. | |
address | String | Any street address | |
lat | Float | Latitude value | |
lng | Float | Longitude value | |
beds | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
baths | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
home_type | String | Possible inputs: * single family residential * condo/coop * townhouse * multi family * other |
|
resource | String | Default "airbnb" Possible inputs: * airbnb * traditional |
|
neighborhood_id | String | Any Neighborhood Id |
List Comps
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/list-comps?state=TX&zip_code=76549&resource=airbnb&beds=2")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/rento-calculator/list-comps?state=TX&zip_code=76549&resource=airbnb&beds=2")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/rento-calculator/list-comps');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'TX',
'zip_code' => '76549',
'source' => 'airbnb',
'beds' => '2',
'baths' => '2'));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/rento-calculator/list-comps?state=TX&zip_code=76549&resource=airbnb&beds=2"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"total_pages": 1,
"page": 1,
"list": [
{
"id": 31072743,
"property_id": "40677385",
"source": "Airbnb",
"status": "ACTIVE",
"night_priceـnative": 107,
"night_price": 80,
"weekly_price": 0,
"monthly_price": 0,
"cleaning_fee_native": 55,
"num_of_baths": 2,
"num_of_rooms": 2,
"occupancy": 91,
"nights_booked": 333,
"rental_income": 2220,
"airbnb_neighborhood_id": 5424,
"name": "Blue House at Ft Hood, 2/2, King, W/D, Big Yard",
"address": "Killeen, TX, United States",
"airbnb_neighborhood": null,
"airbnb_city": "Killeen",
"state": "TX",
"capacity_of_people": 6,
"zip": "76549",
"property_type": "House",
"room_type": "Entire home/apt",
"room_type_category": "entire_home",
"amenities": null,
"reviews_count": 45,
"start_rating": 5,
"reviews": null,
"created_at": "2021-08-16T12:08:36.000Z",
"updated_at": "2021-08-16T12:08:36.000Z",
"num_of_beds": 3,
"lat": 31.1044,
"lon": -97.768,
"image": "https://a0.muscache.com/im/pictures/59162131-c52a-4762-a10b-8adae3e1aae0.jpg?aki_policy=medium",
"url": null,
"listing_name": "Blue House at Ft Hood, 2/2, King, W/D, Big Yard"
},
{
"id": 31072890,
"property_id": "48955740",
"source": "Airbnb",
"status": "ACTIVE",
"night_priceـnative": 99,
"night_price": 97,
"weekly_price": 0,
"monthly_price": 0,
"cleaning_fee_native": 25,
"num_of_baths": 2,
"num_of_rooms": 2,
"occupancy": 82,
"nights_booked": 126,
"rental_income": 2444,
"airbnb_neighborhood_id": 5424,
"name": "Your Home away from Home!!!",
"address": "Killeen, TX, United States",
"airbnb_neighborhood": null,
"airbnb_city": "Killeen",
"state": "TX",
"capacity_of_people": 4,
"zip": "76549",
"property_type": "House",
"room_type": "Entire home/apt",
"room_type_category": "entire_home",
"amenities": null,
"reviews_count": 13,
"start_rating": 5,
"reviews": null,
"created_at": "2021-08-16T12:08:53.000Z",
"updated_at": "2021-08-16T12:08:53.000Z",
"num_of_beds": 2,
"lat": 31.0922,
"lon": -97.7583,
"image": "https://a0.muscache.com/im/pictures/e5074c00-de3c-4cc2-b822-01da981d8cc7.jpg?aki_policy=medium",
"url": null,
"listing_name": "Your Home away from Home!!!"
}
],
"count": 2
}
}
This endpoint retrieves the list of all listings used in the analysis for a specific area based on the inputs for the city, zip code, and the neighborhood/street address.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/rento-calculator/list-comps
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
city | String | A specific city you're looking for. | |
zip_code | String | Any postal zip code. | |
address | String | Any street address | |
lat | Float | Latitude value | |
lng | Float | Longitude value | |
beds | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
baths | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
home_type | String | Possible inputs: * single family residential * condo/coop * townhouse * multi family * other |
|
resource | String | Default "airbnb" Possible inputs: * airbnb * traditional |
|
neighborhood_id | String | Any Neighborhood Id | |
page | Integer | 1 | Page number |
Historical Performance
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/historical-performance?city=Miami&state=fl&neighborhood_id=269093&resource=airbnb")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/rento-calculator/historical-performance?city=Miami&state=fl&neighborhood_id=269093&resource=airbnb")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/rento-calculator/historical-performance');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'TX',
'zip_code' => '76549',
'source' => 'airbnb',
'beds' => '2',
'baths' => '2'));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/rento-calculator/historical-performance?city=Miami&state=fl&neighborhood_id=269093&resource=airbnb"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"rental_income_yoy_changes": -33.02289322724056,
"night_price_yoy_changes": 5.320001591623517,
"occupancy_yoy_changes": -34.84511338350376,
"historical_performance": [
{
"rental_income": null,
"night_price": null,
"occupancy": null,
"month": 1,
"year": 2023,
"date": "1-2023"
},
{
"rental_income": 1115.0851063829787,
"night_price": 197.10638297872342,
"occupancy": 27.72340425531915,
"month": 12,
"year": 2022,
"date": "12-2022"
},
{
"rental_income": 1105.3829787234042,
"night_price": 181.36170212765958,
"occupancy": 29.851063829787233,
"month": 11,
"year": 2022,
"date": "11-2022"
},
{
"rental_income": 1795.2340425531916,
"night_price": 180.53191489361703,
"occupancy": 41.361702127659576,
"month": 10,
"year": 2022,
"date": "10-2022"
},
{
"rental_income": 1074.4255319148936,
"night_price": 175.7872340425532,
"occupancy": 26.914893617021278,
"month": 9,
"year": 2022,
"date": "9-2022"
},
{
"rental_income": 813.6170212765958,
"night_price": 188.46808510638297,
"occupancy": 24.361702127659573,
"month": 8,
"year": 2022,
"date": "8-2022"
},
{
"rental_income": 1508.0425531914893,
"night_price": 213.5531914893617,
"occupancy": 31.02127659574468,
"month": 7,
"year": 2022,
"date": "7-2022"
},
{
"rental_income": 589.6170212765958,
"night_price": 192.70212765957447,
"occupancy": 15.595744680851064,
"month": 6,
"year": 2022,
"date": "6-2022"
},
{
"rental_income": 1270.1739130434783,
"night_price": 194.47826086956522,
"occupancy": 28.891304347826086,
"month": 5,
"year": 2022,
"date": "5-2022"
},
{
"rental_income": 2631.782608695652,
"night_price": 206.8913043478261,
"occupancy": 52.76086956521739,
"month": 4,
"year": 2022,
"date": "4-2022"
},
{
"rental_income": 2040.6097560975609,
"night_price": 246.58536585365854,
"occupancy": 32.80487804878049,
"month": 3,
"year": 2022,
"date": "3-2022"
},
{
"rental_income": 1664.875,
"night_price": 187.15,
"occupancy": 42.55,
"month": 2,
"year": 2022,
"date": "2-2022"
}
]
}
}
This endpoint retrieves the historical performance of all listings used in the analysis for a specific area based on the inputs for the city, zip code, and the neighborhood/street address.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/rento-calculator/historical-performance
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
city | String | A specific city you're looking for. | |
zip_code | String | Any postal zip code. | |
address | String | Any street address | |
lat | Float | Latitude value | |
lng | Float | Longitude value | |
beds | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
baths | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
home_type | String | Possible inputs: * single family residential * condo/coop * townhouse * multi family * other |
|
resource | String | Default "airbnb" Possible inputs: * airbnb * traditional |
|
neighborhood_id | String | Any Neighborhood Id |
Property Types
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/property-types?state=TX&zip_code=76549&resource=airbnb")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/rento-calculator/property-types?state=TX&zip_code=76549&resource=airbnb")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/rento-calculator/property-types');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'TX',
'zip_code' => '76549',
'source' => 'airbnb'));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/rento-calculator/property-types?state=TX&zip_code=76549&resource=airbnb"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": [
{
"property_type": "House",
"count": 25,
"min": 238,
"max": 3752,
"avg": 2083.44,
"median": 2238,
"adjusted_rental_income": 2346.848611111111,
"median_night_rate": 109,
"median_occupancy": 64
},
{
"property_type": "Apartment",
"count": 13,
"min": 537,
"max": 2470,
"avg": 1626.5384615384614,
"median": 1688,
"adjusted_rental_income": 1782.923611111111,
"median_night_rate": 89,
"median_occupancy": 58
},
{
"property_type": "Townhouse",
"count": 7,
"min": 526,
"max": 3098,
"avg": 1943,
"median": 1887,
"adjusted_rental_income": 2521.6430555555553,
"median_night_rate": 123,
"median_occupancy": 62
},
{
"property_type": "Tiny house",
"count": 1,
"min": 992,
"max": 992,
"avg": 992,
"median": 992,
"adjusted_rental_income": 1272.4305555555557,
"median_night_rate": 50,
"median_occupancy": 65
},
{
"property_type": "Condominium",
"count": 1,
"min": 1018,
"max": 1018,
"avg": 1018,
"median": 1018,
"adjusted_rental_income": 1346.951388888889,
"median_night_rate": 45,
"median_occupancy": 74
}
]
}
This endpoint retrieves the search for property types and their key metrics for a specific area based on the inputs for the city, zip code, and the neighborhood/street address.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/rento-calculator/property-types
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
city | String | A specific city you're looking for. | |
zip_code | String | Any postal zip code. | |
address | String | Any street address | |
lat | Float | Latitude value | |
lng | Float | Longitude value | |
beds | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
baths | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
home_type | String | Possible inputs: * single family residential * condo/coop * townhouse * multi family * other |
|
resource | String | Default "airbnb" Possible inputs: * airbnb * traditional |
|
neighborhood_id | String | Any Neighborhood Id |
Revenue Stats
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/rento-calculator/revenue-stats?state=TX&zip_code=76549&resource=airbnb")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/rento-calculator/revenue-stats?state=TX&zip_code=76549&resource=airbnb")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/rento-calculator/revenue-stats');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'TX',
'zip_code' => '76549',
'source' => 'airbnb'));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/rento-calculator/revenue-stats?state=TX&zip_code=76549&resource=airbnb"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"count": 47,
"rental_income": {
"adjusted_rental_income": 180.22719907407406,
"median": 1887,
"min": 238,
"max": 3752,
"avg": 1890.2553191489362,
"percentile_20": 1191,
"percentile_10": 845.2000000000002,
"percentile_5": 529.3,
"percentile_80": 2586.0000000000005,
"percentile_90": 2843.7999999999997,
"percentile_95": 3116.9
},
"occuapncy_rate": {
"median": 62,
"min": 15,
"max": 100,
"avg": 60.04255319148936,
"percentile_20": 42.2,
"percentile_10": 28.6,
"percentile_5": 19.1,
"percentile_80": 79.80000000000003,
"percentile_90": 84.19999999999999,
"percentile_95": 89.79999999999998
},
"median_night_rate": 103
}
}
This endpoint retrieves the count of properties, revenue, and occupancy statistics for a specific area based on the inputs for the city, zip code, and the neighborhood/street address.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/rento-calculator/revenue-stats
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state | String | The state of the neighborhood should be provided to the api or api will throw error 404. | |
city | String | A specific city you're looking for. | |
zip_code | String | Any postal zip code. | |
address | String | Any street address | |
lat | Float | Latitude value | |
lng | Float | Longitude value | |
beds | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
baths | Integer | Possible inputs: * 0 * 1 * 2 * 3 * 4 * 5 |
|
home_type | String | Possible inputs: * single family residential * condo/coop * townhouse * multi family * other |
|
resource | String | Default "airbnb" Possible inputs: * airbnb * traditional |
|
neighborhood_id | String | Any Neighborhood Id |
Predictive Scores
Investment Likelihood
Sample Request
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, '{"airbnb_ROI":9.33728,"airbnb_rental":3235.36,"traditional_ROI":1.92281,"traditional_rental":1270,"baths":10,"beds":10,"days_on_market":152,"home_type":"Multi Family","list_price":599000,"sqft":2000}');
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/ml/investment-likelihood")
.post(body)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/ml/investment-likelihood")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
request["Postman-Token"] = 'd84dcf05-a554-48d1-a7c4-a675b624dfb3'
request.body = '{"airbnb_ROI":9.33728,"airbnb_rental":3235.36,"traditional_ROI":1.92281,"traditional_rental":1270,"baths":10,"beds":10,"days_on_market":152,"home_type":"Multi Family","list_price":599000,"sqft":2000}'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/ml/investment-likelihood');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'Content-Type' => 'application/json'
));
$request->setBody('{"airbnb_ROI":9.33728,"airbnb_rental":3235.36,"traditional_ROI":1.92281,"traditional_rental":1270,"baths":10,"beds":10,"days_on_market":152,"home_type":"Multi Family","list_price":599000,"sqft":2000}');
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/ml/investment-likelihood"
payload := strings.NewReader('{"airbnb_ROI":9.33728,"airbnb_rental":3235.36,"traditional_ROI":1.92281,"traditional_rental":1270,"baths":10,"beds":10,"days_on_market":152,"home_type":"Multi Family","list_price":599000,"sqft":2000}')
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"contact": {
"prediction": {
"Value": 1
},
"prediction_likelihood": {
"Value": 67.31213123
}
}
},
"message": "prediction_likelihood succeeded"
}
“Property Finder” is the functionality supported by the Investment Likelihood machine learning model, predicting the investment feasibility score for each MLS listing. Users can search for up to 5 areas concurrently for potential investments.
The model has achieved over 86% of accuracy score and is being optimized on an ongoing basis, using enriched data sets and enhanced methodology.
HTTP Request
POST https://api.mashvisor.com/v1.1/client/ml/investment-likelihood
HTTP Headers
Header | Value | Default |
---|---|---|
Content-Type | application/json | |
x-api-key | User Authentication Header |
Body Parameters
Parameter | Value | Required | Description |
---|---|---|---|
airbnb_ROI | Double | YES | Airbnb cash on cash (rent over investment) |
airbnb_rental | Double | YES | Airbnb monthly rental income |
traditional_ROI | Double | YES | Airbnb cash on cash (rent over investment) |
traditional_rental | Double | YES | Traditional monthly rental income |
baths | Integer | YES | Property bathrooms |
beds | Integer | YES | Property bedrooms |
days_on_market | Integer | NO Replace it with 0 with when missed |
How many days the listing has been active on market |
home_type | String | YES | Property home type Possible input: * Condo/Coop * Multi Family * Other * Single Family Residential * Townhouse |
list_price | Integer | NO Replace it with 0 with when missed |
Property list price |
sqft | Integer | NO Replace it with 0 with when missed |
Property sqft value |
Mashmeter
Sample Request
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, '{"airbnb_listings":1104,"median_airbnb_coc":6.60582,"airbnb_price_to_rent_ratio":27.884447053896,"traditional_listings":7,"median_traditional_coc":0.7074975,"traditional_price_to_rent_ratio":28.650655961001,"walkscore":55}');
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/ml/mashmeter")
.post(body)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/ml/mashmeter")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
request["Postman-Token"] = 'd84dcf05-a554-48d1-a7c4-a675b624dfb3'
request.body = '{"airbnb_listings":1104,"median_airbnb_coc":6.60582,"airbnb_price_to_rent_ratio":27.884447053896,"traditional_listings":7,"median_traditional_coc":0.7074975,"traditional_price_to_rent_ratio":28.650655961001,"walkscore":55}'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/ml/mashmeter');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'Content-Type' => 'application/json'
));
$request->setBody('{"airbnb_listings":1104,"median_airbnb_coc":6.60582,"airbnb_price_to_rent_ratio":27.884447053896,"traditional_listings":7,"median_traditional_coc":0.7074975,"traditional_price_to_rent_ratio":28.650655961001,"walkscore":55}');
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/ml/mashmeter"
payload := strings.NewReader('{"airbnb_listings":1104,"median_airbnb_coc":6.60582,"airbnb_price_to_rent_ratio":27.884447053896,"traditional_listings":7,"median_traditional_coc":0.7074975,"traditional_price_to_rent_ratio":28.650655961001,"walkscore":55}')
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"traditional_mashmeter": "75.09",
"airbnb_mashmeter": "67.79",
"traditional_weight": "0.46",
"airbnb_weight": "2.52",
"strategy": "Airbnb",
"mashmeter": "67.79"
},
"message": "Mashmeter values fetched successfully"
}
Mashmeter is a blended dynamic model utilizing real-time data with an output showing a low to high propensity for investment property returns, combined with a specific market investment opportunity.
HTTP Request
POST https://api.mashvisor.com/v1.1/client/ml/mashmeter
HTTP Headers
Header | Value | Default |
---|---|---|
Content-Type | application/json | |
x-api-key | User Authentication Header |
Body Parameters
Parameter | Value | Default | Description |
---|---|---|---|
airbnb_listings | Integer | Number of properties listed for sale in a given neighbourhood | |
median_airbnb_coc | Double | Median Airbnb cash on cash (rent over investment) for a neighborhood | |
airbnb_price_to_rent_ratio | Double | Airbnb price to rent ratio | |
traditional_listings | Integer | Number of properties listed on Airbnb in a given neighbourhood | |
median_traditional_coc | Double | Median traditional cash on cash (rent over investment) for a neighborhood | |
traditional_price_to_rent_ratio | Double | Traditional price to rent ratio | |
walkscore | Integer | Neighborhood Walkscore value |
Property Recommender
Sample Request
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, '{"AgeRange":"45-54","WealthScore":"50.0","Gender":"Female","EstimatedHouseholdIncome":"> $250,000","PresenceOfChildren":"YES","NumberOfChildren":"1","MaritalStatusInHousehold":"Single","Investing":"YES","EstWealth":"> $499,999","NumberCreditLines":"1","LengthOfResidence":"11 - 15 years","Sale1 Transfer Amt":"590000.0","BusinessOwner":"UNKNOWN"}');
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/ml/recommended_property")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/ml/recommended_property")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
request["Postman-Token"] = 'd84dcf05-a554-48d1-a7c4-a675b624dfb3'
request.body = '{"AgeRange":"45-54","WealthScore":"50.0","Gender":"Female","EstimatedHouseholdIncome":"> $250,000","PresenceOfChildren":"YES","NumberOfChildren":"1","MaritalStatusInHousehold":"Single","Investing":"YES","EstWealth":"> $499,999","NumberCreditLines":"1","LengthOfResidence":"11 - 15 years","Sale1 Transfer Amt":"590000.0","BusinessOwner":"UNKNOWN"}'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/ml/recommended_property');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY',
'Content-Type' => 'application/json'
));
$request->setBody('{"AgeRange":"45-54","WealthScore":"50.0","Gender":"Female","EstimatedHouseholdIncome":"> $250,000","PresenceOfChildren":"YES","NumberOfChildren":"1","MaritalStatusInHousehold":"Single","Investing":"YES","EstWealth":"> $499,999","NumberCreditLines":"1","LengthOfResidence":"11 - 15 years","Sale1 Transfer Amt":"590000.0","BusinessOwner":"UNKNOWN"}');
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/ml/recommended_property"
payload := strings.NewReader('{"AgeRange":"45-54","WealthScore":"50.0","Gender":"Female","EstimatedHouseholdIncome":"> $250,000","PresenceOfChildren":"YES","NumberOfChildren":"1","MaritalStatusInHousehold":"Single","Investing":"YES","EstWealth":"> $499,999","NumberCreditLines":"1","LengthOfResidence":"11 - 15 years","Sale1 Transfer Amt":"590000.0","BusinessOwner":"UNKNOWN"}')
req, _ := http.NewRequest("POST", url, payload)
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, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"property_type": {
"Condo/Coop": 69
},
"bedrooms": {
"1": 95
},
"bathrooms": {
"['1', '2']": 57.4
},
"home_value": {
"> $1,000,000": 71.5
}
}
}
The API returns a JSON object with data representing specifications for recommended properties based on an input consisting of demographics and other data. The returned data includes property type, number of beds/baths, and the home value.
HTTP Request
POST https://api.mashvisor.com/v1.1/client/ml/recommended_property
HTTP Headers
Header | Value | Default |
---|---|---|
Content-Type | application/json | |
x-api-key | User Authentication Header |
Body Parameters
Parameter | Value | Default | Description |
---|---|---|---|
AgeRange | String | Person age range Possbile Inputs: * '18-24' * '25-34' * '35-44' * '45-54' * '55-64' * '65-74' * '75+' * 'UNKNOWN' |
|
WealthScore | Integer | Any from 0 to 100 Or 'UNKNOWN' |
|
Gender | String | Possbile Inputs: * Male * Female * UNKNOWN |
|
EstimatedHouseholdIncome | String | Possbile Inputs: * '< $20,000' * '$10,000-49,999' * '$50,000-99,999' * '$100,000-149,999' * '$150,000-199,999' * '$200,000-249,999' * $250,000' *'UNKNOWN' |
|
PresenceOfChildren | String | Possbile Inputs: * 'YES' * UNKNOWN |
|
NumberOfChildren | String | Any positive integer number If missing, value should be sent as -1 |
|
MaritalStatusInHousehold | String | Possbile Inputs: * Married * Signle * UNKNOWN |
|
Investing | String | Possbile Inputs: * 'YES' * UNKNOWN |
|
EstWealth | String | Possbile Inputs: * '< $1' *'$1-4,999' *'$5,000-9,999' *'$10,000-24,999' *'$25,000-49,999' *'$50,000-99,999' *'$100,000-249,999' *'$250,000-499,999' *'>$499,999' *'UNKNOWN' |
|
NumberCreditLines | String | Any positive integer number | |
LengthOfResidence | String | Possbile Inputs: * '1 - 4 year' * '11 - 15 years' * '5 - 10 years' * UNKNOWN |
|
Sale1 Transfer Amt | String | Any positive number | |
BusinessOwner | String | Possbile Inputs: * Accountant * 'Contractor' * 'Owner','Partner' *'Person Owns a Business' * Self Employed' * 'UNKNOWN' |
Short Term Rentals
Mashvisor provides data and analysis for different short-term rental services, including AirBnB, HomeAway, and VRBO.
Mashvisor has one of the largest databases (over 2.5M+ records) of historical short-term rental data with detailed property information, reviews, photos, host information, and a yearly calendar of daily booking availability and booking price per night.
Our short-term occupancy calculator is supported by an algorithm calculating the occupancy rate for each listing based on the properties’ historical performance and available future bookings. Our algorithms can differentiate between booked and blocked days, and estimate monthly rental income for future bookings.
We have established a validation process for occupancy rates calculations with verified Airbnb hosts to ensure higher accuracy and certify our data.
Get Airbnb Listing Info
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/airbnb-property/22518616?state=AZ")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/property/22518616?state=AZ")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/airbnb-property/22518616');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'AZ'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/property/22518616?state=AZ"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"id": 21419158,
"city": "Tempe",
"picture_url": "https://a0.muscache.com/4ea/air/v2//pictures/81b62204-5602-49e9-83af-baf5a2477dcb.jpg?t=r:w1200-h720-sfit,e:fjpg-c85",
"thumbnail_url": "https://a0.muscache.com/im/pictures/81b62204-5602-49e9-83af-baf5a2477dcb.jpg?aki_policy=small",
"medium_url": "https://a0.muscache.com/im/pictures/81b62204-5602-49e9-83af-baf5a2477dcb.jpg?aki_policy=medium",
"xl_picture_url": "https://a0.muscache.com/im/pictures/81b62204-5602-49e9-83af-baf5a2477dcb.jpg?aki_policy=x_large",
"user_id": 2158239,
"price": 250,
"native_currency": "USD",
"price_native": 250,
"price_formatted": "$250",
"lat": 33.4433,
"lng": -111.9222,
"country": "United States",
"name": "Luxury Three Story Home with Two Balconies",
"smart_location": "Tempe, AZ",
"has_double_blind_reviews": false,
"instant_bookable": false,
"bedrooms": 4,
"beds": 5,
"bathrooms": 3.5,
"market": "Phoenix",
"min_nights": 1,
"neighborhood": null,
"person_capacity": 9,
"state": "AZ",
"zipcode": "85281",
"address": "Tempe, AZ, United States",
"country_code": "US",
"cancellation_policy": "moderate",
"property_type": "House",
"reviews_count": 41,
"room_type": "Entire home/apt",
"room_type_category": "entire_home",
"picture_count": 42,
"currency_symbol_left": "$",
"currency_symbol_right": null,
"bed_type": "Real Bed",
"bed_type_category": "real_bed",
"require_guest_profile_picture": false,
"require_guest_phone_verification": false,
"force_mobile_legal_modal": false,
"cancel_policy": 4,
"check_in_time": 15,
"check_out_time": 10,
"guests_included": 4,
"license": null,
"max_nights": 1125,
"square_feet": null,
"locale": "en",
"has_viewed_terms": null,
"has_viewed_cleaning": null,
"has_agreed_to_legal_terms": null,
"has_viewed_ib_perf_dashboard_panel": null,
"language": "en",
"public_address": "Tempe, AZ, United States",
"map_image_url": "https://maps.googleapis.com/maps/api/staticmap?maptype=roadmap&markers=33.4433%2C-111.9222&size=480x320&zoom=15&client=gme-airbnbinc&channel=monorail-prod&signature=QM7Jbt_vQkf3Nodd5X4RELn0InM%3D",
"experiences_offered": "none",
"max_nights_input_value": null,
"min_nights_input_value": 1,
"requires_license": false,
"property_type_id": 2,
"house_rules": "- No smoking inside the house\n- No pets allowed\n- No parties or large gatherings (smaller events or gatherings considered with prior homeowner approval)\n- Must be at least 25 years old to book\n- Additional fees and taxes may apply\n- Photo ID may be required upon check-in\n- No early check-in/out during Nov-Apr.\n- Extra cleaning charge will be reported to Airbnb if the house needs extensive cleaning efforts (longer than 3 hours: $55/hour)\n-Please do not park the car in front of the garage door.",
"security_deposit_native": 200,
"security_price_native": 200,
"security_deposit_formatted": "$200",
"description": "Bask in the sun on one of the two lovely balconies, or socialise at the pool, at this dreamy desert getaway. Utilise the comfy bedrooms on all three floors, cook a gourmet meal in the high-end kitchen and watch TV on the giant projection screen.",
"description_locale": "en",
"summary": "Bask in the sun on one of the two lovely balconies, or socialise at the pool, at this dreamy desert getaway. Utilise the comfy bedrooms on all three floors, cook a gourmet meal in the high-end kitchen and watch TV on the giant projection screen.",
"space": "Master Bedroom: King Bed | Bedroom 2: Queen Bed | Bedroom 3: Queen Bed, Twin Trundle Bed | Bedroom 4 (1st floor): Queen Sleeper Sofa \n\nNestled in the pristine Newport community, this spacious home is designed to impress with modern elegance and comfortable furnishings. \n\nJust steps from your home-away-from-home is the shared outdoor pool and spa. Dive into relaxation in this pristine body of water or enjoy a soothing soak in the jacuzzi for optimal holiday relaxation. \n\nWhen you're not lounging poolside, unwind in the living area, featuring plush sofas, a stereo, smart home system, and a Smart TV with cable channels and a large projector screen. \n\nYou'll want to put your culinary skills to the test in the high-end kitchen, adorned with stainless steel appliances, sleek countertops, a breakfast bar, and a farmhouse sink. Enjoy your home-cooked cuisine at the 2-person breakfast bar or at the dining room table with seating for 6. \n\nFor a front-row seat to colorful Arizona sunsets, retreat upstairs to the private rooftop patio, with seating for 2 and picturesque Tempe views. The property also features a second-floor balcony - the perfect place to jumpstart your day with a cup of coffee or end it with an evening nightcap.\n\nRetire to the well-appointed master bedroom, offering a king-sized bed and an en-suite bathroom with a large shower and bathtub. Sleep will come easy in Bedrooms 2 and 3, boasting high-quality memory foam queen mattresses. Additional sleeping can be found in the downstairs 4th bedroom with high-end foam mattress queen-sized sleeper sofa.",
"access": "Guest has access to the whole house. Just make it your own home in the dessert.",
"interaction": "Keyless entry and self check in is available. Instruction will be sent to you after booking.",
"neighborhood_overview": "Visit boutiques, museums, galleries, live theatre, gourmet fare and more in these lively cities, or head out into nature for more adventure. Downtown Tempe is just a stone's throw away, and Old Scottsdale is only 15 minutes away.",
"transit": "Rental car is highly recommended. Although uber/Lyft are also very convenient to use in town. There’s also free flash to go to ASU and downtown. \nWe have two bikes you can use for free.",
"amenities": [
"TV",
"Cable TV",
"Wifi",
"Air conditioning",
"Pool",
"Kitchen",
"Free parking on premises",
"Gym",
"Free street parking",
"Hot tub",
"Indoor fireplace",
"Heating",
"Washer",
"Dryer",
"Smoke detector",
"Carbon monoxide detector",
"Essentials",
"Shampoo",
"Hangers",
"Hair dryer",
"Iron",
"Laptop friendly workspace",
"Self check-in",
"Smart lock",
"Private entrance",
"Bathtub",
"Room-darkening shades",
"Hot water",
"Body soap",
"Bath towel",
"Toilet paper",
"Bed linens",
"Extra pillows and blankets",
"Microwave",
"Coffee maker",
"Refrigerator",
"Dishwasher",
"Dishes and silverware",
"Cooking basics",
"Oven",
"Stove",
"BBQ grill",
"Patio or balcony",
"Long term stays allowed",
"Cleaning before checkout",
"Handheld shower head",
"Hot water kettle",
"Central air conditioning",
"Smart TV",
"Mountain view",
"Rain shower",
"Balcony",
"Sound system",
"Gas oven",
"Projector and screen",
"Exercise equipment",
"Breakfast table",
"Espresso machine",
"Formal dining area",
"Sun loungers",
"Day bed",
"Shared gym",
"Shared pool",
"Shared hot tub",
"Convection oven",
"Amazon Echo",
"Memory foam mattress",
"En suite bathroom",
"Outdoor seating",
"Soaking tub",
"Walk-in shower",
"Full kitchen",
"Bedroom comforts",
"Bathroom essentials"
],
"is_location_exact": false,
"cancel_policy_short_str": "Moderate",
"star_rating": 5,
"price_for_extra_person_native": 15,
"weekly_price_native": null,
"monthly_price_native": null,
"time_zone_name": "America/Phoenix",
"loc": {
"type": "Point",
"coordinates": [
-111.9222,
33.4433
]
},
"exists": true,
"created_at": "2018-04-05T23:17:26.415Z",
"updated_at": "2019-11-08T06:22:15.499Z",
"cleaning_fee_native": 250,
"extras_price_native": 250,
"in_building": false,
"in_toto_area": false,
"instant_book_enabled": true,
"is_business_travel_ready": false,
"listing_cleaning_fee_native": 250,
"listing_monthly_price_native": null,
"listing_price_for_extra_person_native": 15,
"listing_weekend_price_native": 295,
"listing_weekly_price_native": null,
"localized_city": "Tempe",
"monthly_price_factor": 0.92,
"special_offer": null,
"toto_opt_in": null,
"weekly_price_factor": 0.95,
"wireless_info": null,
"host_id": 2158239,
"airbnb_id": 22518616,
"mashvisor_id": 21419158,
"occupancy": 63,
"rental_income": 3059,
"nights_booked": 209
}
}
This endpoint retrieves the Airbnb property's detailed information, reviews, photos, host information, estimated rental income, and calculated occupancy rate.
Airbnb Property Data Dictionary
Attribute | Definition | Possible Returns |
---|---|---|
id | Airbnb listing ID: 9998508 | Integer |
name | Listing full name | String |
neighborhood | Listing neighborhood | Boolean |
city | The city where the listing is located | String |
state* | The state where the property is located | String |
zip code | Postal code where a listing is located | Integer |
country | County where a listing is located | String |
smart_location | Full location of listing | String |
address | Address of listing entered by host | String |
public_address | Full address along with the country | String |
country_code | Listing’s country code, ex: US | String |
market | Listing market | String |
lat | Latitude of listing location | Float |
lng | Longitude of listing location | Float |
instant_bookable | Indicator if listing is available for instant booking | Boolean |
picture_url | Main picture url | String |
thumbnail_url | Main thumbnail picture url | String |
medium_url | Main XL picture url | String |
xl_picture_url | All XL pictures urls. | String |
picture_urls | All pictures url | String - array |
thumbnail_urls | All thumbnail pictures url | String - array |
xl_picture_urls | All XL pictures urls. | String - array |
picture_count | Count of all pictures | Integer |
picture_captions | All pictures captions | String - array |
map_image_url | Google map image url | String |
user_id | Listing’s host ID | Integer |
price | Listing current booking price per night | Integer |
native_currency | Natiec price currency, ex: “USD” | String |
price_native | Listing nartive price | Integer |
price_formatted | Price along with the currency | String |
price_for_extra_person_native | Extra person’s price | Integer |
weekly_price_native | Weekly price after the discount | Integer |
monthly_price_native | Monthly price after the discount | Integer |
currency_symbol_left | Currency symbol, ex: “$” | String |
currency_symbol_right | Currency symbol, ex: “€” | String |
security_deposit_native | Security deposit price | Integer |
security_price_native | Security deposit native price | Integer |
security_deposit_formatted | Security deposit price with currency | String |
bedrooms | Number of bedrooms | Integer |
beds | Number of beds | Integer |
bathrooms | Number of bathrooms | Integer |
min_nights | Min allowed booking nights | Integer |
person_capacity | Max listing capacity of persons | Integer |
user | The time of the open house starting | User Object |
cancellation_policy | Cancellation policy category | String |
cancel_policy | Cancellation policy category ID | Integer |
cancel_policy_short_str | Summary of cancellation policy | String |
has_double_blind_reviews | Boolean indicator for blind reviews | Boolean |
property_type | Property main type | String Available types: * House * Apartment * Bed and breakfast * Boutique hotel * More information * Bungalow * Cabin * Chalet * Cottage * Guest suite * Guesthouse * Hostel * Hotel * Loft * Resort * Townhouse * Villa |
reviews_count | Total reviews count | Integer |
review_scores | Detailed reviews scores per category | Review Scores object |
room_type | Listing room type | String Available types: * Entire home/apt * Private room * Shared room |
room_type_category | Room type category | String |
bed_type | Bed type | String |
bed_type_category | Bed type category | String |
require_guest_profile_picture | Boolean | |
Require_guest_phone_ | Boolean | |
verification | ||
force_mobile_legal_modal | Boolean | |
check_in_time | Check in time hour | Integer |
check_out_time | Check out time hour | Integer |
guests_included | Number of guests included | Integer |
license | AirBnB license for listing | String |
max_nights | Max booking nights | Integer |
square_feet | Listing living area | Integer |
locale | Listing’s locale | String |
has_viewed_terms | Boolean | |
has_viewed_cleaning | Boolean | |
has_agreed_to_legal_terms | Boolean | |
Has_viewed_ib_ | Boolean | |
perf_dashboard_panel | ||
language | Listing page language | String |
experiences_offered | Listing’ experience offered along with booking | String |
max_nights_input_value | Integer | |
min_nights_input_value | Integer | |
requires_license | Indicator if the listing requires licence | Boolean |
property_type_id | Property type ID | Integer |
house_rules | Hosting rules provided by host when booking | String |
description | Listing full description | String |
description_locale | Description locale | String |
summary | Description summary | String |
space | Listing space | String |
access | Allowed accesses in the listing from host | String |
interaction | Host interaction | String |
neighborhood_overview | Listing neighborhood overview | String |
transit | Listing around transit | String |
amenities | All included amenities | String - array |
is_location_exact | Verified exact location | Boolean |
star_rating | Total start rating | Float |
time_zone_name | Full timezone name | String |
created_at | Listing creation date and time | Timestamp |
updated_at | Listing updates date and time | Timestamp |
exists | Indicator if the listing is still active over AirBnB or not. | Boolean |
HTTP Request
GET https://api.mashvisor.com/v1.1/client/airbnb-property/{id}
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | The Airbnb listing Id. |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state of the listing should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
Get VRBO Listing Info
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/vrbo-property/1943760?state=FL")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/vrbo-property/1943760?state=FL")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/vrbo-property/1943760');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'FL'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/vrbo-property/1943760?state=FL"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"propertyTimezone": "America/New_York",
"accomodationSummary": null,
"address": {
"city": "Gainesville",
"country": "US",
"postalCode": "32608",
"stateProvince": "FL"
},
"availabilityUpdated": "2023-09-01",
"averageRating": 4.8541665,
"bedrooms": 2,
"canonicalLink": "https://www.vrbo.com/1943760",
"description": "One block from Shands Hospital, VA Hospital, and the University of Florida campus. This is a spacious ground level condo with two bedrooms. Each includes walk-in closet, luxury queen bed, chest of drawers, ceiling fan, bedside table, bed linens provided; there is one bathroom, tiled with tub/shower grab bar, towels provided; fully furnished kitchen with refrigerator, dishwasher, gas stove, microwave, all dishes and cooking utensils; table and 4 chairs; living room with large comfortable sofa, two large upholstered chairs, 50 inch flat screen TV, cable, internet, wireless; sleeps four comfortably and 1 other on the sofa.\nThe complex does not allow dogs.",
"detailPageUrl": "/1943760?unitId=2506282&childrenCount=0&noDates=true",
"featuredAmenities": [
"POOL",
"INTERNET",
"AIR_CONDITIONING",
"TV",
"CABLE",
"PARKING",
"HEATER"
],
"firstLiveInLastThirtyDays": false,
"geoCode": {
"exact": false,
"latitude": 29.6353672,
"longitude": -82.34372944
},
"geography": {
"description": "Gainesville, Florida, United States of America",
"ids": [
{
"type": "LBS",
"value": "d616f541-1f46-4b1a-a665-986baf96dfec"
}
],
"name": "Gainesville",
"relatedGeographies": null,
"types": [
"locality"
],
"location": {
"lat": 29.651939,
"lng": -82.325043
}
},
"propertyManagerProfile": null,
"headline": "2Short walk to Shands & VA Hospitals, and UF campus",
"houseRules": {
"children": {
"label": "Children allowed",
"note": "There are no play areas for children.",
"allowed": true
},
"events": {
"label": "No events",
"note": null,
"allowed": false
},
"smoking": {
"label": "Smoking allowed",
"note": null,
"allowed": true
},
"pets": {
"label": "No pets",
"note": null,
"allowed": false
},
"unitUrl": "/units/0004/33784c7c-d1c6-4803-8f3d-f022b46ba272",
"checkInTime": "4:00 PM",
"checkOutTime": "11:00 AM",
"minimumAge": {
"label": "Minimum age of primary renter:",
"note": null,
"minimumAge": 20,
"displayText": "Minimum age to rent: 20"
},
"maxOccupancy": {
"adults": null,
"guests": 4,
"label": "Max guests:",
"maxAdultsLabel": null,
"note": null,
"displayText": "Maximum overnight guests: 4"
},
"standardRules": [
{
"key": "childrenRule",
"label": "Children allowed",
"note": "There are no play areas for children."
},
{
"key": "petsRule",
"label": "No pets",
"note": null
},
{
"key": "eventsRule",
"label": "No events",
"note": null
},
{
"key": "smokingRule",
"label": "Smoking allowed",
"note": null
}
],
"customRules": [],
"label": "House Rules",
"checkInRule": {
"label": "<strong>Check in</strong> after 4:00 PM",
"time": "4:00 PM"
},
"checkOutRule": {
"label": "<strong>Check out</strong> before 11:00 AM",
"time": "11:00 AM"
},
"childrenRule": {
"displayText": "Children allowed: ages 0-17",
"allowed": true,
"childrenNotAllowedNote": null,
"note": "There are no play areas for children."
},
"petsRule": {
"displayText": "No pets allowed",
"allowed": false,
"note": null
},
"eventsRule": {
"displayText": "No events allowed",
"allowed": false,
"maxEventAttendeesLabel": null,
"allowedEventsNote": null,
"note": null
},
"smokingRule": {
"displayText": "Smoking allowed: outside",
"allowed": true,
"outside": {
"allowed": true,
"note": null
},
"inside": null,
"note": null
}
},
"cancellationPolicy": {
"cancellationPolicyPeriods": [
{
"label": "<strong>100% refund of amount paid</strong> if you cancel at least 14 days before check-in."
},
{
"label": "<strong>50% refund of amount paid</strong> (minus the service fee) if you cancel at least 7 days before check-in."
},
{
"label": "<strong>No refund</strong> if you cancel less than 7 days before check-in."
}
],
"cancellationPolicyLabel": {
"label": "<strong>Free cancellation</strong> up to",
"date": "14 days before check-in",
"isFullRefundWindow": true
},
"cancellationTimelinePeriods": [
{
"timelineLabel": "14 days before check-in",
"refundPercent": 100,
"refundWindowLabel": "100% refund",
"shortDateLocalized": null,
"isPast": false,
"isActive": false,
"iconCode": null
},
{
"timelineLabel": "7 days before check-in",
"refundPercent": 50,
"refundWindowLabel": "50% refund",
"shortDateLocalized": null,
"isPast": false,
"isActive": false,
"iconCode": null
},
{
"timelineLabel": "Check in",
"refundPercent": 0,
"refundWindowLabel": "No refund",
"shortDateLocalized": null,
"isPast": false,
"isActive": false,
"iconCode": "KEY"
}
],
"policyType": "RELAXED"
},
"instantBookable": true,
"egratedPropertyManager": null,
"platformPropertyManager": false,
"ipmGuaranteedPricingActive": false,
"isBasicListing": false,
"isCrossSell": false,
"isSubscription": false,
"listingId": "321.1943760.2506282",
"listingNumber": 1943760,
"minStayRange": {
"minStayHigh": 7,
"minStayLow": 2
},
"multiUnitProperty": false,
"onlineBookable": true,
"ownerManaged": true,
"ownersListingProfile": {
"aboutYou": null,
"storyPhoto": null,
"uniqueBenefits": null,
"whyHere": null
},
"payPerBooking": true,
"petsAllowed": false,
"priceSummary": {
"amount": 98,
"currency": "USD",
"formattedAmount": "$98",
"pricePeriodDescription": "avg/night",
"currencySymbol": "$"
},
"propertyId": "1943760",
"id": "49177741",
"propertyManagerMessaging": null,
"propertyName": "H2",
"propertyType": "Condo",
"propertyTypeKey": "condo",
"recentlyAdded": false,
"registrationNumber": "",
"reviewCount": 48,
"sleeps": 4,
"sleepsDisplay": "Sleeps 4",
"spu": "vrbo-1943760-2506282",
"status": "AVAILABLE",
"takesInquiries": true,
"testListing": false,
"thumbnailUrl": "https://media.vrbo.com/lodging/50000000/49180000/49177800/49177741/7d1d1ee0.TREATMENT.jpg",
"travelerFeeEligible": true,
"videoUrls": [],
"bathrooms": {
"full": 1,
"half": 0,
"toiletOnly": 0
},
"industryHealthAssociations": [],
"regionalHealthGuidelines": [],
"impressum": null,
"allFeaturedAmenitiesRanked": [
"INTERNET",
"PETS",
"AIR_CONDITIONING",
"POOL",
"WHEELCHAIR",
"HEATER",
"FIREPLACE",
"CABLE",
"CHILDREN_WELCOME",
"WASHER_DRYER",
"HOT_TUB",
"PARKING",
"TV",
"NO_SMOKING"
],
"created_at": "2023-08-31T07:05:24.451Z",
"updated_at": "2023-09-07T12:35:40.968Z",
"exists": true,
"vrbo_id": "1943760",
"mashvisor_id": null,
"occupancy": null,
"rental_income": null,
"nights_booked": null
}
}
This endpoint retrieves the VRBO property's detailed information, reviews count, address, estimated rental income, and calculated occupancy rate.
VRBO Property Data Dictionary
Attribute | Definition | Data Type |
---|---|---|
id | VRBO listing ID: 321.1943760.2506282 | String |
headline | Listing full name | String |
address | Listing address including country, state, city, postal code | String |
propertyTimezone | Full timezone name | String |
created_at | Listing creation date and time | Timestamp |
updated_at | Listing updates date and time | Timestamp |
exists | Indicator if the listing is still active over AirBnB | Boolean |
propertyId | Property ID | String |
propertyName | Property name | String |
propertyType | Property type (e.g., "Condo") | String |
propertyTypeKey | Property type key (e.g., "condo") | String |
description | Property description | String |
canonicalLink | Link to the property listing | String |
sleeps | Number of guests the property sleeps | Integer |
bedrooms | Number of bedrooms in the property | Integer |
bathrooms | Number of bathrooms in the property | Object |
averageRating | Average rating of the property | Float |
reviewCount | Number of reviews for the property | Integer |
onlineBookable | Indicates if the property is bookable online | Boolean |
instantBookable | Indicates if the property supports instant booking | Boolean |
unitMetadata | Metadata for the unit | Object |
featuredAmenities | Featured amenities for the property | Array of Strings |
allFeaturedAmenitiesRanked | Ranked list of featured amenities | Array of Strings |
houseRules | Property's house rules | Object |
cancellationPolicy | Cancellation policy for the property | Object |
payPerBooking | Indicates if the property uses a pay-per-booking model | Boolean |
priceSummary | Price summary for the property | Object |
ownerManaged | Indicates if the property is owner-managed | Boolean |
ownerListingProfile | Owner's listing profile information | Object |
propertyManagerProfile | Property manager's profile information | Object |
registrationNumber | Property registration number (if applicable) | String |
recentAdded | Indicates if the property was recently added | Boolean |
takesInquiries | Indicates if the property takes inquiries from guests | Boolean |
videoUrls | URLs to videos related to the property | Array of Strings |
thumbnailUrl | URL to the property's thumbnail image | String |
travelerFeeEligible | Indicates if traveler fees are eligible for the property | Boolean |
listingNumber | Listing number for the property | Integer |
multiUnitProperty | Indicates if the property is a multi-unit property | Boolean |
egratedPropertyManager | Information about an egrated property manager (if applicable) | Object |
platformPropertyManager | Indicates if the property is managed by a platform property manager | Boolean |
ipmGuaranteedPricingActive | Indicates if guaranteed pricing is active for the property | Boolean |
petsAllowed | Indicates if pets are allowed in the property | Boolean |
minStayRange | Range of minimum stay requirements for the property | Object |
maxOccupancy | Maximum occupancy details for the property | Object |
industryHealthAssociations | Health associations associated with the property | Array of Objects |
regionalHealthGuidelines | Regional health guidelines for the property | Array of Objects |
impressum | Property's impressum (if applicable) | String |
occupancy | Occupancy details for the property | Object |
rentalIncome | Rental income details for the property | Object |
nightsBooked | Number of nights booked for the property | Integer |
HTTP Request
GET https://api.mashvisor.com/v1.1/client/vrbo-property/{id}
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | The VRBO listing Id. |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state of the listing should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
Get Listing's Historical Performance
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/airbnb-property/21419158/historical?state=AZ")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/21419158/historical?state=AZ")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/airbnb-property/21419158/historical');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'AZ'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/airbnb-property/21419158/historical?state=AZ"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"name": "Luxury Three Story Home with Two Balconies",
"airbnb_id": "22518616",
"months": [
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2018,
"month": 12,
"nightly_price": 200,
"revenue": 2800,
"occupancy": 14,
"unbooked_nights": 17,
"occupancy_rate": 45
},
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2019,
"month": 1,
"nightly_price": 0,
"revenue": 0,
"occupancy": 0,
"unbooked_nights": null,
"occupancy_rate": null
},
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2019,
"month": 2,
"nightly_price": 223,
"revenue": 4462,
"occupancy": 20,
"unbooked_nights": 8,
"occupancy_rate": 71
},
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2019,
"month": 3,
"nightly_price": 264,
"revenue": 7404,
"occupancy": 28,
"unbooked_nights": 3,
"occupancy_rate": 90
},
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2019,
"month": 4,
"nightly_price": 192,
"revenue": 2107,
"occupancy": 11,
"unbooked_nights": 19,
"occupancy_rate": 37
},
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2019,
"month": 5,
"nightly_price": 175,
"revenue": 3153,
"occupancy": 18,
"unbooked_nights": 13,
"occupancy_rate": 58
},
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2019,
"month": 6,
"nightly_price": 107,
"revenue": 2345,
"occupancy": 22,
"unbooked_nights": 8,
"occupancy_rate": 73
},
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2019,
"month": 7,
"nightly_price": 95,
"revenue": 2090,
"occupancy": 22,
"unbooked_nights": 9,
"occupancy_rate": 71
},
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2019,
"month": 8,
"nightly_price": 125,
"revenue": 2375,
"occupancy": 19,
"unbooked_nights": 12,
"occupancy_rate": 61
},
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2019,
"month": 9,
"nightly_price": 129,
"revenue": 2451,
"occupancy": 19,
"unbooked_nights": 11,
"occupancy_rate": 63
},
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2019,
"month": 10,
"nightly_price": 144,
"revenue": 2599,
"occupancy": 18,
"unbooked_nights": 13,
"occupancy_rate": 58
},
{
"airbnb_id": "22518616",
"name": "Luxury Three Story Home with Two Balconies",
"year": 2019,
"month": 11,
"nightly_price": 123,
"revenue": 2211,
"occupancy": 18,
"unbooked_nights": 12,
"occupancy_rate": 60
}
]
}
}
This endpoint retrieves the Airbnb/VRBO property's 12 historical records - nightly price, revenue, and occupancy, unbooked nights, and occupancy rate - for a specific property.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/airbnb-property/{id}/historical
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | The property record Id from the Mashvisor database. |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state of the property should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
Get Neighborhood Historical Performance
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/neighborhood/268201/historical/airbnb?average_by=revenue&state=CA")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/neighborhood/268201/historical/airbnb?average_by=revenue&state=CA")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/neighborhood/268201/historical/airbnb');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA',
'city' => 'San%20Francisco'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/neighborhood/268201/historical/airbnb?average_by=revenue&state=CA"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured for occupancy category like this:
{
"status": "success",
"content": {
"results": [
{
"year": 2018,
"month": 10,
"value": 71
},
{
"year": 2018,
"month": 11,
"value": 42
},
{
"year": 2018,
"month": 12,
"value": 17
},
{
"year": 2019,
"month": 1,
"value": 65
},
{
"year": 2019,
"month": 2,
"value": 76
},
{
"year": 2019,
"month": 3,
"value": 83
},
{
"year": 2019,
"month": 4,
"value": 73
},
{
"year": 2019,
"month": 5,
"value": 84
},
{
"year": 2019,
"month": 6,
"value": 79
},
{
"year": 2019,
"month": 7,
"value": 79
},
{
"year": 2019,
"month": 8,
"value": 66
},
{
"year": 2019,
"month": 9,
"value": 55
}
]
},
"message": "Historical Data fetched successfully"
}
The above command returns JSON structured for revenue category like this:
{
"status": "success",
"content": {
"results": [
{
"year": 2018,
"month": 10,
"value": 6056
},
{
"year": 2018,
"month": 11,
"value": 3767
},
{
"year": 2018,
"month": 12,
"value": 1797
},
{
"year": 2019,
"month": 1,
"value": 4739
},
{
"year": 2019,
"month": 2,
"value": 5738
},
{
"year": 2019,
"month": 3,
"value": 5970
},
{
"year": 2019,
"month": 4,
"value": 4398
},
{
"year": 2019,
"month": 5,
"value": 5751
},
{
"year": 2019,
"month": 6,
"value": 5398
},
{
"year": 2019,
"month": 7,
"value": 6004
},
{
"year": 2019,
"month": 8,
"value": 4999
},
{
"year": 2019,
"month": 9,
"value": 3998
}
]
},
"message": "Historical Data fetched successfully"
}
This endpoint retrieves a neighborhood/area’s short-term historical performance for listings in an array.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/neighborhood/{id}/historical/airbnb
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | Neighborhood id to fetch data for |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
percentile_rate | Double | 1 | Percentile rate |
average_by | String | occupancy | Neighborhood id you're targeting. Possbile Inputs: * occupancy * price * revenue |
category | String | AirBnB category type. Possbile Inputs: * flat * house * apartment * loft |
|
beds | Integer | 0 to 4 bedrooms value |
Get Listings
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/airbnb-property/active-listings?state=CA&city=San%20Francisco")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/active-listings?state=CA&city=San%20Francisco")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/airbnb-property/active-listings');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA',
'city' => 'San%20Francisco'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/airbnb-property/active-listings?state=CA&city=San%20Francisco"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"num_of_properties": 7115,
"items": 5,
"total_pages": 1423,
"page": 2,
"properties": [
{
"id": 18894069,
"propertyId": "4733174",
"source": "Airbnb",
"nightPrice": 307,
"weeklyPrice": 0,
"monthlyPrice": 0,
"numOfBaths": 1.5,
"numOfRooms": 3,
"name": "Huge Apt in Lincoln Park Mansion!",
"address": "Chicago, IL, United States",
"airbnbNeighborhood": "Lincoln Park",
"airbnbCity": "Chicago",
"capacityOfPeople": 9,
"zip": "60614",
"propertyType": "Apartment",
"roomType": "Entire home/apt",
"roomTypeCategory": "entire_home",
"amenities": null,
"reviewsCount": 51,
"startRating": 5,
"reviews": null,
"createdAt": "2017-07-08T18:29:04.000Z",
"updatedAt": "2017-07-08T18:29:04.000Z",
"numOfBeds": 5,
"lat": "41.92822647094727",
"lon": "-87.64620208740234",
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"nightRate": 307,
"property_id": "4733174",
"airbnbZIP": "60614"
},
{
"id": 18894071,
"propertyId": "14222880",
"source": "Airbnb",
"nightPrice": 164,
"weeklyPrice": 0,
"monthlyPrice": 0,
"numOfBaths": 1,
"numOfRooms": 2,
"name": "Lincoln park spacious 2.5 bedroom",
"address": "Chicago, IL 60614, United States",
"airbnbNeighborhood": "Lincoln Park",
"airbnbCity": "Chicago",
"capacityOfPeople": 6,
"zip": "60614",
"propertyType": "Condominium",
"roomType": "Entire home/apt",
"roomTypeCategory": "entire_home",
"amenities": null,
"reviewsCount": 15,
"startRating": 5,
"reviews": null,
"createdAt": "2017-07-08T18:29:08.000Z",
"updatedAt": "2017-07-08T18:29:08.000Z",
"numOfBeds": 3,
"lat": "41.91649627685547",
"lon": "-87.65447998046875",
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"nightRate": 164,
"property_id": "14222880",
"airbnbZIP": "60614"
},
{
"id": 18894074,
"propertyId": "9577653",
"source": "Airbnb",
"nightPrice": 128,
"weeklyPrice": 0,
"monthlyPrice": 0,
"numOfBaths": 1,
"numOfRooms": 1,
"name": "Modern Lincoln Park 1bd 1ba Parking",
"address": "Chicago, IL 60614, United States",
"airbnbNeighborhood": "Lincoln Park",
"airbnbCity": "Chicago",
"capacityOfPeople": 3,
"zip": "60614",
"propertyType": "Apartment",
"roomType": "Entire home/apt",
"roomTypeCategory": "entire_home",
"amenities": null,
"reviewsCount": 57,
"startRating": 5,
"reviews": null,
"createdAt": "2017-07-08T18:29:12.000Z",
"updatedAt": "2017-07-08T18:29:12.000Z",
"numOfBeds": 1,
"lat": "41.92398071289063",
"lon": "-87.66230773925781",
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"nightRate": 128,
"property_id": "9577653",
"airbnbZIP": "60614"
}
],
"num_page_properties": 3
}
}
Lists all active short-term rentals for a specific location: city, zip code, or neighborhood.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/airbnb-property/active-listings
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
city | String | A specific city you're looking for. | |
neighborhood | Long | Neighborhood id you're targeting | |
zip_code | Integer | Any postal zip code. | |
page | Integer | 1 | Page number |
items | Integer | 4 | Items number per page. |
Get Market Summary
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/airbnb-property/market-summary?state=CA&city=San%20Francisco")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/market-summary?state=CA&city=San%20Francisco")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/airbnb-property/market-summary');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA',
'city' => 'San%20Francisco'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/airbnb-property/market-summary?state=CA&city=San%20Francisco"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"listings_count": 60,
"property_types": {
"total_types": 60,
"histogram": [
"House",
"House",
"Apartment",
"Townhouse",
"House",
"Apartment",
"House",
"Guesthouse",
"Guesthouse",
"House",
"House",
"Guest suite",
"Apartment",
"Bungalow",
"Bungalow",
"Apartment",
"Apartment",
"House",
"Apartment",
"Apartment",
"Guesthouse",
"House",
"House",
"Apartment",
"Apartment",
"House",
"House",
"Apartment",
"Guesthouse",
"Bungalow",
"Loft",
"Apartment",
"Guesthouse",
"Guesthouse",
"Apartment",
"House",
"House",
"House",
"Apartment",
"Apartment",
"House",
"Apartment",
"House",
"Apartment",
"Guest suite",
"Guesthouse",
"Dome house",
"House",
"House",
"House",
"Loft",
"House",
"Apartment",
"Apartment",
"Loft",
"Apartment",
"Apartment",
"Guesthouse",
"Bungalow",
"House"
]
},
"occupancy_histogram": {
"average_occupancy": 63.5,
"histogram": [
23,
22,
100,
84,
75,
84,
94,
77,
76,
65,
60,
72,
10,
73,
45,
53,
74,
59,
56,
14,
88,
76,
42,
90,
58,
66,
96,
74,
62,
76,
90,
53,
75,
73,
69,
77,
49,
32,
53,
62,
71,
54,
27,
0,
65,
58,
93,
50,
17,
30,
50,
86,
44,
85,
83,
73,
88,
95,
73,
91
]
},
"night_price_histogram": {
"average_price": 150.26666666666668,
"histogram": [
95,
109,
105,
91,
293,
95,
98,
122,
106,
132,
197,
85,
180,
93,
135,
230,
67,
301,
243,
95,
77,
147,
278,
94,
245,
179,
166,
128,
109,
144,
92,
65,
96,
71,
108,
72,
198,
226,
235,
231,
167,
238,
545,
95,
76,
89,
98,
117,
143,
303,
116,
114,
205,
109,
87,
130,
122,
94,
135,
200
]
},
"rental_income_histogram": {
"average_rental_income": 2699.9,
"histogram": [
665,
713,
3179,
2308,
6686,
2435,
2806,
2839,
2457,
2604,
3605,
1863,
540,
2071,
1841,
3701,
1511,
5363,
4109,
397,
2066,
3381,
3568,
2585,
4299,
3606,
4851,
2863,
2061,
3325,
2515,
1047,
2179,
1581,
2246,
1670,
2911,
2228,
3838,
4389,
3637,
3914,
4428,
0,
1501,
1587,
2777,
1775,
763,
2803,
1763,
2993,
2768,
2824,
2199,
2893,
3250,
2726,
2982,
5509
]
},
"listings_ids": [
"10091952",
"10130714",
"10337903",
"11606890",
"13292266",
"13586511",
"13600955",
"13716877",
"13910936",
"14712502",
"16262529",
"17000038",
"17094877",
"17164542",
"17408114",
"17642407",
"17788570",
"17996526",
"18240831",
"18624311",
"18716083",
"18889885",
"21755300",
"21937079",
"22019979",
"22504999",
"24517691",
"24694748",
"25738917",
"25970489",
"26715469",
"27049904",
"27901098",
"28606355",
"29100817",
"29921190",
"30133810",
"31496383",
"32643136",
"32892977",
"33092851",
"33338746",
"33499868",
"33606395",
"33663979",
"34515878",
"35287663",
"35343401",
"35810250",
"36768569",
"37092132",
"37365584",
"37565110",
"4823654",
"590936",
"594777",
"636629",
"7019957",
"8174638",
"839546"
]
}
}
This endpoint retrieves a summary and overview for a specific location: city, zip code, or neighborhood.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/airbnb-property/market-summary
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
city | String | A specific city you're looking for. | |
neighborhood | Long | Neighborhood id you're targeting | |
zip_code | Integer | Any postal zip code. |
Get Listing's Occupancy Rates
For each Airbnb/VRBO listing, we calculate its occupancy rate (month per month and annual rates), plus 12-month historical occupancy data.
Using our proprietary algorithms and data validation methods, we have solved the issue of ‘blocked by host’ vs ‘booked’ calendar and offer highly reliable and accurate occupancy data. Our algorithms account for seasonality, local market fluctuations and management of data outliers.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/airbnb-property/occupancy-rates?state=CA&city=San%20Francisco")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/occupancy-rates?state=CA&city=San%20Francisco")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/airbnb-property/occupancy-rates');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA',
'city' => 'San%20Francisco'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/airbnb-property/occupancy-rates?state=CA&city=San%20Francisco"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"occupancy_rates": {
"studio": 84,
"one_bedroom": 73.5,
"two_bedrooms": 67.5,
"three_bedrooms": 60,
"four_bedrooms": 54
},
"sample_count": 60,
"detailed": {
"studio_occupancies_histogram": [
53,
73,
75,
84,
88,
90,
95
],
"one_bedroom_histogram": [
14,
22,
50,
58,
62,
65,
72,
73,
73,
74,
76,
77,
83,
84,
90,
93,
94,
100
],
"two_bedrooms_histogram": [
10,
17,
23,
27,
45,
49,
65,
66,
69,
73,
76,
76,
77,
85,
86,
96
],
"three_bedrooms_histogram": [
32,
50,
59,
60,
71,
74,
91
],
"four_bedrooms_histogram": [
42,
44,
53,
53,
54,
56,
58,
62,
88
]
}
}
}
HTTP Request
GET https://api.mashvisor.com/v1.1/client/airbnb-property/occupancy-rates
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
city | String | A specific city you're looking for. | |
neighborhood | Long | Neighborhood id you're targeting | |
zip_code | Integer | Any postal zip code. |
Get Property Types
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/airbnb-property/property-types?state=CA&city=San%20Francisco")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/property-types?state=CA&city=San%20Francisco")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/airbnb-property/property-types');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA',
'city' => 'San%20Francisco'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/airbnb-property/property-types?state=CA&city=San%20Francisco"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"Apartment": 3234,
"Barn": 1,
"Bungalow": 189,
"Cabin": 12,
"Chalet": 2,
"Condominium": 304,
"Cottage": 32,
"Dome house": 2,
"Guest suite": 552,
"Guesthouse": 915,
"House": 1379,
"Loft": 271,
"Other": 8,
"Serviced apartment": 44,
"Tiny house": 15,
"Townhouse": 104,
"Villa": 51
}
}
Checks all market property types for a zip code or a neighborhood and returns counts.
Available Property Types:
- Apartment
- Other
- House
- Bed & Breakfast
- Condominium
- Townhouse
- Loft
- Cottage
- Guesthouse
- Farm stay
- Bungalow
- Guest suite
- Cabin
- Barn
- Dome house
- Villa
- Chalet
- Tiny house
- Serviced apartment
- Bed and breakfast
- Earth house
- Lighthouse
- Nature lodge
HTTP Request
GET https://api.mashvisor.com/v1.1/client/airbnb-property/property-types
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
city | String | A specific city you're looking for. | |
neighborhood | Long | Neighborhood id you're targeting | |
zip_code | Integer | Any postal zip code. |
Get Super Hosts
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/airbnb-property/super-hosts?state=CA&city=San%20Francisco")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/super-hosts?state=CA&city=San%20Francisco")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/airbnb-property/super-hosts');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA',
'city' => 'San%20Francisco'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/airbnb-property/super-hosts?state=CA&city=San%20Francisco"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"items_per_page": 10,
"page": 1,
"total_pages": 2,
"total_items": 17,
"super_hosts": [
{
"first_name": "Marina",
"has_profile_pic": true,
"id": 9601940,
"picture_url": "https://a0.muscache.com/im/pictures/4f72a94e-f421-4183-a90c-9031dbac0ce1.jpg?aki_policy=profile_x_medium",
"smart_name": "Marina",
"thumbnail_url": "https://a0.muscache.com/im/pictures/4f72a94e-f421-4183-a90c-9031dbac0ce1.jpg?aki_policy=profile_small",
"acceptance_rate": "N/A",
"created_at": "2013-10-23T21:52:46Z",
"identity_verified": false,
"is_superhost": true,
"picture_large_url": "https://a0.muscache.com/im/pictures/4f72a94e-f421-4183-a90c-9031dbac0ce1.jpg?aki_policy=profile_large",
"recommendation_count": 0,
"response_rate": "100%",
"response_time": "within an hour",
"reviewee_count": 13,
"thumbnail_medium_url": "https://a0.muscache.com/im/pictures/4f72a94e-f421-4183-a90c-9031dbac0ce1.jpg?aki_policy=profile_medium",
"neighborhood": null,
"verification_labels": [
"Email address",
"Phone number",
"Reviewed"
],
"verifications": [
"email",
"phone",
"reviews"
],
"about": "",
"friends_count": 0,
"has_available_payout_info": true,
"identity_mt_verified": false,
"identity_v2_verified": false,
"is_generated_user": false,
"is_trip_host": false,
"is_marketplace_cohost": false,
"languages": [
"Русский"
],
"listings_count": 1,
"location": "Los Angeles, CA",
"recent_recommendation": null,
"recent_review": {
"review": {
"comments": "The host canceled this reservation 47 days before arrival. This is an automated posting.",
"created_at": "2018-01-21T02:40:09Z",
"id": 228670297,
"listing_id": 17651828,
"reviewee_id": 9601940,
"reviewer": {
"user": {
"first_name": "Karen",
"has_profile_pic": true,
"id": 165271662,
"picture_url": "https://a0.muscache.com/im/pictures/user/0ed80885-6dba-411c-b686-34673a92a34b.jpg?aki_policy=profile_x_medium",
"smart_name": "Karen",
"thumbnail_url": "https://a0.muscache.com/im/pictures/user/0ed80885-6dba-411c-b686-34673a92a34b.jpg?aki_policy=profile_small"
}
},
"reviewer_id": 165271662,
"role": "guest",
"user_flag": null,
"reviewee": {
"user": {
"first_name": "Marina",
"has_profile_pic": true,
"id": 9601940,
"picture_url": "https://a0.muscache.com/im/pictures/4f72a94e-f421-4183-a90c-9031dbac0ce1.jpg?aki_policy=profile_x_medium",
"smart_name": "Marina",
"thumbnail_url": "https://a0.muscache.com/im/pictures/4f72a94e-f421-4183-a90c-9031dbac0ce1.jpg?aki_policy=profile_small"
}
},
"listing": null
}
},
"school": "California State University, Northridge",
"show_travel_for_work": false,
"signup_method": 1,
"total_listings_count": 2,
"user_flag": null,
"work": "Boston Scientific"
},
...
]
}
}
Obtains a list of an area’s airbnb super hosts for a zip code or a city.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/airbnb-property/super-hosts
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
city | String | A specific city you're looking for. | |
zip_code | Integer | Any postal zip code. | |
page | Integer | 1 | page number. |
Get Airbnb Top Reviewed Homes
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/airbnb-property/top-reviewed?state=CA&city=San%20Francisco")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/top-reviewed?state=CA&city=San%20Francisco")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/airbnb-property/top-reviewed');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA',
'city' => 'San%20Francisco'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/airbnb-property/top-reviewed?state=CA&city=San%20Francisco"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"items_per_page": 10,
"page": 1,
"reviews_count_limit": 30,
"total_pages": 1,
"total_items": 4,
"list": [
{
"id": 18076608,
"city": "Los Angeles",
"picture_url": "https://a0.muscache.com/im/pictures/d59d726f-5f9b-4fd3-80fd-b4c5671bbde6.jpg?aki_policy=large",
"thumbnail_url": "https://a0.muscache.com/im/pictures/d59d726f-5f9b-4fd3-80fd-b4c5671bbde6.jpg?aki_policy=small",
"medium_url": "https://a0.muscache.com/im/pictures/d59d726f-5f9b-4fd3-80fd-b4c5671bbde6.jpg?aki_policy=medium",
"xl_picture_url": "https://a0.muscache.com/im/pictures/d59d726f-5f9b-4fd3-80fd-b4c5671bbde6.jpg?aki_policy=x_large",
"user_id": 15564576,
"price": 70,
"native_currency": "USD",
"price_native": 70,
"price_formatted": "$70",
"lat": 34.21287,
"lng": -118.43941,
"country": "United States",
"name": "PRIVATE ROOM & BATH in LOVELY POOL HOME",
"smart_location": "Los Angeles, CA",
"has_double_blind_reviews": false,
"instant_bookable": false,
"bedrooms": 1,
"beds": 3,
"bathrooms": 1,
"market": "Los Angeles",
"min_nights": 2,
"neighborhood": "Panorama City",
"person_capacity": 3,
"state": "CA",
"zipcode": "91402",
"address": "Los Angeles, CA, United States",
"country_code": "US",
"cancellation_policy": "flexible",
"property_type": "House",
"reviews_count": 141,
"room_type": "Private room",
"room_type_category": "private_room",
"picture_count": 28,
"currency_symbol_left": "$",
"currency_symbol_right": null,
"bed_type": "Real Bed",
"bed_type_category": "real_bed",
"require_guest_profile_picture": false,
"require_guest_phone_verification": false,
"force_mobile_legal_modal": false,
"cancel_policy": 3,
"check_in_time": 15,
"check_out_time": 11,
"guests_included": 2,
"license": "HSR19-002242",
"max_nights": 29,
"square_feet": null,
"locale": "en",
"has_viewed_terms": true,
"has_viewed_cleaning": null,
"has_agreed_to_legal_terms": true,
"has_viewed_ib_perf_dashboard_panel": null,
"language": "en",
"public_address": "Los Angeles, CA, United States",
"map_image_url": "https://maps.googleapis.com/maps/api/staticmap?maptype=roadmap&markers=34.21287%2C-118.43941&size=480x320&zoom=15&client=gme-airbnbinc&channel=monorail-prod&signature=Cv2h-vjyxpdQc3jvu3iUzpgmtZY%3D",
"experiences_offered": "none",
"max_nights_input_value": 29,
"min_nights_input_value": 2,
"requires_license": true,
"property_type_id": 2,
"house_rules": "Smoking is allowed on back patio.\nQuiet time after 11PM",
"security_deposit_native": 0,
"security_price_native": 0,
"security_deposit_formatted": "$0",
"description": "Spacious room with private entrance, ergonomic split king bed, luxurious bath w/rain shower. Off-street parking. Peaceful, beautifully landscaped patio/pool area that you'll most often have all to yourself! 15 minutes from Universal Studios, Warner Bros., Studio City (CBS Redford) and NoHo Arts District; 20 from the heart of Hollywood, 30 minutes from LAX and Magic Mountain; 45 minutes to the beach in one direction, an hour-and-fifteen to skiing in the other. 2 cats on premises.\n\nThis large master bedroom with ensuite bath is connected to the house but has a separate entrance and is self-sufficient with a toaster, coffee maker, mini-fridge and microwave. It also has hair dryer, iron, wifi, a 42\" flat screen TV with Netflix and an ergonomic split king bed with separate remote controls that include a massage function. There is a sitting area where you can enjoy your morning coffee and bagels or a late night snack. The daybed also doubles as sleeping area for a 3rd guest (no children under 14 please). The 8' foot sliding glass doors look out on the pool and gardens which you will have to yourself most of the time. Plantation shutters ensure your privacy. There are beach towels, sunscreen and a beach bag in the room for use at the pool or to take on an excursion to the beach.\n\nprivate master bedroom with en suite bath.\nlaundry on request\nback patio\npool\nfront porch\n\nI will be around much of the time to provide you with directions or sightseeing recommendations. If you need anything just ask and, if you don't see me, you can reach me by phone.\n\nI live in the city of Los Angeles, a few blocks north of Van Nuys in the San Fernando Valley. It's quiet and residential but less than a 5-minute drive or 15-minute walk to a wide range of Asian and Latino restaurants. If you prefer American fare and take-out you are equally close to Chipotle, Ono Hawaiin BBQ, Blaze Pizza, Starbucks, TOGO's, Tutti Frutti (frozen yogurt), In-n-Out Burger and Home Town Buffet as well as to the Regency Plant 16 movie theaters.\n\nThere are buses that go along the major cross streets (Roscoe and Van Nuys Boulevard). One can take a bus to the Orange Line and the Orange Line to the train in North Hollywood. From there you can get to Hollywood or Downtown L.A. I would opt for Ubering to your destination or at least to the North Hollywood train station. Ubers are quick to pick you up here and much of the time you can share a ride very inexpensively. From the Airport, if you are not renting a car, take Uber or Super Shuttle. I recommend taking Shuttle2LAX ($20 dollar flat rate - book online) but not FROM the airport as there can be a very long wait.\n\nTwo cats live in my part of the house and have the run of the back and front yard. Please feel free to pet and play with them outside but I ask that you please not bring or let them into the guest room as other guests may be allergic,.",
"description_locale": "en",
"summary": "Spacious room with private entrance, ergonomic split king bed, luxurious bath w/rain shower. Off-street parking. Peaceful, beautifully landscaped patio/pool area that you'll most often have all to yourself! 15 minutes from Universal Studios, Warner Bros., Studio City (CBS Redford) and NoHo Arts District; 20 from the heart of Hollywood, 30 minutes from LAX and Magic Mountain; 45 minutes to the beach in one direction, an hour-and-fifteen to skiing in the other. 2 cats on premises.",
"space": "This large master bedroom with ensuite bath is connected to the house but has a separate entrance and is self-sufficient with a toaster, coffee maker, mini-fridge and microwave. It also has hair dryer, iron, wifi, a 42\" flat screen TV with Netflix and an ergonomic split king bed with separate remote controls that include a massage function. There is a sitting area where you can enjoy your morning coffee and bagels or a late night snack. The daybed also doubles as sleeping area for a 3rd guest (no children under 14 please). The 8' foot sliding glass doors look out on the pool and gardens which you will have to yourself most of the time. Plantation shutters ensure your privacy. There are beach towels, sunscreen and a beach bag in the room for use at the pool or to take on an excursion to the beach.",
"access": "private master bedroom with en suite bath.\nlaundry on request\nback patio\npool\nfront porch",
"interaction": "I will be around much of the time to provide you with directions or sightseeing recommendations. If you need anything just ask and, if you don't see me, you can reach me by phone.",
"neighborhood_overview": "I live in the city of Los Angeles, a few blocks north of Van Nuys in the San Fernando Valley. It's quiet and residential but less than a 5-minute drive or 15-minute walk to a wide range of Asian and Latino restaurants. If you prefer American fare and take-out you are equally close to Chipotle, Ono Hawaiin BBQ, Blaze Pizza, Starbucks, TOGO's, Tutti Frutti (frozen yogurt), In-n-Out Burger and Home Town Buffet as well as to the Regency Plant 16 movie theaters.",
"transit": "There are buses that go along the major cross streets (Roscoe and Van Nuys Boulevard). One can take a bus to the Orange Line and the Orange Line to the train in North Hollywood. From there you can get to Hollywood or Downtown L.A. I would opt for Ubering to your destination or at least to the North Hollywood train station. Ubers are quick to pick you up here and much of the time you can share a ride very inexpensively. From the Airport, if you are not renting a car, take Uber or Super Shuttle. I recommend taking Shuttle2LAX ($20 dollar flat rate - book online) but not FROM the airport as there can be a very long wait.",
"amenities": [
"TV",
"Cable TV",
"Wifi",
"Air conditioning",
"Pool",
"Pets live on this property",
"Cat(s)",
"Heating",
"Smoke detector",
"Essentials",
"Shampoo",
"Lock on bedroom door",
"Hangers",
"Hair dryer",
"Iron",
"translation missing: en.hosting_amenity_49",
"translation missing: en.hosting_amenity_50",
"Private entrance",
"Hot water",
"Bed linens",
"Extra pillows and blankets",
"Microwave",
"Coffee maker",
"Refrigerator",
"Dishes and silverware",
"Single level home",
"BBQ grill",
"Patio or balcony",
"Garden or backyard",
"Luggage dropoff allowed",
"Wide hallways",
"No stairs or steps to enter",
"Wide entrance for guests",
"Flat path to guest entrance",
"Well-lit path to entrance",
"Disabled parking spot"
],
"is_location_exact": true,
"cancel_policy_short_str": "Flexible",
"star_rating": 5,
"price_for_extra_person_native": 15,
"weekly_price_native": null,
"monthly_price_native": null,
"time_zone_name": "America/Los_Angeles",
"loc": {
"type": "Point",
"coordinates": [
-118.43941,
34.21287
]
},
"exists": true,
"created_at": "2017-05-20T10:40:32.208Z",
"updated_at": "2019-11-09T10:19:55.288Z",
"cleaning_fee_native": 35,
"extras_price_native": 35,
"in_building": false,
"in_toto_area": false,
"instant_book_enabled": true,
"is_business_travel_ready": false,
"listing_cleaning_fee_native": 35,
"listing_monthly_price_native": null,
"listing_price_for_extra_person_native": 15,
"listing_weekend_price_native": 69,
"listing_weekly_price_native": null,
"localized_city": "Los Angeles",
"special_offer": null,
"toto_opt_in": null,
"weekly_price_factor": 0.95,
"wireless_info": null,
"host_id": 15564576,
"airbnb_id": 18076608
},
{
"id": 13577446,
"city": "Los Angeles",
"picture_url": "https://a0.muscache.com/im/pictures/2ae7683a-a3c2-4ece-b5fe-fea01dc1f112.jpg?aki_policy=large",
"thumbnail_url": "https://a0.muscache.com/im/pictures/2ae7683a-a3c2-4ece-b5fe-fea01dc1f112.jpg?aki_policy=small",
"medium_url": "https://a0.muscache.com/im/pictures/2ae7683a-a3c2-4ece-b5fe-fea01dc1f112.jpg?aki_policy=medium",
"xl_picture_url": "https://a0.muscache.com/im/pictures/2ae7683a-a3c2-4ece-b5fe-fea01dc1f112.jpg?aki_policy=x_large",
"user_id": 9140511,
"price": 13,
"native_currency": "USD",
"price_native": 13,
"price_formatted": "$13",
"lat": 34.235966829380835,
"lng": -118.45276089852146,
"country": "United States",
"name": "Shared space for Budget Savvy Travelers",
"smart_location": "Los Angeles, CA",
"has_double_blind_reviews": false,
"instant_bookable": true,
"bedrooms": 1,
"beds": 1,
"bathrooms": 1,
"market": "Los Angeles",
"min_nights": 1,
"neighborhood": "Panorama City",
"person_capacity": 2,
"state": "CA",
"zipcode": "91402",
"address": "Los Angeles, CA, United States",
"country_code": "US",
"cancellation_policy": "strict",
"property_type": "Apartment",
"reviews_count": 57,
"room_type": "Shared room",
"room_type_category": "shared_room",
"picture_count": 7,
"currency_symbol_left": "$",
"currency_symbol_right": null,
"bed_type": "Airbed",
"bed_type_category": "airbed",
"require_guest_profile_picture": false,
"require_guest_phone_verification": false,
"force_mobile_legal_modal": false,
"cancel_policy": 5,
"check_in_time": 17,
"check_out_time": 10,
"guests_included": 1,
"license": null,
"max_nights": 1125,
"square_feet": null,
"locale": "en",
"has_viewed_terms": true,
"has_viewed_cleaning": null,
"has_agreed_to_legal_terms": true,
"has_viewed_ib_perf_dashboard_panel": null,
"language": "en",
"public_address": "Los Angeles, CA, United States",
"map_image_url": "https://maps.googleapis.com/maps/api/staticmap?maptype=roadmap&markers=34.235966829380835%2C-118.45276089852146&size=480x320&zoom=15&client=gme-airbnbinc&channel=monorail-prod&signature=ZWjg5piYc7JT7eOjxI3wlOrhoyo%3D",
"experiences_offered": "none",
"max_nights_input_value": 1125,
"min_nights_input_value": 1,
"requires_license": false,
"property_type_id": 1,
"house_rules": "This listing is located in the living room and near the kitchen area. Some guests might wake up early and will be using some stuff in the kitchen. If this does not bother you, then my place will be a good place for you to save. \n\nMy place is always cozy and clean and I require all my guests to take off their shoes upon entering. You can place your shoes in the closet near the entrance.",
"security_deposit_native": null,
"security_price_native": null,
"security_deposit_formatted": "",
"description": "A Full Airbed for 2 guests or a Twin Airbed for 1 guest will be pumped in the living room.\n\nParking is free but you need to coordinate your arrival/schedule with me since it is a tandem parking. \n\nPlease note that this is a shared space, not a private room. This is an ideal place for travelers who will be out exploring the city during the day.\n\nThe listing is located in the living room, near the kitchen area. \n\nThere is no privacy in this listing, but my roommate, my mom and I are very respectful, so expect a quiet time after 9 pm. \n\nSince this listing is a shared space, you would expect me and/or my mom to use the kitchen.\n\nGuests have Full access to the kitchen and the fridge.\n\nFeel free to cook your own meal.\n\nI love to interact with guests. I usually provide tips for travelers and having good conversation at all times. I am very open-minded.\n\nMy place is near a bus stop.\nWalmart and other restaurants are also close to my place.\n\nThere is a bus stop nearby. My place is in the Valley area of Los Angeles.\n\nRenting a car or ridesharing is the best way to go around the city of LA.\n\nYou can use the following codes for ride credits:\n\nUber free ride - $15 use this code: v79p5 \nLyft free ride - $50 use this code: JOSEPH847061\n\nThe guest is required to take off his/her shoes when inside the apartment. There is a closet in the entrance that can be used to place the shoes.\n\nAirconditioner is set at 70° Fahrenheit. If this is too warm, extra fan is available. If too cold, extra blankets is also available to use. Please do not hesitate to request.",
"description_locale": "en",
"summary": "A Full Airbed for 2 guests or a Twin Airbed for 1 guest will be pumped in the living room.\n\nParking is free but you need to coordinate your arrival/schedule with me since it is a tandem parking. \n\nPlease note that this is a shared space, not a private room. This is an ideal place for travelers who will be out exploring the city during the day.",
"space": "The listing is located in the living room, near the kitchen area. \n\nThere is no privacy in this listing, but my roommate, my mom and I are very respectful, so expect a quiet time after 9 pm. \n\nSince this listing is a shared space, you would expect me and/or my mom to use the kitchen.",
"access": "Guests have Full access to the kitchen and the fridge.\n\nFeel free to cook your own meal.",
"interaction": "I love to interact with guests. I usually provide tips for travelers and having good conversation at all times. I am very open-minded.",
"neighborhood_overview": "My place is near a bus stop.\nWalmart and other restaurants are also close to my place.",
"transit": "There is a bus stop nearby. My place is in the Valley area of Los Angeles.\n\nRenting a car or ridesharing is the best way to go around the city of LA.\n\nYou can use the following codes for ride credits:\n\nUber free ride - $15 use this code: v79p5 \nLyft free ride - $50 use this code: JOSEPH847061",
"amenities": [
"TV",
"Internet",
"Wifi",
"Air conditioning",
"Kitchen",
"Free parking on premises",
"Heating",
"Family/kid friendly",
"Smoke detector",
"Carbon monoxide detector",
"Essentials",
"Shampoo",
"24-hour check-in",
"Iron",
"Hot water",
"Bed linens",
"Extra pillows and blankets",
"Microwave",
"Coffee maker",
"Refrigerator",
"Cooking basics",
"Oven",
"Stove",
"Other",
"Air purifier"
],
"is_location_exact": false,
"cancel_policy_short_str": "Strict",
"star_rating": 5,
"price_for_extra_person_native": 10,
"weekly_price_native": null,
"monthly_price_native": null,
"time_zone_name": "America/Los_Angeles",
"loc": {
"type": "Point",
"coordinates": [
-118.45276089852146,
34.235966829380835
]
},
"exists": false,
"created_at": "2016-08-22T09:07:19.497Z",
"updated_at": "2018-04-02T03:58:13.711Z",
"host_id": 9140511,
"airbnb_id": 13577446
},
{
"id": 23843196,
"city": "Los Angeles",
"picture_url": "https://a0.muscache.com/im/pictures/fac6c2d9-f9c3-48a7-aa3d-369a047c3503.jpg?aki_policy=large",
"thumbnail_url": "https://a0.muscache.com/im/pictures/fac6c2d9-f9c3-48a7-aa3d-369a047c3503.jpg?aki_policy=small",
"medium_url": "https://a0.muscache.com/im/pictures/fac6c2d9-f9c3-48a7-aa3d-369a047c3503.jpg?aki_policy=medium",
"xl_picture_url": "https://a0.muscache.com/im/pictures/fac6c2d9-f9c3-48a7-aa3d-369a047c3503.jpg?aki_policy=x_large",
"user_id": 179050983,
"price": 70,
"native_currency": "USD",
"price_native": 70,
"price_formatted": "$70",
"lat": 34.22445,
"lng": -118.44581,
"country": "United States",
"name": "Garage converted to Guesthouse in the Valley",
"smart_location": "Los Angeles, CA",
"has_double_blind_reviews": false,
"instant_bookable": true,
"bedrooms": 1,
"beds": 1,
"bathrooms": 1,
"market": "Los Angeles",
"min_nights": 2,
"neighborhood": "Panorama City",
"person_capacity": 3,
"state": "CA",
"zipcode": "91402",
"address": "Los Angeles, CA, United States",
"country_code": "US",
"cancellation_policy": "flexible",
"property_type": "Guest suite",
"reviews_count": 57,
"room_type": "Entire home/apt",
"room_type_category": "entire_home",
"picture_count": 23,
"currency_symbol_left": "$",
"currency_symbol_right": null,
"bed_type": "Real Bed",
"bed_type_category": "real_bed",
"require_guest_profile_picture": false,
"require_guest_phone_verification": false,
"force_mobile_legal_modal": false,
"cancel_policy": 3,
"check_in_time": 15,
"check_out_time": 10,
"guests_included": 1,
"license": null,
"max_nights": 30,
"square_feet": null,
"locale": "en",
"has_viewed_terms": null,
"has_viewed_cleaning": null,
"has_agreed_to_legal_terms": true,
"has_viewed_ib_perf_dashboard_panel": null,
"language": "en",
"public_address": "Los Angeles, CA, United States",
"map_image_url": "https://maps.googleapis.com/maps/api/staticmap?maptype=roadmap&markers=34.22445%2C-118.44581&size=480x320&zoom=15&client=gme-airbnbinc&channel=monorail-prod&signature=L3Qj5-ZWhbPbx3wZw8xXfPSEdks%3D",
"experiences_offered": "none",
"max_nights_input_value": 30,
"min_nights_input_value": 2,
"requires_license": false,
"property_type_id": 53,
"house_rules": "1. Be aware that utilities are not included in my rent, so please be considerate and turn off lights when not being used / short shower times / make sure TV is off when not in use / always turn off air conditioner when not in use or not in the residence.\n\n2. Clean up is not mandatory but appreciated\n\n3. Lock the door when not in residence",
"security_deposit_native": 100,
"security_price_native": 100,
"security_deposit_formatted": "$100",
"description": "Newly remodeled Cozy guest house in a quiet neighborhood. Parking available on the driveway, walking distance to mall, restaurants, bank, shops, and much more.\n\nGuest House has one bedroom with TV equip with Amazon fire stick( Netflix, Amazon video, etc..) Fast speed wireless internet with access to one Ethernet port (100mbps). Queen size bed in bedroom and twin size futon in living room area. \n\nWill have access to the whole kitchen with appliances, cookware, flatware and dishware (Supermarket is walking distance).\n\nIt is small but you will have your privacy without nobody bothering you. Will be next door if you need anything,\n\nHouse is just 15 minutes from Universal Studios, 20 from Hollywood, and 25 minutes from Downtown LA. (driving distance)\n\nSanta Monica and Venice Beach are 30 minuted away. (driving distance)\n\nThere is much more things to do so feel free to ask us for any suggestions.\n\nPlease be mindful in regards of the electricity, if you are not home please turn off the AC and lights.",
"description_locale": "en",
"summary": "Newly remodeled Cozy guest house in a quiet neighborhood. Parking available on the driveway, walking distance to mall, restaurants, bank, shops, and much more.",
"space": "Guest House has one bedroom with TV equip with Amazon fire stick( Netflix, Amazon video, etc..) Fast speed wireless internet with access to one Ethernet port (100mbps). Queen size bed in bedroom and twin size futon in living room area. \n\nWill have access to the whole kitchen with appliances, cookware, flatware and dishware (Supermarket is walking distance).\n\nIt is small but you will have your privacy without nobody bothering you. Will be next door if you need anything,",
"access": "",
"interaction": "",
"neighborhood_overview": "",
"transit": "House is just 15 minutes from Universal Studios, 20 from Hollywood, and 25 minutes from Downtown LA. (driving distance)\n\nSanta Monica and Venice Beach are 30 minuted away. (driving distance)\n\nThere is much more things to do so feel free to ask us for any suggestions.",
"amenities": [
"TV",
"Wifi",
"Air conditioning",
"Kitchen",
"Free parking on premises",
"Free street parking",
"Heating",
"Family/kid friendly",
"Smoke detector",
"Carbon monoxide detector",
"First aid kit",
"Essentials",
"Shampoo",
"Lock on bedroom door",
"Hangers",
"Hair dryer",
"Iron",
"Laptop friendly workspace",
"Self check-in",
"Smart lock",
"Private entrance",
"Hot water",
"Microwave",
"Coffee maker",
"Refrigerator",
"Dishes and silverware",
"Cooking basics",
"Oven",
"Stove"
],
"is_location_exact": true,
"cancel_policy_short_str": "Flexible",
"star_rating": 5,
"price_for_extra_person_native": 0,
"weekly_price_native": null,
"monthly_price_native": null,
"time_zone_name": "America/Los_Angeles",
"loc": {
"type": "Point",
"coordinates": [
-118.44581,
34.22445
]
},
"exists": false,
"created_at": "2018-04-02T03:50:06.933Z",
"updated_at": "2019-03-10T18:43:17.227Z",
"host_id": 179050983,
"airbnb_id": 23843196
},
{
"id": 24141681,
"city": "Los Angeles",
"picture_url": "https://a0.muscache.com/im/pictures/acfb37cb-f737-47e2-af4f-305cac651b6f.jpg?aki_policy=large",
"thumbnail_url": "https://a0.muscache.com/im/pictures/acfb37cb-f737-47e2-af4f-305cac651b6f.jpg?aki_policy=small",
"medium_url": "https://a0.muscache.com/im/pictures/acfb37cb-f737-47e2-af4f-305cac651b6f.jpg?aki_policy=medium",
"xl_picture_url": "https://a0.muscache.com/im/pictures/acfb37cb-f737-47e2-af4f-305cac651b6f.jpg?aki_policy=x_large",
"user_id": 83397726,
"price": 169,
"native_currency": "USD",
"price_native": 169,
"price_formatted": "$169",
"lat": 34.22173,
"lng": -118.46776,
"country": "United States",
"name": "Garden Oasis near Universal Studios- Sleeps 6",
"smart_location": "Los Angeles, CA",
"has_double_blind_reviews": false,
"instant_bookable": true,
"bedrooms": 3,
"beds": 3,
"bathrooms": 2,
"market": "Los Angeles",
"min_nights": 3,
"neighborhood": "North Hills East",
"person_capacity": 6,
"state": "CA",
"zipcode": "91402",
"address": "Los Angeles, CA, United States",
"country_code": "US",
"cancellation_policy": "strict_14_with_grace_period",
"property_type": "Townhouse",
"reviews_count": 33,
"room_type": "Entire home/apt",
"room_type_category": "entire_home",
"picture_count": 22,
"currency_symbol_left": "$",
"currency_symbol_right": null,
"bed_type": "Real Bed",
"bed_type_category": "real_bed",
"require_guest_profile_picture": false,
"require_guest_phone_verification": false,
"force_mobile_legal_modal": false,
"cancel_policy": 44,
"check_in_time": 16,
"check_out_time": 10,
"guests_included": 6,
"license": null,
"max_nights": 1125,
"square_feet": null,
"locale": "en",
"has_viewed_terms": null,
"has_viewed_cleaning": null,
"has_agreed_to_legal_terms": true,
"has_viewed_ib_perf_dashboard_panel": null,
"language": "en",
"public_address": "Los Angeles, CA, United States",
"map_image_url": "https://maps.googleapis.com/maps/api/staticmap?maptype=roadmap&markers=34.22173%2C-118.46776&size=480x320&zoom=15&client=gme-airbnbinc&channel=monorail-prod&signature=JcDSRJZJ753zLLpH1Po0AdpzARA%3D",
"experiences_offered": "none",
"max_nights_input_value": 1125,
"min_nights_input_value": 3,
"requires_license": true,
"property_type_id": 36,
"house_rules": "- - QUIET HOURS 10pm to 9am! - No loud music or boomboxes at any time! - Guests are responsible for any fines or penalties for disturbances. Any report from the neighbors of disturbing the peace will be cause for immediate termination of guest privileges and cause for immediate eviction without refund (Website hidden by Airbnb) Guests must inform host of their purpose of travel and the number of people in their group. Guests must provide full name and copy of government issued ID to the host directly so that there is no doubt as to who is booking. Thank you. - - Rates are subject to changed until reservation is confirmed. SAFETY CONCERNS We will not be responsible for any injuries on the property, regardless of extent by use, or misuse. As a guest you agree to hold the property owners, and or management harmless from any legal action associated with your stay, by all occupants. In staying with us, you agree to use and stay in the home at your own risk. Upon requesting a reservation you agree to all the rules and terms set forth and agree to pay for any damages, and or excessive cleaning discovered. You agree to notify me of anything that needs attention, or any problems you encounter right away. You agree to be financially responsible if any of these rules are broken, keys are lost, or utilities are abused. You certify that you are at least 23 years of age. YOUR BELONGINGS Everything you bring into this home is your responsibility to manage, track, and store. This includes luggage, clothes, toiletries, towels, and food. Please keep track of your personal effects. Always double check before you depart, in order to ensure you have taken all of your belongings with you.\n- This property is intended for Family or Corporate type rentals. No large parties or large events are allowed. Loud noise and loud music are not allowed outside. Outside quite hours are between 10pm-9am when nothing louder than speaking voice is allowed. Please respect the neighbors. \n- Absolutely no smoking inside. Smoking is allowed in the back yard only when all doors and windows are closed. Breaking this rule may result in up to a $1000 cleaning fee.",
"security_deposit_native": 300,
"security_price_native": 300,
"security_deposit_formatted": "$300",
"description": "Beautiful private 3 bedroom in the heart of LA! Entertain your loved ones in comfort and splendor while enjoying all the wonders LA has to offer. From a wonderful kitchen and living area to a gorgeous backyard grill and outdoor dining to the pool table room, this home has it all! Not to mention it is close to many LA attractions including Universal Studios! Come make this your new home away from home in the City of Angels!\n\nLovely gardens with seating areas in front and back. TVs in two of the bedrooms. Armenian grill as well as a regular gas grill.\n\nEntire house except locked den area and the separate guest house on property. Tenant lives in the guests house that has its own private entrance separate from the main house entrance. Do not block the side entrance for our tenant with cars or trash cans!\n\nWe value our guests privacy while always being available.",
"description_locale": "en",
"summary": "Beautiful private 3 bedroom in the heart of LA! Entertain your loved ones in comfort and splendor while enjoying all the wonders LA has to offer. From a wonderful kitchen and living area to a gorgeous backyard grill and outdoor dining to the pool table room, this home has it all! Not to mention it is close to many LA attractions including Universal Studios! Come make this your new home away from home in the City of Angels!",
"space": "Lovely gardens with seating areas in front and back. TVs in two of the bedrooms. Armenian grill as well as a regular gas grill.",
"access": "Entire house except locked den area and the separate guest house on property. Tenant lives in the guests house that has its own private entrance separate from the main house entrance. Do not block the side entrance for our tenant with cars or trash cans!",
"interaction": "We value our guests privacy while always being available.",
"neighborhood_overview": "",
"transit": "",
"amenities": [
"TV",
"Internet",
"Wifi",
"Air conditioning",
"Kitchen",
"Free parking on premises",
"Heating",
"Family/kid friendly",
"Washer",
"Dryer",
"Smoke detector",
"Carbon monoxide detector",
"First aid kit",
"Safety card",
"Fire extinguisher",
"Essentials",
"Shampoo",
"Lock on bedroom door",
"Hangers",
"Hair dryer",
"Iron",
"Laptop friendly workspace",
"Self check-in",
"Lockbox",
"Private entrance",
"Hot water"
],
"is_location_exact": true,
"cancel_policy_short_str": "Strict (grace period)",
"star_rating": 5,
"price_for_extra_person_native": 10,
"weekly_price_native": null,
"monthly_price_native": null,
"time_zone_name": "America/Los_Angeles",
"loc": {
"type": "Point",
"coordinates": [
-118.46776,
34.22173
]
},
"exists": true,
"created_at": "2018-04-06T06:11:14.464Z",
"updated_at": "2019-09-16T17:21:38.207Z",
"host_id": 83397726,
"airbnb_id": 24141681
}
]
}
}
This endpoint retrieves Airbnb top reviewed short-term rentals based on review quantity for a specific location: city, or a zip code.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/airbnb-property/top-reviewed
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
city | String | A specific city you're looking for. | |
zip_code | Integer | Any postal zip code. | |
reviews_count | Integer | 30 | Any valid integer to fetch listings counts more than the number. |
page | Integer | 1 | page number. |
Get VRBO Top Reviewed Homes
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/airbnb-property/top-reviewed-vrbo?state=CA&city=Burbank")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/top-reviewed-vrbo?state=CA&city=Burbank")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/top-reviewed-vrbo/top-reviewed');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA',
'city' => 'Burbank'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/airbnb-property/top-reviewed-vrbo?state=CA&city=Burbank"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"items_per_page": 10,
"page": 1,
"reviews_count_limit": 30,
"total_pages": 1,
"total_items": 4,
"list": [
{
"propertyTimezone": "America/Los_Angeles",
"address": {
"city": "Burbank",
"country": "US",
"postalCode": "91506",
"stateProvince": "CA"
},
"availabilityUpdated": "2023-07-27",
"averageRating": 4.9006624,
"bedrooms": 0,
"canonicalLink": "https://www.vrbo.com/635249",
"description": "The Space\n\nA short 13 minute walk from beautiful downtown Burbank, the Burbank Sanctuary is a well-appointed and comfortable studio apartment with an elegant boutique touch. Enjoy luxury bedding, abundant amenities, 42\" flat screen and full kitchen. Experience five diamond standards with at home comfort, privacy and security. An ALDI supermarket is at the other end of the street.\n\nThe Burbank Sanctuary is a downstairs apartment. While the vast majority of our guests love the apartment, it's not for very light sleepers.\n\nRelaxation and comfort will come easy during your stay with us. Your experience includes queen-size luxury bedding, unlimited hot showers, free wifi and digital 55\" smart widescreen with Netflix, Amazon, Hulu and Pandora. There is no local TV.\n\nYou will also have a full size kitchen at your fingertips with all the cooking comforts you could wish for. A full size fridge, unlimited ice, soap, shampoo and towels are among the many delightful amenities available during your stay at the Burbank Sanctuary.\n\nEnjoy accommodations and VIP treatment of a boutique hotel with at home comfort, privacy and security.\n\nThe building is a charming and cozy 5-unit apartment residence. There is a secluded side-entrance for maximum privacy and home-like comfort.\n\nGuest Access\n\nAmple unrestricted street parking is available, no permits or pesky meter feeding required. Driveway parking is reserved for our permanent residents. Everything is digital, no keys to weigh you down during your time out and about. I set a new code for each guest which assures total privacy and security during your stay.\n\nInteraction with Guests\n\nDepending upon the time of year, Self check-in is available or you may meet and greet with your host, sharing tips and information about the apartment and local area. \n\nThe Neighborhood \n\nI love the Magnolia Park area of Burbank. This property sits next to the Chandler bike path and is walking distance from the downtown Burbank area. There's convenient food, markets and plenty of shopping nearby.\n\nGetting Around\n\nI always recommend rideshares such as Uber or Lyft, but public transportation is equally within reach.\n\nOther Things to Note\n\nI have been in the hospitality industry since 2005. I owned and operated two hotels and I have traveled extensively. My sensibilities are for the traveler and the amenities included in your stay meet my high standards for quality hotel accommodations. In addition, the Burbank Sanctuary offers the fastest and most reliable internet available in the city.\n\nHouse Rules \n\nI cater to the nonsmoker without pets. Smoking is not permitted inside the apartment nor on the property. Our other tenants dislike the aroma. We love small non-human friends, but unfortunately they are not allowed at the property. We observe quiet time from 10pm to 8am and kindly request that you do the same by turning down your music or television during these times.",
"detailPageUrl": "/635249?unitId=1183030&childrenCount=0&noDates=true",
"featuredAmenities": [
"INTERNET",
"AIR_CONDITIONING",
"TV",
"CABLE",
"PARKING",
"NO_SMOKING",
"HEATER"
],
"firstLiveInLastThirtyDays": false,
"geoCode": {
"exact": true,
"latitude": 34.177985,
"longitude": -118.320758
},
"geography": {
"description": "Burbank, Los Angeles County, California, United States of America",
"ids": [
{
"type": "LBS",
"value": "3b66d3bc-445d-4a3e-a623-8a4417745d1d"
}
],
"name": "Burbank",
"relatedGeographies": null,
"types": [
"locality"
],
"location": {
"lat": 34.18084,
"lng": -118.308968
}
},
"propertyManagerProfile": null,
"headline": "The Sanctuary - Be Pampered - Full Kitchen",
"houseRules": {
"children": {
"label": "Children not allowed",
"note": null,
"allowed": false
},
"events": {
"label": "No events",
"note": null,
"allowed": false
},
"smoking": {
"label": "No smoking",
"note": null,
"allowed": false
},
"pets": {
"label": "No pets",
"note": null,
"allowed": false
},
"unitUrl": "/units/0004/6ad4b648-15a1-4694-b38c-255370e5e59a",
"checkInTime": "4:00 PM",
"checkOutTime": "11:00 AM",
"minimumAge": {
"label": "Minimum age of primary renter:",
"note": null,
"minimumAge": 18,
"displayText": "Minimum age to rent: 18"
},
"maxOccupancy": {
"adults": null,
"guests": 2,
"label": "Max guests:",
"maxAdultsLabel": null,
"note": null,
"displayText": "Maximum overnight guests: 2"
},
"standardRules": [
{
"key": "childrenRule",
"label": "Children not allowed",
"note": null
},
{
"key": "petsRule",
"label": "No pets",
"note": null
},
{
"key": "eventsRule",
"label": "No events",
"note": null
},
{
"key": "smokingRule",
"label": "No smoking",
"note": null
}
],
"customRules": [],
"label": "House Rules",
"checkInRule": {
"label": "<strong>Check in</strong> after 4:00 PM",
"time": "4:00 PM"
},
"checkOutRule": {
"label": "<strong>Check out</strong> before 11:00 AM",
"time": "11:00 AM"
},
"childrenRule": {
"displayText": "No children allowed",
"allowed": false,
"childrenNotAllowedNote": null,
"note": null
},
"petsRule": {
"displayText": "No pets allowed",
"allowed": false,
"note": null
},
"eventsRule": {
"displayText": "No events allowed",
"allowed": false,
"maxEventAttendeesLabel": null,
"allowedEventsNote": null,
"note": null
},
"smokingRule": {
"displayText": "No smoking allowed",
"allowed": false,
"outside": null,
"inside": null,
"note": null
}
},
"cancellationPolicy": {
"cancellationPolicyPeriods": [
{
"label": "<strong>100% refund of amount paid</strong> if you cancel at least 30 days before check-in."
},
{
"label": "<strong>50% refund of amount paid</strong> (minus the service fee) if you cancel at least 14 days before check-in."
},
{
"label": "<strong>No refund</strong> if you cancel less than 14 days before check-in."
}
],
"cancellationPolicyLabel": {
"label": "<strong>Free cancellation</strong> up to",
"date": "30 days before check-in",
"isFullRefundWindow": true
},
"cancellationTimelinePeriods": [
{
"timelineLabel": "30 days before check-in",
"refundPercent": 100,
"refundWindowLabel": "100% refund",
"shortDateLocalized": null,
"isPast": false,
"isActive": false,
"iconCode": null
},
{
"timelineLabel": "14 days before check-in",
"refundPercent": 50,
"refundWindowLabel": "50% refund",
"shortDateLocalized": null,
"isPast": false,
"isActive": false,
"iconCode": null
},
{
"timelineLabel": "Check in",
"refundPercent": 0,
"refundWindowLabel": "No refund",
"shortDateLocalized": null,
"isPast": false,
"isActive": false,
"iconCode": "KEY"
}
],
"policyType": "MODERATE"
},
"instantBookable": false,
"egratedPropertyManager": null,
"platformPropertyManager": false,
"ipmGuaranteedPricingActive": false,
"isBasicListing": false,
"isCrossSell": false,
"isSubscription": false,
"listingId": "321.635249.1183030",
"listingNumber": 635249,
"minStayRange": {
"minStayHigh": 30,
"minStayLow": 30
},
"multiUnitProperty": false,
"onlineBookable": true,
"ownerManaged": true,
"ownersListingProfile": {
"aboutYou": "My sensibilities are for the traveler and the amenities meet my high standards for a quality hotel stay. I offer the fastest internet available in the city.",
"storyPhoto": null,
"uniqueBenefits": null,
"whyHere": null
},
"payPerBooking": true,
"petsAllowed": false,
"priceSummary": {
"amount": 165,
"currency": "USD",
"formattedAmount": "$165",
"pricePeriodDescription": "avg/night",
"currencySymbol": "$"
},
"propertyId": "635249",
"id": "33505162",
"propertyManagerMessaging": null,
"propertyType": "Apartment",
"propertyTypeKey": "apartment",
"recentlyAdded": false,
"registrationNumber": "",
"reviewCount": 151,
"sleeps": 2,
"sleepsDisplay": "Sleeps 2",
"spu": "vrbo-635249-1183030",
"status": "AVAILABLE",
"takesInquiries": true,
"testListing": false,
"thumbnailUrl": "https://media.vrbo.com/lodging/34000000/33510000/33505200/33505162/e73f620d.TREATMENT.jpg",
"travelerFeeEligible": true,
"videoUrls": [
"https://youtube.com/watch?v=GIiO5vRz-T8"
],
"bathrooms": {
"full": 1,
"half": 0,
"toiletOnly": 0
},
"industryHealthAssociations": [],
"regionalHealthGuidelines": [],
"impressum": null,
"allFeaturedAmenitiesRanked": [
"INTERNET",
"PETS",
"AIR_CONDITIONING",
"POOL",
"WHEELCHAIR",
"HEATER",
"FIREPLACE",
"CABLE",
"CHILDREN_WELCOME",
"WASHER_DRYER",
"HOT_TUB",
"PARKING",
"TV",
"NO_SMOKING"
],
"created_at": "2023-08-31T12:00:07.676Z",
"exists": true,
"updated_at": "2023-09-11T17:16:58.661Z",
"vrbo_id": "635249"
},
...
]
}
}
This endpoint retrieves VRBO top reviewed short-term rentals based on review quantity for a specific location: city, or a zip code.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/top-reviewed-vrbo/top-reviewed
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
city | String | A specific city you're looking for. | |
zip_code | Integer | Any postal zip code. | |
reviews_count | Integer | 30 | Any valid integer to fetch listings counts more than the number. |
page | Integer | 1 | page number. |
Get Airbnb Newly Listed Homes
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/airbnb-property/newly-listed?state=CA&city=San%20Francisco")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/newly-listed?state=CA&city=San%20Francisco")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/airbnb-property/newly-listed');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA',
'city' => 'San%20Francisco'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/airbnb-property/newly-listed?state=CA&city=San%20Francisco"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"items_per_page": 10,
"page": 1,
"total_pages": 1,
"total_items": 3,
"list": [
{
"id": 39674791,
"city": "Los Angeles",
"picture_url": "https://a0.muscache.com/im/pictures/f8e527f7-2424-43fe-ab1d-1cab4c0b304d.jpg?aki_policy=large",
"thumbnail_url": "https://a0.muscache.com/im/pictures/f8e527f7-2424-43fe-ab1d-1cab4c0b304d.jpg?aki_policy=small",
"medium_url": "https://a0.muscache.com/im/pictures/f8e527f7-2424-43fe-ab1d-1cab4c0b304d.jpg?aki_policy=medium",
"xl_picture_url": "https://a0.muscache.com/im/pictures/f8e527f7-2424-43fe-ab1d-1cab4c0b304d.jpg?aki_policy=x_large",
"user_id": 151399790,
"price": 50,
"native_currency": "USD",
"price_native": 50,
"price_formatted": "$50",
"lat": 34.24245,
"lng": -118.44668,
"country": "United States",
"name": "Private Bedroom in a Beautiful Town House",
"smart_location": "Los Angeles, CA",
"has_double_blind_reviews": false,
"instant_bookable": false,
"bedrooms": 1,
"beds": 1,
"bathrooms": 1,
"market": "Los Angeles",
"min_nights": 1,
"neighborhood": "Panorama City",
"person_capacity": 2,
"state": "CA",
"zipcode": "91402",
"address": "Los Angeles, CA, United States",
"country_code": "US",
"cancellation_policy": "flexible",
"property_type": "Townhouse",
"reviews_count": 0,
"room_type": "Private room",
"room_type_category": "private_room",
"picture_count": 12,
"currency_symbol_left": "$",
"currency_symbol_right": null,
"bed_type": "Real Bed",
"bed_type_category": "real_bed",
"require_guest_profile_picture": false,
"require_guest_phone_verification": false,
"force_mobile_legal_modal": false,
"cancel_policy": 3,
"check_in_time": null,
"check_out_time": null,
"guests_included": 1,
"license": null,
"max_nights": 7,
"square_feet": null,
"locale": "en",
"has_viewed_terms": null,
"has_viewed_cleaning": null,
"has_agreed_to_legal_terms": true,
"has_viewed_ib_perf_dashboard_panel": null,
"language": "en",
"public_address": "Los Angeles, CA, United States",
"map_image_url": "https://maps.googleapis.com/maps/api/staticmap?maptype=roadmap&markers=34.24245%2C-118.44668&size=480x320&zoom=15&client=gme-airbnbinc&channel=monorail-prod&signature=N0j-sBKpTaw4TroBPWs0EPuyhT0%3D",
"experiences_offered": "none",
"max_nights_input_value": 7,
"min_nights_input_value": 1,
"requires_license": true,
"property_type_id": 36,
"house_rules": "No shoes in the house",
"security_deposit_native": 0,
"security_price_native": 0,
"security_deposit_formatted": "$0",
"description": "One private bedroom available with a shared bathroom and one extra restroom downstairs in a big, beautifully designed two-story house. \n\nParking is available in a safe, gated community.",
"description_locale": "en",
"summary": "One private bedroom available with a shared bathroom and one extra restroom downstairs in a big, beautifully designed two-story house. \n\nParking is available in a safe, gated community.",
"space": "",
"access": "",
"interaction": "",
"neighborhood_overview": "",
"transit": "",
"amenities": [
"Wifi",
"Air conditioning",
"Pool",
"Kitchen",
"Free parking on premises",
"Indoor fireplace",
"Heating",
"Smoke detector",
"Carbon monoxide detector",
"First aid kit",
"Fire extinguisher",
"Essentials",
"Shampoo",
"Lock on bedroom door",
"Hangers",
"Hair dryer",
"Iron",
"Laptop friendly workspace",
"Private living room"
],
"is_location_exact": true,
"cancel_policy_short_str": "Flexible",
"star_rating": null,
"price_for_extra_person_native": 50,
"weekly_price_native": null,
"monthly_price_native": null,
"time_zone_name": "America/Los_Angeles",
"loc": {
"type": "Point",
"coordinates": [
-118.44668,
34.24245
]
},
"cleaning_fee_native": 10,
"listing_cleaning_fee_native": 10,
"instant_book_enabled": false,
"special_offer": null,
"extras_price_native": 10,
"listing_monthly_price_native": null,
"listing_price_for_extra_person_native": 50,
"listing_weekend_price_native": 55,
"listing_weekly_price_native": null,
"localized_city": "Los Angeles",
"monthly_price_factor": 0.8,
"weekly_price_factor": 0.9,
"in_building": false,
"in_toto_area": false,
"toto_opt_in": null,
"is_business_travel_ready": false,
"wireless_info": null,
"exists": true,
"created_at": "2019-11-09T10:26:05.229Z",
"host_id": 151399790,
"airbnb_id": 39674791
},
...
]
}
}
This endpoint retrieves all Airbnb short-term rentals that are recently listed for a specific location: city, or a zip code.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/airbnb-property/newly-listed
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
city | String | A specific city you're looking for. | |
zip_code | Integer | Any postal zip code. | |
page | Integer | 1 | Page number |
Get VRBO Newly Listed Homes
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/airbnb-property/newly-listed-vrbo?state=CA&city=Burbank")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/newly-listed-vrbo?state=CA&city=Burbank")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/airbnb-property/newly-listed-vrbo');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA',
'city' => 'Burbank'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/airbnb-property/newly-listed?state=CA&city=Burbank"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"items_per_page": 10,
"page": 1,
"total_pages": 1,
"total_items": 3,
"list": [
{
"propertyTimezone": "America/Los_Angeles",
"address": {
"city": "Burbank",
"country": "US",
"postalCode": "91502",
"stateProvince": "CA"
},
"availabilityUpdated": "2023-09-11",
"averageRating": 0,
"bedrooms": 2,
"canonicalLink": "https://www.vrbo.com/3536272",
"description": "- (RLNE8088308) Available for lease in the Burbank Collection Luxury Condos is an immaculate 2BD 2BA unit overlooking the glistening pool. 1, 100 SF in size, this well-kept, fully furnished unit features high ceilings, an abundance of light, and an open floor plan w/ a dining area. The kitchen features stainless appliances (oven, range, microwave, dishwasher, refrigerator) and a peninsula style island w/ granite counters perfect for entertaining. The master suites include walk-in closets and luxurious master bath with dual vanities, soaking tub and separate shower. Laundry is inside the unit and there is a private opera patio for added enjoyment. Building amenities include controlled access, a pool, clubhouse with billiard table, bocce ball court, putting green, BBQ area with fire pit, well equipped gym and 2 side-by-side secured parking spaces. Burbank living at its finest awaits! Do not miss the opportunity to be in the heart of Downtown Burbank near Disney, NBC, Warner Bros, Universal, Nickelodeon Studios with easy access to the 5 freeway and the Bob Hope airport, trendy restaurants, shops, Burbank Town Center and the Empire Center. 052691502JP23075129 Please call Listing provided by Artak Dovlatyan of Specialized Realty (LA State License 01250473) 818Leases.com Houzlet publishes listings on Vrbo; which in turn, allows tenants to instantly rent seasonal rentals. Houzlet’s properties are managed by licensed real estate agents. Although the property is an instant rental, it’s possible there can be another pending application. If the home is not available, we can offer you another suitable option or you can cancel for free. \n\n\nHouse Rules. \nThe refundable policy is as follows:\n\n1.\t100% refund less the service fee if you cancel 30 days prior to move-in.\n2.\t100% refund less the service fee if you are not approved to rent or the home is unavailable. \n3.\tNot refundable if you are within 30 days from arrival or if you signed the leased with the Agent (whichever comes first).\n\nPlease note this property may require a tenant screening at an extra cost to you. You will be required to sign a lease with the landlord. Security deposit vary and range from USD 500 up to one full month rent that is payable directly to the landlord.",
"detailPageUrl": "/3536272?unitId=4109418&childrenCount=0&noDates=true",
"featuredAmenities": [
"INTERNET",
"AIR_CONDITIONING",
"WASHER_DRYER",
"PARKING",
"NO_SMOKING"
],
"firstLiveInLastThirtyDays": false,
"geoCode": {
"exact": true,
"latitude": 34.181442,
"longitude": -118.311191
},
"geography": {
"description": "Downtown Burbank, Burbank, California, United States of America",
"ids": [
{
"type": "LBS",
"value": "8adba945-cabb-4399-b6de-4af55348bab7"
}
],
"name": "Downtown Burbank",
"relatedGeographies": null,
"types": [
"neighborhood"
],
"location": {
"lat": 34.182269,
"lng": -118.310087
}
},
"propertyManagerProfile": null,
"headline": "2 Bedroom Single_family (626774) by Houzlet",
"houseRules": {
"children": {
"label": "Children allowed",
"note": null,
"allowed": true
},
"events": {
"label": "No events",
"note": null,
"allowed": false
},
"smoking": {
"label": "No smoking",
"note": null,
"allowed": false
},
"pets": {
"label": "No pets",
"note": null,
"allowed": false
},
"unitUrl": "/units/0004/a26f8b00-9251-4fb2-a2e4-4ab72136219a",
"checkInTime": "3:00 PM",
"checkOutTime": "11:00 AM",
"minimumAge": {
"label": "Minimum age of primary renter:",
"note": null,
"minimumAge": null,
"displayText": null
},
"maxOccupancy": {
"adults": 4,
"guests": 4,
"label": "Max guests:",
"maxAdultsLabel": "(sleeps up to 4 adults)",
"note": null,
"displayText": "Maximum overnight guests: 4 (sleeps up to 4 adults)"
},
"standardRules": [
{
"key": "childrenRule",
"label": "Children allowed",
"note": null
},
{
"key": "petsRule",
"label": "No pets",
"note": null
},
{
"key": "eventsRule",
"label": "No events",
"note": null
},
{
"key": "smokingRule",
"label": "No smoking",
"note": null
}
],
"customRules": [],
"label": "House Rules",
"checkInRule": {
"label": "<strong>Check in</strong> after 3:00 PM",
"time": "3:00 PM"
},
"checkOutRule": {
"label": "<strong>Check out</strong> before 11:00 AM",
"time": "11:00 AM"
},
"childrenRule": {
"displayText": null,
"allowed": true,
"childrenNotAllowedNote": null,
"note": null
},
"petsRule": {
"displayText": "No pets allowed",
"allowed": false,
"note": null
},
"eventsRule": {
"displayText": "No events allowed",
"allowed": false,
"maxEventAttendeesLabel": null,
"allowedEventsNote": null,
"note": null
},
"smokingRule": {
"displayText": "No smoking allowed",
"allowed": false,
"outside": null,
"inside": null,
"note": null
}
},
"cancellationPolicy": {
"cancellationPolicyPeriods": [
{
"label": "<strong>100% refund of amount payable</strong> if you cancel at least 30 days before check-in."
},
{
"label": "<strong>50% refund of amount payable</strong> (minus the service fee) if you cancel at least 14 days before check-in."
},
{
"label": "<strong>No refund</strong> if you cancel less than 14 days before check-in."
}
],
"cancellationPolicyLabel": {
"label": "<strong>Free cancellation</strong> up to",
"date": "30 days before check-in",
"isFullRefundWindow": true
},
"cancellationTimelinePeriods": [
{
"timelineLabel": "30 days before check-in",
"refundPercent": 100,
"refundWindowLabel": "100% refund",
"shortDateLocalized": null,
"isPast": false,
"isActive": false,
"iconCode": null
},
{
"timelineLabel": "14 days before check-in",
"refundPercent": 50,
"refundWindowLabel": "50% refund",
"shortDateLocalized": null,
"isPast": false,
"isActive": false,
"iconCode": null
},
{
"timelineLabel": "Check in",
"refundPercent": 0,
"refundWindowLabel": "No refund",
"shortDateLocalized": null,
"isPast": false,
"isActive": false,
"iconCode": "KEY"
}
],
"policyType": "MODERATE"
},
"instantBookable": true,
"egratedPropertyManager": null,
"platformPropertyManager": false,
"ipmGuaranteedPricingActive": true,
"isBasicListing": false,
"isCrossSell": false,
"isSubscription": false,
"listingId": "321.3536272.4109418",
"listingNumber": 3536272,
"minStayRange": {
"minStayHigh": 30,
"minStayLow": 30
},
"multiUnitProperty": false,
"onlineBookable": true,
"ownerManaged": false,
"ownersListingProfile": {
"aboutYou": null,
"storyPhoto": null,
"uniqueBenefits": null,
"whyHere": null
},
"payPerBooking": true,
"petsAllowed": false,
"priceSummary": {
"amount": 178,
"currency": "USD",
"formattedAmount": "$178",
"pricePeriodDescription": "avg/night",
"currencySymbol": "$"
},
"propertyId": "3536272",
"id": "96433850",
"propertyManagerMessaging": null,
"propertyType": "Apartment",
"propertyTypeKey": "apartment",
"recentlyAdded": true,
"registrationNumber": "320623",
"reviewCount": 0,
"sleeps": 4,
"sleepsDisplay": "Sleeps 4",
"spu": "vrbo-3536272-4109418",
"status": "AVAILABLE",
"takesInquiries": true,
"testListing": false,
"thumbnailUrl": "https://media.vrbo.com/lodging/97000000/96440000/96433900/96433850/w1016h675x4y4-cc2e3dcb.TREATMENT.jpg",
"travelerFeeEligible": true,
"videoUrls": [],
"bathrooms": {
"full": 2,
"half": 0,
"toiletOnly": 0
},
"industryHealthAssociations": [],
"regionalHealthGuidelines": [],
"impressum": null,
"allFeaturedAmenitiesRanked": [
"INTERNET",
"PETS",
"AIR_CONDITIONING",
"POOL",
"WHEELCHAIR",
"HEATER",
"FIREPLACE",
"CABLE",
"CHILDREN_WELCOME",
"WASHER_DRYER",
"HOT_TUB",
"PARKING",
"TV",
"NO_SMOKING"
],
"created_at": "2023-09-11T17:15:24.668Z",
"vrbo_id": "3536272"
},
...
]
}
}
This endpoint retrieves all VRBO short-term rentals that are recently listed for a specific location: city, or a zip code.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/airbnb-property/newly-listed
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state should be provided to the api or api will throw error 404. | |
country | String | US | Country ISO-3166 Alpha-2code, e.g. GB, ES. |
city | String | A specific city you're looking for. | |
zip_code | Integer | Any postal zip code. | |
page | Integer | 1 | Page number |
Long Term Rentals
The Traditional Property Object
The Traditional Property Object:
{
"id": 5637233,
"title": "Condominium, Traditional - Los Angeles (City), CA",
"lon": -118.381,
"lat": 34.0568,
"state": "CA",
"city": "Los Angeles",
"county": "LOS ANGELES",
"neighborhood": {
"id": 275024,
"name": "Pico-Robertson",
"country": "United States",
"city": "Los Angeles",
"state": "CA",
"latitude": 34.053022,
"longitude": -118.383312,
"singleHomeValue": 1237000,
"mashMeter": 66.99,
"description": null,
"is_village": 0
},
"description": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
"price": 3300,
"baths": 1,
"beds": 1,
"num_of_units": null,
"sqft": 1028,
"lot_size": 12787,
"days_on_market": 3,
"year_built": 1981,
"tax": null,
"tax_history": null,
"videos": null,
"virtual_tours": null,
"parking_spots": 2,
"parking_type": "Garage",
"walkscore": null,
"mls_id": "19508890",
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"extra_images": [
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
],
"zipcode": "90035",
"address": "1110 South SHENANDOAH Street #2",
"type": "apartment",
"property_type": "Rental",
"property_sub_type": "Condominium",
"source": "Compass",
"architecture_style": "New Traditional",
"has_pool": null,
"is_water_front": null,
"heating_system": "Central Furnace",
"cooling_system": "Central A/C",
"view_type": null,
"schools": null,
"parcel_number": "4332019046",
"neighborhood_id": 275024,
"modification_timestamp": "2019-09-11T08:33:26.000Z",
"created_at": "2019-09-12T04:50:05.000Z",
"updated_at": "2019-09-12T05:31:02.000Z",
"agents": [
{
"id": 101289,
"agent_id": 101289,
"property_id": 5637233,
"created_at": "2017-06-21T09:37:15.000Z",
"updated_at": "2019-09-01T09:43:53.000Z",
"first_name": "Nikki",
"last_name": "Hochstein",
"email": "[email protected]",
"primary_phone": "(310) 968-1116",
"phone_number": "(310) 437-7500",
"role": "Listing",
"office_id": 1643,
"website": "https://www.compass.com/",
"address": "2113-2115 Main St.",
"city": "SANTA MONICA",
"state": "CA",
"county": "Los Angeles",
"zip_code": "90405",
"company": "Compass",
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"real_estate_licence": "01338003",
"years_of_experience": null,
"areas_served": null,
"agent_specialities": null,
"agent_experience": null,
"summary": null,
"title": null,
"mls_id": null,
"price_range": null,
"sold_properties": null,
"active_properties": null
}
]
}
We currently maintain over 1.5M+ rental listings, with active listings added daily from MLS sources nationwide.
Traditional Property Data Dictionary
Attribute | Definition | Possible Returns |
---|---|---|
id | Mashvisor Traditional Property ID | Integer |
title | A short title for the property | String |
description | Longer description of the property | String |
type | The property sub type as provided by the MLS provider | String Possible values: 1. single_home 2.apartment 3.townhouse 4.Multi Family 5. Other |
property_type | The property main type as provided by the MLS provider | String Possible values: * Commercial * Lots And Land * MultiFamily * Other * Rental * Residential |
property_sub_type | The property property listing category | String Possible values: * Apartment * Condominium * Duplex * Other * Quadruplex * Single Family Attached * Single Family Detached * Townhouse * Triplex |
address | The full street address of the property, ex: 36981 Newark Blvd #B |
String |
city | The city where the property is located | String |
state* | The state where the property is located | String |
county | County where a property is located | String |
zipcode | Postal code where a property is located | Integer |
neighborhood | The neighborhood where the property is located | String |
beds | Property full bedrooms count | Integer |
baths | Property full bathrooms count | Integer |
num_of_units | Number of units in the property, only exists with multifamily properties | Integer |
sqft | Property living area in square feet unit | Integer |
lot_size | The lot size of the property in square feet unit | Integer |
parcel_number | The property APN assigned by tax assessor | String |
mls_id | The MLS ID of the property | String |
year_built | The year was constructed in | Integer |
walkscore | The walkscore value of the property address | Integer |
tax | The last knows tax amount | Integer |
tax_history | Collection of all the taxes reported for a property | JSON Array |
price | The listed rent price for the property | Integer |
price_per_sqft | Price per sqft value | Float |
days_on_market | Number of days since the property was on market for sale | Integer |
parking_spots | Number of parking spots | Integer |
parking_type | An indicator for the parking type | Integer |
url | The URL of the property | String |
source | The name of the entity authorized the property to be syndicated | String |
lat | Latitude of the property | Float |
lon | Longitude of the property | Float |
heating_system | The heating system type | String |
cooling_system | The cooling system type | String |
neighborhood_id | The property neighborhood ID | Integer |
schools | Collection of all the schools nearby a property | JSON Array |
view_type | The property view type | String Possible values: * Airport * Average * Bluff * Bridge * Canyon * City * Desert * Forest * Golf Course * Harbor * Hills * Lake * Marina * Mountain * None * Ocean * Other * Panorama * Park * Ravine * River * Territorial * Unknown * Valley * Vista * Water |
image | The property main image URL | String |
extra_images | List of the images associated with a property | String |
videos | Videos associated with a property | String |
virtual_tours | Virtual tour link for a property | String |
updated_at | Date it’s updated in the database | Date |
agent_id | The property’s agent ID associated to it | Integer |
appliances | A description of the appliance as provided | JSON Array Possible values: * BarbequeorGrill * CoffeeSystem * CoffeeSystem-Roughin * Cooktop * Cooktop-Electric * Cooktop-Electric2burner * Cooktop-Electric6burner * Cooktop-Gas * Cooktop-Gas2burner * Cooktop-Gas5burner * Cooktop-Gas6burner * Cooktop-GasCustom * Cooktop-Induction * Cooktop-Induction2burner * Cooktop-Induction6burner * Dishwasher * Dishwasher-Drawer * Dishwasher-Twoormore * Dryer * Dryer-Dualfuel * Dryer-Electric110V * Dryer-Electric220V * Dryer-Gas * Dryer-Gasroughin * Freezer * Freezer-Compact * Freezer-Upright * GarbageDisposer * IceMaker * Microwave * None * Other * Oven * Oven-Convection * Oven-Double * Oven-DoubleElectric * Oven-DoubleGas * Oven-Gas * Oven-Gas3wide * Oven-Self-Cleaning * Oven-Steam * Oven-Twin * Oven-TwinElectric * Oven-TwinGas * Oven-TwinGas3wide * Oven-TwinMixed * Range * Range-BuiltIn * Range-Dual * Range-Dual10burner * Range-Dual6burner * Range-Dual8burner * Range-Electric * Range-Gas * Range-Gas10burner * Range-Gas6burner * Range-Gas8burner * Range-Induction * Range-Other * Rangetop-Electric * Rangetop-Electric2burner * Rangetop-Electric6burner * Rangetop-Gas * Rangetop-Gas10burner * Rangetop-Gas2burner * Rangetop-Gas4burnercompact * Rangetop-Gas6burner * Rangetop-Gas8burner * Rangetop-GasCustom * Rangetop-Induction * Rangetop-Induction2burner * Rangetop-Induction6burner * Refrigerator * Refrigerator-Bar * Refrigerator-Built-in * Refrigerator-Built-inWithPlumbing * Refrigerator-Drawer * Refrigerator-SidebySide * Refrigerator-Undercounter * Refrigerator-WineStorage * Refrigerator-WithPlumbing * TrashCompactor * VacuumSystem * VacuumSystem-Roughin * VentHood * VentHood10burner * VentHood6burner * VentHood8burner * WarmingDrawer * Washer * Washer-Frontload * Washer-Steamer * Washer-Topload * Washer/DryerCombo * Washer/DryerStack * Water-Filter * Water-InstantHot * Water-Purifier * Water-Softener |
detailed_characteristics | Detailed characteristics | JSON Array |
Get Traditional Property
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/traditional-property?id=5637233&state=CA")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/traditional-property?id=5637233&state=CA")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/traditional-property');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'CA',
'id' => 5637233
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/traditional-property?id=5637233&state=CA"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"id": 5637233,
"title": "Condominium, Traditional - Los Angeles (City), CA",
"lon": -118.381,
"lat": 34.0568,
"state": "CA",
"city": "Los Angeles",
"county": "LOS ANGELES",
"neighborhood": {
"id": 275024,
"name": "Pico-Robertson",
"country": "United States",
"city": "Los Angeles",
"state": "CA",
"latitude": 34.053022,
"longitude": -118.383312,
"singleHomeValue": 1237000,
"mashMeter": 66.99,
"description": null,
"is_village": 0
},
"description": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
"price": 3300,
"baths": 1,
"beds": 1,
"num_of_units": null,
"sqft": 1028,
"lot_size": 12787,
"days_on_market": 3,
"year_built": 1981,
"tax": null,
"tax_history": null,
"videos": null,
"virtual_tours": null,
"parking_spots": 2,
"parking_type": "Garage",
"walkscore": null,
"mls_id": "19508890",
"image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"extra_images": [
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
"https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
],
"zipcode": "90035",
"address": "1110 South SHENANDOAH Street #2",
"type": "apartment",
"property_type": "Rental",
"property_sub_type": "Condominium",
"source": "Compass",
"architecture_style": "New Traditional",
"has_pool": null,
"is_water_front": null,
"heating_system": "Central Furnace",
"cooling_system": "Central A/C",
"view_type": null,
"schools": null,
"parcel_number": "4332019046",
"neighborhood_id": 275024,
"modification_timestamp": "2019-09-11T08:33:26.000Z",
"created_at": "2019-09-12T04:50:05.000Z",
"updated_at": "2019-09-12T05:31:02.000Z",
"agents": [
{
"id": 101289,
"agent_id": 101289,
"property_id": 5637233,
"created_at": "2017-06-21T09:37:15.000Z",
"updated_at": "2019-09-01T09:43:53.000Z",
"first_name": "Nikki",
"last_name": "Hochstein",
"email": "[email protected]",
"primary_phone": "(310) 968-1116",
"phone_number": "(310) 437-7500",
"role": "Listing",
"office_id": 1643,
"website": "https://www.compass.com/",
"address": "2113-2115 Main St.",
"city": "SANTA MONICA",
"state": "CA",
"county": "Los Angeles",
"zip_code": "90405",
"company": "Compass",
"image": "http://photos.mashvisor.com/CLAWCA/acbfbc71874811e5803c125f38ce48fb/20160601185736249.png",
"real_estate_licence": "01338003",
"years_of_experience": null,
"areas_served": null,
"agent_specialities": null,
"agent_experience": null,
"summary": null,
"title": null,
"mls_id": null,
"price_range": null,
"sold_properties": null,
"active_properties": null
}
]
}
}
This endpoint retrieves traditional property location data.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/traditional-property
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | The traditional property Id from the Mashvisor database. | |
state* | String | The state of the property should be provided to the api or api will throw error 404. | |
parcel_number | String | Property parcel or APN | |
mls_id | String | Property MLS id | |
address | String | Property street address | |
city | String | Property city | |
zip_code | String | Property zip code |
Get Neighborhood Historical Performance
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/neighborhood/268201/historical/traditional?state=CA")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/neighborhood/268201/historical/traditional?state=CA")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/neighborhood/268201/historical/traditional');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'CA'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/neighborhood/268201/historical/traditional?state=CA"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"months": [
{
"year": 2019,
"month": 9,
"zero_room_value": 2130,
"one_room_value": 3683.02,
"two_room_value": 4151.85,
"three_room_value": 4525.05,
"four_room_value": 4570
},
{
"year": 2019,
"month": 8,
"zero_room_value": 2130,
"one_room_value": 3683.02,
"two_room_value": 4151.85,
"three_room_value": 4525.05,
"four_room_value": 11196
},
{
"year": 2019,
"month": 7,
"zero_room_value": 2130,
"one_room_value": 3683.02,
"two_room_value": 4151.85,
"three_room_value": 4525.05,
"four_room_value": 4570
},
{
"year": 2019,
"month": 6,
"zero_room_value": 2130,
"one_room_value": 3683.02,
"two_room_value": 4151.85,
"three_room_value": 4525.05,
"four_room_value": 4570
},
{
"year": 2019,
"month": 5,
"zero_room_value": 2130,
"one_room_value": 3683.02,
"two_room_value": 4151.85,
"three_room_value": 4525.05,
"four_room_value": 4570
},
{
"year": 2019,
"month": 4,
"zero_room_value": 2130,
"one_room_value": 3683.02,
"two_room_value": 4151.85,
"three_room_value": 4525.05,
"four_room_value": 4570
},
{
"year": 2019,
"month": 3,
"zero_room_value": 2130,
"one_room_value": 3683.02,
"two_room_value": 4151.85,
"three_room_value": 4525.05,
"four_room_value": 4570
},
{
"year": 2019,
"month": 2,
"zero_room_value": 2130,
"one_room_value": 3683.02,
"two_room_value": 4151.85,
"three_room_value": 4525.05,
"four_room_value": 4570
},
{
"year": 2019,
"month": 1,
"zero_room_value": 2130,
"one_room_value": 3683.02,
"two_room_value": 4151.85,
"three_room_value": 4525.05,
"four_room_value": 4570
},
{
"year": 2018,
"month": 12,
"zero_room_value": null,
"one_room_value": 3683.02,
"two_room_value": 4151.85,
"three_room_value": 4525.05,
"four_room_value": 5070
},
{
"year": 2018,
"month": 11,
"zero_room_value": null,
"one_room_value": 3158.4,
"two_room_value": 4365.73,
"three_room_value": 5569.59,
"four_room_value": 8354.67
},
{
"year": 2018,
"month": 10,
"zero_room_value": null,
"one_room_value": 2920,
"two_room_value": 3650,
"three_room_value": 4760,
"four_room_value": 11568
}
],
"averages": {
"zero_room_value": 2130,
"one_room_value": 3575.72,
"two_room_value": 4127.85,
"three_room_value": 4631.67,
"four_room_value": 6062.39
}
},
"message": "Historical Data fetched successfully"
}
Get a submarket (neighborhood) short term historical performance for its listings as an array
HTTP Request
GET https://api.mashvisor.com/v1.1/client/neighborhood/{id}/historical/traditional
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
id | Long | Neighborhood id to fetch data for |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state should be provided to the api or api will throw error 404. | |
month | Integer | A month to fetch after | |
year | Integer | A month to fetch after | |
beds | Integer | 0 to 4 bedrooms value |
Trends
Get Top Airbnb Cities
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/trends/cities?state=GA")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/trends/cities?state=GA")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/trends/cities');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
$request->setQueryData(array(
'state' => 'GA',
'items' => '5'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/trends/cities?state=GA"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"input": {
"page": 1,
"items": 5,
"state": "NY"
},
"total_page_results": 5,
"cities": [
{
"city": "New York",
"state": "NY",
"occupancy": 60.00970731,
"total_listing": 20980,
"occ_listing": 1259003.65930086
},
{
"city": "Buffalo",
"state": "NY",
"occupancy": 55.66251569,
"total_listing": 1806,
"occ_listing": 100526.50332892
},
{
"city": "Midtown Manhattan",
"state": "NY",
"occupancy": 79.6525,
"total_listing": 869,
"occ_listing": 69218.0225
},
{
"city": "Rochester",
"state": "NY",
"occupancy": 58.52508,
"total_listing": 1108,
"occ_listing": 64845.78864
},
{
"city": "St Regis",
"state": "NY",
"occupancy": 79.2003,
"total_listing": 794,
"occ_listing": 62885.0382
}
]
}
}
This endpoint retrieves the cities with the highest occupancy rates including total Airbnb active listings in a specific state.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/trends/cities
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | state* name, ex: NV. | |
items | Integer | 5 | The items to return the content for. Valid values: 10, ... etc. |
page | Integer | 1 | page number. |
Get City Summary
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/trends/summary/IL/Chicago")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/trends/summary/IL/Chicago")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/trends/summary/IL/Chicago');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/trends/summary/IL/Chicago"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"airbnb_listings": 1146,
"traditional_listings": 14651,
"investment_properties": 5049,
"active_neighborhoods": 227,
"avg_occupancy": 58.671,
"avg_nightly_price": 132.7625,
"avg_property_price": 435929.1957,
"avg_airbnb_ROI": 1.6541749305165958,
"avg_traditional_ROI": 0.9134450166166765
}
}
This endpoint retrieves a summary of Airbnb properties, traditional properties, investment properties, and active neighborhoods including average occupancy, nightly price, property price, and ROI for a specific city.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/summary/listing/{state}/{city}
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Path Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | state* name, ex: NV. | |
city | String* | City name, ex: Las Vegas. |
Get Listing Prices
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/trends/listing-price?zip_code=95118&state=CA")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/trends/listing-price?zip_code=95118&state=CA")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/trends/listing-price?zip_code=95118&state=CA');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/trends/listing-price?zip_code=95118&state=CA"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"sample_size": 122,
"avg_price": 1115642.402,
"avg_price_per_sqft": 751.623,
"median_price": 1199000,
"median_price_per_sqft": 785
}
}
This endpoint retrieves average listing prices, median prices, average prices per sqft, and the median price/sqft for each zip code.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/listing-price
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | state* name, ex: CA. | |
zip_code | String* | zip code value, ex: 95118. | |
beds | Integer | 0 to 4 bedrooms value | |
property_type | String | Possible values: 1. Single Family Residential 2. Townhouse 3. Condo/Coop 4. Multi Family 5. Other |
Get Location Heatmap
Sample Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.mashvisor.com/v1.1/client/search/heatmap?state=IL&type=AirbnbCoc&sw_lat=41.888509508814266&sw_lng=-87.7059177836914&ne_lat=41.93992529459902&ne_lng=-87.60995907397461")
.get()
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();
require 'uri'
require 'net/http'
url = URI("https://api.mashvisor.com/v1.1/client/search/heatmap?state=IL&type=AirbnbCoc&sw_lat=41.888509508814266&sw_lng=-87.7059177836914&ne_lat=41.93992529459902&ne_lng=-87.60995907397461")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_body
<?php
$request = new HttpRequest();
$request->setUrl('https://api.mashvisor.com/v1.1/client/search/heatmap');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'state' => 'IL',
'type' => 'AirbnbCoc',
'sw_lat' => '41.888509508814266',
'sw_lng' => '-87.7059177836914',
'ne_lat' => '41.93992529459902',
'ne_lng' => '-87.60995907397461'
));
$request->setHeaders(array(
'x-api-key' => 'YOUR_API_KEY'
));
try {
$response = $request->send();
echo json_decode($response->getBody());
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.mashvisor.com/v1.1/client/search/heatmap?state=IL&type=AirbnbCoc&sw_lat=41.888509508814266&sw_lng=-87.7059177836914&ne_lat=41.93992529459902&ne_lng=-87.60995907397461"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
The above command returns JSON structured like this:
{
"status": "success",
"content": {
"min": -5,
"max": 6,
"total_results": 121,
"results": [
{
"id": 3111,
"boundary": "POLYGON((-87.692773 41.93213,-87.692738 41.931393,-87.692658 41.928508,-87.692591 41.926671,-87.692528 41.924855,-87.689397 41.924883,-87.687642 41.924901,-87.685209 41.924932,-87.683871 41.924952,-87.683726 41.924954,-87.677899 41.925026,-87.674403 41.925069,-87.675094 41.926748,-87.679577 41.928349,-87.682661 41.932231,-87.683285 41.93327,-87.68563 41.933871,-87.687404 41.935777,-87.687986 41.936062,-87.687904 41.93217,-87.692773 41.93213))",
"airbnb_coc": -4.776479425529639,
"border_color": "f7b5a7",
"color": "f06b50"
},
{
"id": 387,
"boundary": "POLYGON((-87.643667 41.918253,-87.64355 41.914625,-87.642937 41.914634,-87.641744 41.914653,-87.641135 41.914661,-87.638704 41.914676,-87.638762 41.91651,-87.638816 41.918322,-87.641246 41.918286,-87.643667 41.918253))",
"airbnb_coc": -1.0222971960902214,
"border_color": "f7b5a7",
"color": "f06b50"
},
{
"id": 716,
"boundary": "POLYGON((-87.644886 41.932801,-87.644274 41.931338,-87.643898 41.930703,-87.642924 41.929662,-87.642232 41.928533,-87.641807 41.927813,-87.639228 41.928665,-87.639265 41.929696,-87.640634 41.929242,-87.641467 41.930661,-87.640869 41.930856,-87.641786 41.93236,-87.641343 41.93287,-87.644886 41.932801))",
"airbnb_coc": -0.5738812344414848,
"border_color": "f7b5a7",
"color": "f06b50"
},
{
"id": 3113,
"boundary": "POLYGON((-87.711675 41.902788,-87.714583 41.90277,-87.711551 41.900148,-87.713455 41.901015,-87.714057 41.90095,-87.713997 41.89913,-87.713873 41.895483,-87.711436 41.895507,-87.706556 41.895553,-87.704134 41.895579,-87.702204 41.895595,-87.701881 41.896418,-87.701951 41.899238,-87.706674 41.899195,-87.706731 41.901006,-87.70679 41.90285,-87.711675 41.902788))",
"airbnb_coc": 0,
"border_color": "f7b5a7",
"color": "f06b50"
}
]
}
}
This endpoint retrieves the investment performance heatmap for a specific area based on geographical coordinates.
HTTP Request
GET https://api.mashvisor.com/v1.1/client/search/heatmap
Request Headers
Parameter | Value |
---|---|
x-api-key | User Authentication Header |
Query Parameters
Parameter | Value | Default | Description |
---|---|---|---|
state* | String | The state to search in. e.g: CA | |
sw_lat | Double | To search to a specific geo area, south west point latitude. e.g: 33.76436731683163 | |
sw_lng | Double | To search to a specific geo area, south west point longitude. e.g: -118.72974734005544 | |
ne_lat | Double | To search to a specific geo area, north east point latitude. e.g: 34.410846062851626 | |
ne_lng | Double | To search to a specific geo area, north east point longitude. e.g: -117.99366335568044 | |
type | String | AirbnbCoc, or listingPrice, TraditionalCoc, OccupancyRate, AirbnbRental, TraditionalRental |
Errors
The Kittn API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- The kitten requested is hidden for administrators only. |
404 | Not Found -- The specified kitten could not be found. |
405 | Method Not Allowed -- You tried to access a kitten with an invalid method. |
406 | Not Acceptable -- You requested a format that isn't json. |
410 | Gone -- The kitten requested has been removed from our servers. |
418 | I'm a teapot. |
429 | Too Many Requests -- You're requesting too many kittens! Slow down! |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |