NAV
java ruby php go

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:

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();

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();

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": 787500,
        "sample_size": 31,
        "median_occupancy_rate": 46,
        "median_rental_income": 2341,
        "median_night_rate": 165,
        "adjusted_rental_income": 2239.36625,
        "price_to_rent_ratio": 29.305166137964257,
        "cash_flow": 283.2829166666667,
        "cash_on_cash": 0.427328095537398,
        "cap_rate": 0.43166920634920636,
        "expenses": 1956.0833333333333,
        "tax_rate": 0.73
    }
}

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:

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.