NAV Navbar
java ruby php go
  • Introduction
  • Authentication
  • Core Resources
  • Search
  • Property Info
  • Property Ownership
  • Investment Analysis
  • Rental Rates
  • Predictive Scores
  • Short Term Rentals
  • Long Term Rentals
  • Trends
  • Errors
  • 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 reference! You can use our API to access Mashvisor API endpoints needed by developers to build there applications on top of Mashvisor Inc, which can get real estate information, deep analysis, solid and up to date calculations on various cities, zip codes, and neighborhoods in our database acrross the United States.

    You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.

    Mashvisor API is RESTfull. Our API has predictable, resource-oriented URLs, and uses HTTP response 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.

    For any question of enquiries contact us at support[at]mashvisor.com mentioning the API section name.

    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 the API. You can ask for an API key via subscribing from ther user profile. You will need to register a new account from here.

    Mashvisor expects for the API key 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 which is basically an auth generated token. Such authentication to the API is performed via the authentication scheme (also called token authentication) which is an HTTP authenticaton scheme.

    All API requests requires the JWT authentication must be made over HTTPS. Calls made over plain HTTP will fail.

    Core Resources

    Below are the main resources that Mashvisor allows you to access and pull data from:

    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:

    {
        "count": 692,
        "list": [
            "Anthony",
            "BABSON PARK",
            "BAGDAD",
            "Bal Harbour",
            "BALDWIN",
            "Belle Glade",
            "Belleview",
            "BOCA GRANDE",
            "BRADENTON BEACH",
            "CALLAHAN"
        ]
    }
    

    This endpoint retrieves the cities has the biggest occupancy in a specific state.

    HTTP Request

    GET http://api.mashvisor.com/v.1/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?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/neighborhoods/CA/Los%20Angeles?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/city/neighborhoods/CA/Los%20Angeles?state=GA');
    $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?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": {
            "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
                },
                {
                    "id": 13327,
                    "city": "Los Angeles",
                    "latitude": 33.974969,
                    "longitude": -118.420888,
                    "name": "Playa Vista",
                    "state": "CA",
                    "county": "Los Angeles",
                    "is_village": 0
                },
                {
                    "id": 19810,
                    "city": "Los Angeles",
                    "latitude": 34.078243,
                    "longitude": -118.546495,
                    "name": "Pacific Palisades",
                    "state": "CA",
                    "county": "Los Angeles",
                    "is_village": 0
                },
                {
                    "id": 21056,
                    "city": "Los Angeles",
                    "latitude": 33.986305,
                    "longitude": -118.462922,
                    "name": "Venice",
                    "state": "CA",
                    "county": "Los Angeles",
                    "is_village": 0
                },
                ...
            ]
        },
        "message": "City neighborhoods list fetched successfully"
    }
    

    This endpoint lsits all city avialable neighborhoods.

    HTTP Request

    GET https://api.mashvisor.com/v1.1/client/city/neighborhoods/C/{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 the top housing cities with their active homes for sale count in a specific state.

    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?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/investment/CA/Los%20Angeles?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/city/investment/CA/Los%20Angeles?state=GA');
    $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?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": {
            "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 city investment performance.

    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?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/properties/CA/Los%20Angeles?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/city/properties/CA/Los%20Angeles?state=GA');
    $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?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": {
            "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 the city's top invesmtent 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 the neighborhoods has the biggest occupancy in a specific city and state.

    HTTP Request

    GET http://api.mashvisor.com/v.1/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.
    desc Boolean false If it's true, it'll fetch the neighborhood description and single home values in the request response.

    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 investment analysis and overview.

    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,
        "status": "Active",
        "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,
        "broker_name": "Property Services of Atlanta,  Inc.",
        "broker_number": "(678) 384-6220",
        "broker_url": "http://www.psatlanta.com/atlanta-homes-for-sale",
        "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,
        "listing_date": "2019-09-06T00:00:00.000Z",
        "heating_system": "Fireplace",
        "cooling_system": "Ceiling Fan(s)",
        "mls_name": "Georgia Multiple Listing Service",
        "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"
      }
    }
    

    Mashvisor has agreements with multiple MLS' providers and we're currently finalizing agreements with multiple others. We currently have 6M+ MLS listings in total in our databases (active and inactive). ~850K Active MLS listings from them nationwide. Covering 600+ MLSs out of 820.

    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
    mls_name The name of the MLS String
    broker_name The broker’s name String
    broker_number The broker’s phone number String
    broker_email The broker’s email  String
    broker_address The broker’s full address 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
    listing_date The date when the property was listed for sale Date
    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,
        "status": "Active",
        "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,
        "broker_name": "Property Services of Atlanta,  Inc.",
        "broker_number": "(678) 384-6220",
        "broker_url": "http://www.psatlanta.com/atlanta-homes-for-sale",
        "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,
        "listing_date": "2019-09-06T00:00:00.000Z",
        "heating_system": "Fireplace",
        "cooling_system": "Ceiling Fan(s)",
        "mls_name": "Georgia Multiple Listing Service",
        "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 data set stored in Mashvisor database.

    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 Taxing

    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": "2007",
            "property_tax": 2427.07,
            "assessment": 57160
          },
          {
            "year": "2009",
            "property_tax": 2411.98,
            "assessment": 54200
          },
          {
            "year": "2010",
            "property_tax": 1201.29,
            "assessment": 27200
          },
          {
            "year": "2012",
            "property_tax": 810.42,
            "assessment": 18240
          },
          {
            "year": "2013",
            "property_tax": 661.82,
            "assessment": 15000
          },
          {
            "year": "2014",
            "property_tax": 843.34,
            "assessment": 18600
          },
          {
            "year": "2015",
            "property_tax": 1275.61,
            "assessment": 18600
          },
          {
            "year": "2016",
            "property_tax": 1685.51,
            "assessment": 28000
          },
          {
            "year": "2017",
            "property_tax": 1764.56,
            "assessment": 28000
          },
          {
            "year": "2018",
            "property_tax": 1764.56,
            "assessment": 31120
          }
        ]
      }
    }
    

    This endpoint retrieves the property's detailed data set stored in Mashvisor database.

    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.

    Get Agent

    Sample Request

    OkHttpClient client = new OkHttpClient();
    
    Request request = new Request.Builder()
      .url("https://api.mashvisor.com/v1.1/client/agents/profile/detail?id=51266&state=LA")
      .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/agents/profile/detail?id=51266&state=LA")
    
    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/agents/profile/detail');
    $request->setMethod(HTTP_METH_GET);
    
    $request->setQueryData(array(
      'id' => '51266',
      'state' => 'LA'
    ));
    
    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/agents/profile/detail?id=51266&state=LA"
    
        req, _ := http.NewRequest("GET", url, nil)
    
        res, _ := http.DefaultClient.Do(req)
    
      req.Header.Add("x-api-key", "YOUR_API_KEY")
    
        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": 200,
        "content": {
            "agentData": {
                "id": 51266,
                "first_name": "Mary",
                "last_name": "Danna",
                "email": "[email protected]",
                "primary_phone": "(504) 517-6533",
                "phone_number": "(504) 455-0100",
                "role": "Listing",
                "office_id": 6067,
                "website": "http://www.salepending.com",
                "address": "3197 RICHLAND AVENUE",
                "city": "New Orleans",
                "state": "LA",
                "county": "Jefferson",
                "zip_code": "70002",
                "company": "Keller Williams Realty 455-0100",
                "image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
                "real_estate_licence": "0995689808",
                "years_of_experience": 1388534400,
                "areas_served": "[\"Covington, LA, USA\",\"Metairie, LA, USA\",\"New Orleans, LA, USA\",\"Mandeville, LA, USA\",\"Harahan, LA, USA\",\"Kenner, LA, USA\",\"Jefferson, LA, USA\",\"Gretna, LA, USA\",\"River Ridge, LA, USA\",\"Elmwood, LA, USA\"]",
                "agent_specialities": "Investment,Multifamily,Short Term Rentals,Second Homes,Luxury Homes,Single Family Residential",
                "agent_experience": ",Multifamily,Condos,Commercial,Single Family Residential,Renovations,Flips,Renovation loans,403k,Luxury,Short Term Rentals",
                "summary": "\n",
                "title": "Investment Real Estate Agent",
                "mls_id": null,
                "price_range": null,
                "sold_properties": null,
                "created_at": "2017-02-11T09:20:00.000Z",
                "updated_at": "2019-09-09T00:36:18.000Z",
                "agent_id": 51266,
                "cities_serving_in": [
                    {
                        "city": "Metairie",
                        "state": "LA"
                    },
                    {
                        "city": "New Orleans",
                        "state": "LA"
                    },
                    {
                        "city": "Kenner",
                        "state": "LA"
                    },
                    {
                        "city": "Coushatta",
                        "state": "LA"
                    },
                    {
                        "city": "River Ridge",
                        "state": "LA"
                    }
                ],
                "office_agents": [
                    {
                        "id": 43843,
                        "first_name": "TANGIE",
                        "last_name": "P STEPHENS",
                        "email": "[email protected]",
                        "primary_phone": "(504) 239-1288",
                        "phone_number": "(504) 455-0100",
                        "role": "Listing",
                        "office_id": 6067,
                        "website": "https://kwmetairie.com",
                        "address": "3197 RICHLAND AVENUE",
                        "city": "METAIRIE",
                        "state": "LA",
                        "county": "Jefferson",
                        "zip_code": "70002",
                        "company": "KELLER WILLIAMS REALTY 455-0100",
                        "image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
                        "real_estate_licence": null,
                        "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,
                        "created_at": "2017-01-09T22:36:34.000Z",
                        "updated_at": "2019-08-01T00:42:11.000Z",
                        "properties_count": 249
                    },
                    {
                        "id": 56608,
                        "first_name": "BRITTANY",
                        "last_name": "E PICOLO-RAMOS",
                        "email": "[email protected]",
                        "primary_phone": "(504) 251-7920",
                        "phone_number": "(504) 455-0100",
                        "role": "Listing",
                        "office_id": 6067,
                        "website": "https://kwmetairie.com",
                        "address": "3197 RICHLAND AVENUE",
                        "city": "METAIRIE",
                        "state": "LA",
                        "county": "Jefferson",
                        "zip_code": "70002",
                        "company": "KELLER WILLIAMS REALTY 455-0100",
                        "image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
                        "real_estate_licence": null,
                        "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,
                        "created_at": "2017-03-22T09:47:22.000Z",
                        "updated_at": "2019-03-28T12:43:35.000Z",
                        "properties_count": 148
                    },
                    ...
                ]
            },
            "agentDataConnection": "6",
            "supportedIDX": null,
            "approvedClaims": 0,
            "canEdit": false,
            "claimStatus": "NO-CLAIM"
        },
        "message": ""
    }
    

    This endpoint retrieves a random agent for given non-agent user.

    HTTP Request

    GET https://api.mashvisor.com/v1.1/client/agents/profile/detail

    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.
    id Long The agent Id from the Mashvisor database.
    name string The agent full name from the Mashvisor database.
    city string The agent city from the Mashvisor database.

    Get Office

    Sample Request

    OkHttpClient client = new OkHttpClient();
    
    Request request = new Request.Builder()
      .url("https://api.mashvisor.com/v1.1/client/office/details?id=6067&state=LA")
      .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/office/details?id=6067&state=LA")
    
    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/office/details');
    $request->setMethod(HTTP_METH_GET);
    
    $request->setQueryData(array(
      'id' => '6067',
      'state' => 'LA'
    ));
    
    $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/office/details?id=6067&state=LA"
    
      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": 6067,
        "phone_number": "(504) 455-0100",
        "name": "KELLER WILLIAMS REALTY 455-0100",
        "email": "[email protected]",
        "website": "https://kwmetairie.com",
        "mls_id": null,
        "address": "3197 RICHLAND AVENUE",
        "city": "METAIRIE",
        "state": "LA",
        "zip_code": "70002",
        "created_at": "2016-12-15T14:53:40.000Z",
        "updated_at": "2019-09-10T02:58:01.000Z",
        "agents": [
          {
            "id": 28494,
            "first_name": "SIMONE",
            "last_name": "S SOIGNET",
            "email": "[email protected]",
            "primary_phone": "(504) 650-6650",
            "phone_number": "(504) 455-0100",
            "role": "Listing",
            "office_id": 6067,
            "website": "https://kwmetairie.com",
            "address": "3197 RICHLAND AVENUE",
            "city": "METAIRIE",
            "state": "LA",
            "county": "Jefferson",
            "zip_code": "70002",
            "company": "KELLER WILLIAMS REALTY 455-0100",
            "image": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
            "real_estate_licence": null,
            "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,
            "mailchimp_transfer_date": "2019-03-28T12:43:35.000Z",
            "created_at": "2016-12-15T14:53:41.000Z",
            "updated_at": "2019-03-28T12:43:35.000Z",
            "active_listings": 1
          }
        ],
        "agents_count": 353,
        "active_listings": [
          {
            "id": 717559,
            "address": "6931 MEMPHIS Street",
            "city": "New Orleans",
            "state": "LA",
            "zip": 70124,
            "county": "ORLEANS",
            "status": "Active",
            "listing_id": "2157451",
            "location": "Lake Shore-Lake Vista",
            "neighborhood_id": 276411,
            "list_price": 615000,
            "beds": 4,
            "baths": 3,
            "home_type": "Single Family Residential",
            "image_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
            "last_sale_price": null,
            "last_sale_date": null,
            "year_built": 2014
          }
        ],
        "active_listings_count": 276,
        "sold_listings": [
          {
            "id": 92573,
            "address": "1041 TCHOUPITOULAS St",
            "city": "New orleans",
            "state": "LA",
            "zip": 70130,
            "county": null,
            "status": "inactive",
            "listing_id": "2017044",
            "location": "Lower Garden District",
            "neighborhood_id": 152428,
            "list_price": 685000,
            "beds": 2,
            "baths": 3,
            "home_type": "Townhouse",
            "image_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
            "last_sale_price": 540000,
            "last_sale_date": "2012-11-14 00:00:00",
            "year_built": null
          }
        ],
        "sold_listings_count": 2651,
        "service_areas": [
          {
            "city": "New Orleans",
            "state": "LA"
          },
          {
            "city": "Kenner",
            "state": "LA"
          }
        ]
      }
    }
    

    This endpoint retrieves a random agent for given non-agent user.

    HTTP Request

    GET https://api.mashvisor.com/v1.1/client/property/office/details

    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.
    id Long The office Id from the Mashvisor database.

    Get Price Estimates

    Sample Request

    OkHttpClient client = new OkHttpClient();
    
    Request request = new Request.Builder()
      .url("https://api.mashvisor.com/v1.1/client/property/estimates/664367?state=GA")
      .get()
      .addHeader("x-api-key", "YOUR_API_KEY")
      .addHeader("User-Agent", "PostmanRuntime/7.15.2")
      .build();
    
    Response response = client.newCall(request).execute();
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://api.mashvisor.com/v1.1/client/property/estimates/664367?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/estimates/664367');
    $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/estimates/664367?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": {
            "zestimate": 129193,
            "zrental_estimate": 1350,
            "redfin_estimate": 129193
        }
    }
    

    This endpoint retrieves list and rental price estimation of given property.

    HTTP Request

    GET https://api.mashvisor.com/v1.1/client/property/estimates/{pid}

    Request Headers

    Parameter Value
    x-api-key User Authentication Header

    Path Parameters

    Parameter Value Default Description
    pid String* 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.

    Property Ownership

    The Ownership Objects

    The Contact Object:

    {
      "status": "success",
      "content": {
        "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:

    {
      "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"
      }
    }
    

    The Lifestyle and Interests Object:

    {
      "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"
      }
    }
    

    The Financials, Household incomes, wealth score, and autos Object:

    {
      "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
      }
    }
    

    Mashvisor database could let find properties owners information, contact info, demographics, lifestyle, interests, finantionals and household income through data gathered sicne few years ago based on the proeprty address, parcels, or MLS ids.

    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": 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"
      }
    }
    

    This endpoint retrieves the contact info from Mashvisor 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 all owner demographics by his/her full name, phone number, email address, or by a full 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 all owner lifestyle and interests by his/her full name, phone number, email address, or by a full 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 all owner financials, household incomes, and wealth score by his/her full name, phone number, email address, or by a full 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": null,
      "traditional": {
          "occupancy": 93.9,
          "cash_flow": 698.3238000000001,
          "roi": 103.4553777777778,
          "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": 60.5,
          "cash_flow": 1450.4772222222225,
          "roi": 214.88551440329223,
          "cap_rate": 19.80173682214638,
          "rental_income": 2440.4305555555557,
          "maintenance_cost": 73.25,
          "airbnb_utilities": 170,
          "management_cost": 244.04305555555558,
          "airbnb_property_tax": 70,
          "airbnb_home_owner_insurance": 91,
          "airbnb_rental_income_tax": 341.6602777777778,
          "cleaningFees": 0,
          "total_expenses": 989.9533333333334,
          "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": 7336.497772930145,
            "traditional": {
                "occupancy": 92.1,
                "traditional_night_price": "1900.0000",
                "cash_flow": -6077.390356263478,
                "roi": -900.3541268538486,
                "cap_rate": 17.189179749715592,
                "rental_income": 1749.9000000000003,
                "maintenance_cost": 73.25,
                "management_cost": 104.99400000000001,
                "traditional_home_owner_insurance": 83.33333333333333,
                "traditional_property_tax": 86.21525000000001,
                "total_expenses": 7828.290356263478,
                "hoa_dues": 0
            },
            "airbnb": {
                "occupancy": "60.0000",
                "airbnb_night_price": "212.0000",
                "cash_flow": -4085.4363562634785,
                "rental_income": 3869,
                "roi": -605.2498305575523,
                "cap_rate": 44.38309101251422,
                "maintenance_cost": 73.25,
                "management_cost": 232.14,
                "airbnb_home_owner_insurance": 83.33333333333333,
                "airbnb_property_tax": 86.21525000000001,
                "total_expenses": 7955.436356263479,
                "hoa_dues": 0
            },
            "property_tax": 86.21525000000001,
        }
    }
    

    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": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 35925
                },
                {
                    "month": 2,
                    "gross_rental_revenue": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 32850
                },
                {
                    "month": 3,
                    "gross_rental_revenue": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 29775
                },
                {
                    "month": 4,
                    "gross_rental_revenue": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 26700
                },
                {
                    "month": 5,
                    "gross_rental_revenue": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 23625
                },
                {
                    "month": 6,
                    "gross_rental_revenue": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 20550
                },
                {
                    "month": 7,
                    "gross_rental_revenue": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 17475
                },
                {
                    "month": 8,
                    "gross_rental_revenue": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 14400
                },
                {
                    "month": 9,
                    "gross_rental_revenue": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 11325
                },
                {
                    "month": 10,
                    "gross_rental_revenue": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 8250
                },
                {
                    "month": 11,
                    "gross_rental_revenue": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 5175
                },
                {
                    "month": 12,
                    "gross_rental_revenue": 6448,
                    "cleaning_fee_collected": 300,
                    "vacancy": 2579,
                    "airbnb_hosting_fee": 193.44,
                    "adjusted_gross_income": 3975.56,
                    "net_rents": 3576,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 2100
                }
            ],
            "avg_occupancy": 0.6,
            "days_leased_per_month": 18,
            "avg_daily_leased_rate": 212,
            "airbnb_tax": 501,
            "cash_flow": 3075,
            "net_operating_income": 3075,
            "rental_yield": 41.979522184300336,
            "annually_breakdown": [
                {
                    "year": 1,
                    "gross_rental_revenue": 77376,
                    "cleaning_fee_collected": 3600,
                    "vacancy": 30951.9993216,
                    "airbnb_hosting_fee": 2321.2799999999997,
                    "adjusted_gross_income": 47706.72,
                    "net_rents": 42912,
                    "yield_on_investment": 7.884615384615384,
                    "balance": 2100
                },
                {
                    "year": 2,
                    "gross_rental_revenue": 77376,
                    "cleaning_fee_collected": 3600,
                    "vacancy": 30951.9993216,
                    "airbnb_hosting_fee": 2321.2799999999997,
                    "adjusted_gross_income": 47706.72,
                    "net_rents": 42912,
                    "yield_on_investment": 7.884615384615384,
                    "balance": -34800
                },
                {
                    "year": 3,
                    "gross_rental_revenue": 77376,
                    "cleaning_fee_collected": 3600,
                    "vacancy": 30951.9993216,
                    "airbnb_hosting_fee": 2321.2799999999997,
                    "adjusted_gross_income": 47706.72,
                    "net_rents": 42912,
                    "yield_on_investment": 7.884615384615384,
                    "balance": -71700
                },
                {
                    "year": 4,
                    "gross_rental_revenue": 77376,
                    "cleaning_fee_collected": 3600,
                    "vacancy": 30951.9993216,
                    "airbnb_hosting_fee": 2321.2799999999997,
                    "adjusted_gross_income": 47706.72,
                    "net_rents": 42912,
                    "yield_on_investment": 7.884615384615384,
                    "balance": -108600
                },
                {
                    "year": 5,
                    "gross_rental_revenue": 77376,
                    "cleaning_fee_collected": 3600,
                    "vacancy": 30951.9993216,
                    "airbnb_hosting_fee": 2321.2799999999997,
                    "adjusted_gross_income": 47706.72,
                    "net_rents": 42912,
                    "yield_on_investment": 7.884615384615384,
                    "balance": -145500
                },
                {
                    "year": 6,
                    "gross_rental_revenue": 77376,
                    "cleaning_fee_collected": 3600,
                    "vacancy": 30951.9993216,
                    "airbnb_hosting_fee": 2321.2799999999997,
                    "adjusted_gross_income": 47706.72,
                    "net_rents": 42912,
                    "yield_on_investment": 7.884615384615384,
                    "balance": -182400
                },
                {
                    "year": 7,
                    "gross_rental_revenue": 77376,
                    "cleaning_fee_collected": 3600,
                    "vacancy": 30951.9993216,
                    "airbnb_hosting_fee": 2321.2799999999997,
                    "adjusted_gross_income": 47706.72,
                    "net_rents": 42912,
                    "yield_on_investment": 7.884615384615384,
                    "balance": -219300
                },
                {
                    "year": 8,
                    "gross_rental_revenue": 77376,
                    "cleaning_fee_collected": 3600,
                    "vacancy": 30951.9993216,
                    "airbnb_hosting_fee": 2321.2799999999997,
                    "adjusted_gross_income": 47706.72,
                    "net_rents": 42912,
                    "yield_on_investment": 7.884615384615384,
                    "balance": -256200
                },
                {
                    "year": 9,
                    "gross_rental_revenue": 77376,
                    "cleaning_fee_collected": 3600,
                    "vacancy": 30951.9993216,
                    "airbnb_hosting_fee": 2321.2799999999997,
                    "adjusted_gross_income": 47706.72,
                    "net_rents": 42912,
                    "yield_on_investment": 7.884615384615384,
                    "balance": -293100
                },
                {
                    "year": 10,
                    "gross_rental_revenue": 77376,
                    "cleaning_fee_collected": 3600,
                    "vacancy": 30951.9993216,
                    "airbnb_hosting_fee": 2321.2799999999997,
                    "adjusted_gross_income": 47706.72,
                    "net_rents": 42912,
                    "yield_on_investment": 7.884615384615384,
                    "balance": -330000
                }
            ]
        }
    }
    

    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 about 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

    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 the Airbnb neighborhood's listing data set in Mashvisor database with similiraty and distnace regarding 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",
                    "status": "rented",
                    "broker_name": "GARY DiMAURO REAL ESTATE, INC.",
                    "broker_number": "845 7575000",
                    "broker_url": "http://www.garydimauro.com",
                    "source": "GARY DiMAURO REAL ESTATE, INC.",
                    "mls_name": "Mid-Hudson Multiple Listing Service",
                    "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,
                    "listing_date": "2019-06-28T00:00:00.000Z",
                    "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,
                    "status": "rented",
                    "broker_name": "Berkshire Hathaway HomeServices Hudson Valley Properties",
                    "broker_number": "(845) 905-8747",
                    "broker_url": null,
                    "source": "Berkshire Hathaway HomeServices Hudson Valley Properties",
                    "mls_name": null,
                    "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,
                    "listing_date": null,
                    "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",
                    "status": "Active",
                    "broker_name": "PAULA REDMOND LIC. R.E. BKR",
                    "broker_number": "518 3983030",
                    "broker_url": "http://www.paularedmond.com",
                    "source": "PAULA REDMOND LIC. R.E. BKR",
                    "mls_name": "Mid-Hudson Multiple Listing Service",
                    "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,
                    "listing_date": "2019-09-05T00:00:00.000Z",
                    "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,
                    "status": "rented",
                    "broker_name": "PAULA REDMOND LIC. R.E. BKR",
                    "broker_number": "518 3983030",
                    "broker_url": null,
                    "source": "PAULA REDMOND LIC. R.E. BKR",
                    "mls_name": null,
                    "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,
                    "listing_date": null,
                    "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 the traditional neighborhood's listing data set in Mashvisor database with similiraty and distnace regarding 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": 2057.364054361979,
        "one_room_value": 2093.0895256629356,
        "two_room_value": 2688.2876882245464,
        "three_room_value": 3611.8709511828065,
        "four_room_value": 3241.519084257238
      }
    }
    

    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

    Mashvisor API lets you find out an estiamted rental rate for a specific location eaither for long term rentals (traditional way), or for short term rentals (Airbnb, VRBO, or Homeaway). These estiamtes categorized by the number of bedrooms of a property you're trying to get the estimates for. The estimates are based on 12 months historical performance for the target area, and they are calculated over several similar listings was rented in the area, or currently avaialble for renting.

    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:

    {
      "retnal_rates": {
        "studio_value": 2057.364054361979,
        "one_room_value": 2093.0895256629356,
        "two_room_value": 2688.2876882245464,
        "three_room_value": 3611.8709511828065,
        "four_room_value": 3241.519084257238
      }
    }
    

    This endpoint retrieves the traditional neighborhood's listing data set in Mashvisor database with similiraty and distnace regarding 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

    Predictive Scores

    Investment Liklihood

    Sample Request

    OkHttpClient client = new OkHttpClient();
    
    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\n  \"airbnb_ROI\": 9.33728,\n  \"airbnb_rental\": 3235.36,\n  \"traditional_ROI\": 1.92281,\n  \"traditional_rental\": 1270,\n  \"baths\": 10,\n  \"beds\": 10,\n  \"days_on_market\": 152,\n  \"home_type\": \"Multi Family\",\n  \"list_price\": 599000,\n  \"sqft\": 2000\n}");
    Request request = new Request.Builder()
      .url("https://api.mashvisor.com/v1.1/client/ml/investment-liklihood")
      .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-liklihood")
    
    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 = "{\n  \"airbnb_ROI\": 9.33728,\n  \"airbnb_rental\": 3235.36,\n  \"traditional_ROI\": 1.92281,\n  \"traditional_rental\": 1270,\n  \"baths\": 10,\n  \"beds\": 10,\n  \"days_on_market\": 152,\n  \"home_type\": \"Multi Family\",\n  \"list_price\": 599000,\n  \"sqft\": 2000\n}"
    
    response = http.request(request)
    puts response.read_body
    
    <?php
    
    $request = new HttpRequest();
    $request->setUrl('https://api.mashvisor.com/v1.1/client/ml/investment-liklihood');
    $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-liklihood"
    
        payload := strings.NewReader("{\n  \"airbnb_ROI\": 9.33728,\n  \"airbnb_rental\": 3235.36,\n  \"traditional_ROI\": 1.92281,\n  \"traditional_rental\": 1270,\n  \"baths\": 10,\n  \"beds\": 10,\n  \"days_on_market\": 152,\n  \"home_type\": \"Multi Family\",\n  \"list_price\": 599000,\n  \"sqft\": 2000\n}")
    
        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"
    }
    

    In the last year we were trying to go over the traditional technique for searching an area per area for the best investment home to buy or rent over like other listings site, so went over this with our new product the “Property Finder”, the model built over a machine learning model Investment Likelihood telling the score of each MLS listing if it’s suitable for investment or not, and the customer could easily search within a short listed of listings that are suitable for investment in multiple areas (up to 5 different areas concurrently).

    The model had 3 developments iterations yet, and we achieved more than 86% accuracy with it in our last iteration with our data scientist and real estate experience with help of multiple real estate brokers and agents who were using the product for the past recent months. The model designed to get use of all sold listings for investment use them in next training cycle to guarantee model evolving upon time automatically as well as our data scientists keeps working on the best machine learning algorithm to introduce a very high quality investment listings for our customers.

    The model has shown a very good impressions by our customers and recently it’s our most performing product with a thank for our developed machine learning algorithms. Currently our data team is working on having a new feature over the Property Finder and this investment likelihood model for predicting the most likely investment listings characters that the lead would be interested to buy through defining and implementing new machine learning models having in respect the advantage of the investment likelihood model itself as a basement, with mode dependency over the persons financials situations, demographics, and lifestyle intestates.

    HTTP Request

    POST https://api.mashvisor.com/v1.1/client/ml/investment-liklihood

    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
    Guest Message
    sqft Integer NO
    Replace it with 0 with when missed
    Guest Message

    Mashmeter

    Sample Request

    OkHttpClient client = new OkHttpClient();
    
    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\"airbnb_listings\":104,\"median_airbnb_coc\":1.60582,\"airbnb_price_to_rent_ratio\":17.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\":104,\"median_airbnb_coc\":1.60582,\"airbnb_price_to_rent_ratio\":17.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":104,"median_airbnb_coc":1.60582,"airbnb_price_to_rent_ratio":17.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\":104,\"median_airbnb_coc\":1.60582,\"airbnb_price_to_rent_ratio\":17.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"
    }
    

    The Mashmeter is a unique function build over machine learning algorithms and a developed mathematical formula by our data engineers, which only Mashvisor offers to real estate investors. This simply shows you if a real estate investment in a certain neighborhood is a good or bad real estate investment decision.

    The goal of this model is to evaluate a neighbourhood by predicting how much it is good for investment. The resulting score is what so-called Mashmeter.

    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, "{\n  \"lead_info\": {\n    \"AgeRange\": \"45-54\",\n    \"WealthScore\": \"50.0\",\n    \"Gender\": \"Female\",\n    \"EstimatedHouseholdIncome\": \"> $250,000\",\n    \"PresenceOfChildren\": \"UNKNOWN\",\n    \"NumberOfChildren\": \"1\",\n    \"MaritalStatusInHousehold\": \"Single\",\n    \"Investing\": \"YES\",\n    \"EstWealth\": \"> $499,999\",\n    \"NumberCreditLines\": \"1\",\n    \"LengthOfResidence\": \"11 - 15 years\",\n    \"Sale1 Transfer Amt\": \"590000.0\",\n    \"BusinessOwner\": \"UNKNOWN\"\n  }\n}");
    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 = "{\n  \"lead_info\": {\n    \"AgeRange\": \"45-54\",\n    \"WealthScore\": \"50.0\",\n    \"Gender\": \"Female\",\n    \"EstimatedHouseholdIncome\": \"> $250,000\",\n    \"PresenceOfChildren\": \"UNKNOWN\",\n    \"NumberOfChildren\": \"1\",\n    \"MaritalStatusInHousehold\": \"Single\",\n    \"Investing\": \"YES\",\n    \"EstWealth\": \"> $499,999\",\n    \"NumberCreditLines\": \"1\",\n    \"LengthOfResidence\": \"11 - 15 years\",\n    \"Sale1 Transfer Amt\": \"590000.0\",\n    \"BusinessOwner\": \"UNKNOWN\"\n  }\n}"
    
    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('{
      "lead_info": {
        "AgeRange": "45-54",
        "WealthScore": "50.0",
        "Gender": "Female",
        "EstimatedHouseholdIncome": "> $250,000",
        "PresenceOfChildren": "UNKNOWN",
        "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("{\n  \"lead_info\": {\n    \"AgeRange\": \"45-54\",\n    \"WealthScore\": \"50.0\",\n    \"Gender\": \"Female\",\n    \"EstimatedHouseholdIncome\": \"> $250,000\",\n    \"PresenceOfChildren\": \"UNKNOWN\",\n    \"NumberOfChildren\": \"1\",\n    \"MaritalStatusInHousehold\": \"Single\",\n    \"Investing\": \"YES\",\n    \"EstWealth\": \"> $499,999\",\n    \"NumberCreditLines\": \"1\",\n    \"LengthOfResidence\": \"11 - 15 years\",\n    \"Sale1 Transfer Amt\": \"590000.0\",\n    \"BusinessOwner\": \"UNKNOWN\"\n  }\n}")
    
        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:

    {
      "property_type": {
        "SINGLE FAMILY": 28.1,
        "MULTIPLE FAMILY": 27.4
      },
      "bedrooms": {
        "4-Greater": 78,
        "2-3": 17.7
      },
      "bathrooms": {
        "1-2": 50,
        "4-Greater": 32.7
      },
      "home_value": {
        "> $1,000,000": 87.5,
        "$500,000-999,999": 11.5
      }
    }
    

    The API is to return a json object holding data representing specifications for recommended properties based on the a person demographics and financials. The specifications including: property type, number of rooms, number of bathrooms, 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 prvides data and anlysis for different short term rentals services presenting them for the investment listings, including AirBnB, HomeAway, and VRBO.
    * AirBnB
    Mashvisor started integrating with AirBnB since the first day we founded the company - late 2014. We have data for all U.S listings in a location, storing all listing detailed info, reviews, photos, host info, and yearly calendar for day per day booking availability and booking price per night. We currently having 2M+ listings available in our database.
    Mashvisor also developed an occupancy calculator algotherm evolved over the last 5 years calculating the occupancy rate for each listing month by month upon its historical performance and available future bookings. Our algorithms could currently distinguish between booked days and blocked days from booking, also calculate the estimated monthly rental income for the listings for future predictions, and availability to provide rental incomes for all the past months for the listing history. Moreover, we’ve implemented different mathematical algorithms helping us into our calculations, and we’re working on a new machine learning algorithms would help determining listings outliers, calculated occupancy rates.
    Recently, we started the process of reviewing our occupancy rates calculations with verified AirBnB hosts who have multiple listings over there to guarantee better service introduced for our customers and superiority over our main competitor AirDna. States breakdown coverage is attached in appendix D.
    * HomeAway
    Mashvisor started integrating with HomeAway since mid of 2016. We go over all neighborhoods and cities available in our database on monthly basis getting all listings within a neighborhood, storing all listing detailed info, reviews, photos, and yearly calendar for day per day booking availability. We currently having 500K+ listings available in our database.
    Our crawling cycle areas coverage crawling automatically month by month whenever we have a new city or neighborhood covered into our database.
    Mashvisor also developed an occupancy calculator algotherm evolved over the last 3 years calculating the occupancy rate for each listing month by month upon its historical performance and available future bookings. Also calculate the estimated monthly rental income for the listings for future predictions, and availability to provide rental incomes for all the past months for the listing history.

    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/22625220?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/property/22625220?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/property/22625220');
    $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/property/22625220?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": {
        "listing": {
          "id": 22625220,
          "airbnb_id": 19680922,
          "city": "San Francisco",
          "picture_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
          "thumbnail_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
          "medium_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
          "xl_picture_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
          "user_id": 12703126,
          "price": 105,
          "native_currency": "USD",
          "price_native": 105,
          "price_formatted": "$105",
          "lat": 37.79291,
          "lng": -122.408,
          "country": "United States",
          "name": "Classic 20's  boutique apt. with charming updates",
          "smart_location": "San Francisco, CA",
          "has_double_blind_reviews": false,
          "instant_bookable": false,
          "bedrooms": 0,
          "beds": 2,
          "bathrooms": 1,
          "market": "San Francisco",
          "min_nights": 30,
          "neighborhood": "Chinatown",
          "person_capacity": 4,
          "state": "CA",
          "zipcode": "94108",
          "address": "San Francisco, CA, United States",
          "country_code": "US",
          "cancellation_policy": "strict_14_with_grace_period",
          "property_type": "Apartment",
          "reviews_count": 3,
          "room_type": "Entire home/apt",
          "room_type_category": "entire_home",
          "picture_urls": [
            "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"
          ],
          "picture_count": 11,
          "currency_symbol_left": "$",
          "currency_symbol_right": null,
          "picture_captions": [
            "Livingroom area with Recliner chair, sofa/sleeper, coffee table",
            "Livingroom area showing queen size bed",
            "Dining Area",
            "Galley Kitchen with period cabinets, nice size refrigerator/freezer and updated granite counter tops",
            "Kitchen has 4 burner gas range oven/broiler, built in microwave and stainless steel sink",
            "In kitchen looking at dining area",
            "Bathroom vanity with updated vessel sink and granite countertops ",
            "Large walk-in closet",
            "",
            "Bathtub / shower combination ",
            "Tile shelf’s in shower with ample supplies to get started "
          ],
          "bed_type": "Real Bed",
          "bed_type_category": "real_bed",
          "require_guest_profile_picture": false,
          "require_guest_phone_verification": false,
          "force_mobile_legal_modal": true,
          "cancel_policy": 44,
          "check_in_time": 15,
          "check_out_time": 12,
          "guests_included": 1,
          "license": null,
          "max_nights": 180,
          "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": "San Francisco, CA, United States",
          "map_image_url": "https://maps.googleapis.com/maps/api/staticmap?maptype=roadmap&markers=37.79291%2C-122.408&size=480x320&zoom=15&client=gme-airbnbinc&channel=monorail-prod&signature=2Qbg19W31PTrfmmba2XtI0dc8k8%3D",
          "experiences_offered": "none",
          "max_nights_input_value": 180,
          "min_nights_input_value": 30,
          "requires_license": true,
          "property_type_id": 1,
          "house_rules": "",
          "security_deposit_native": 500,
          "security_price_native": 500,
          "security_deposit_formatted": "$500",
          "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.",
          "description_locale": "en",
          "summary": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
          "space": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
          "access": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
          "interaction": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
          "neighborhood_overview": "",
          "transit": "",
          "amenities": [
            "TV",
            "Wifi",
            "Kitchen",
            "Elevator",
            "Heating",
            "Washer",
            "Dryer",
            "Smoke detector",
            "Carbon monoxide detector",
            "Essentials",
            "Shampoo",
            "Lock on bedroom door",
            "Hangers",
            "Iron",
            "Private entrance",
            "Microwave",
            "Coffee maker",
            "Refrigerator",
            "Dishes and silverware",
            "Cooking basics",
            "Oven",
            "Stove",
            "Long term stays allowed",
            "Host greets you"
          ],
          "amenities_ids": [
            1,
            4,
            8,
            21,
            30,
            33,
            34,
            35,
            36,
            40,
            41,
            42,
            44,
            46,
            57,
            89,
            90,
            91,
            93,
            94,
            95,
            96,
            104,
            129
          ],
          "is_location_exact": true,
          "recent_review": {
            "review": {
              "comments": "It was a wonderful place!",
              "created_at": "2019-07-13T21:07:13Z",
              "id": 487146877,
              "listing_id": 19680922,
              "reviewee_id": 12703126,
              "reviewer": {
                "user": {
                  "first_name": "Soong",
                  "has_profile_pic": true,
                  "id": 39697902,
                  "picture_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
                  "smart_name": "Soong",
                  "thumbnail_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
                }
              },
              "reviewer_id": 39697902,
              "role": "guest",
              "user_flag": null
            }
          },
          "calendar_updated_at": "6 months ago",
          "cancel_policy_short_str": "Strict (grace period)",
          "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": [
              -122.408,
              37.79291
            ]
          },
          "exists": true,
          "created_at": "2018-07-31T23:02:34.752Z",
          "updated_at": "2019-07-25T21:40:49.824Z"
        }
      }
    }
    

    This endpoint retrieves the Airbnb property detailed information, reviews, photos, host, estiamted rental income, 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
    amenities_ids All included amenities String - array
    is_location_exact Verified exact location Boolean
    recent_review Last review over the listing Review object
    calendar_updated_at Calendar last update String
    star_rating Total start rating Float
    time_zone_name Full timezone name String
    calendar Object indicates month by month and day per day booking availability during a year since listing was created at first, and with each night associated price for booking Calendar Object
    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
    Reviews Array of all associated reviews Review object - array

    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 property Id.

    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.

    Get Airbnb Historical Performance

    Sample Request

    OkHttpClient client = new OkHttpClient();
    
    Request request = new Request.Builder()
      .url("https://api.mashvisor.com/v1.1/client/airbnb-property/22625220/historical?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/airbnb-property/22625220/historical?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/airbnb-property/22625220/historical');
    $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/airbnb-property/22625220/historical?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": {
            "name": "Classic 20's  boutique apt. with charming updates",
            "property_id": "19680922",
            "months": [
                {
                    "year": 2018,
                    "month": 10,
                    "nightly_price": 105,
                    "revenue": 3150,
                    "occupancy": 30
                },
                {
                    "year": 2018,
                    "month": 11,
                    "nightly_price": 105,
                    "revenue": 94.5,
                    "occupancy": 1
                },
                {
                    "year": 2018,
                    "month": 12,
                    "nightly_price": 105,
                    "revenue": 0,
                    "occupancy": 0
                },
                {
                    "year": 2019,
                    "month": 1,
                    "nightly_price": 0,
                    "revenue": 0,
                    "occupancy": 0
                },
                {
                    "year": 2019,
                    "month": 2,
                    "nightly_price": 105,
                    "revenue": 3150,
                    "occupancy": 30
                },
                {
                    "year": 2019,
                    "month": 3,
                    "nightly_price": 105,
                    "revenue": 3150,
                    "occupancy": 30
                },
                {
                    "year": 2019,
                    "month": 4,
                    "nightly_price": 105,
                    "revenue": 3150,
                    "occupancy": 30
                },
                {
                    "year": 2019,
                    "month": 5,
                    "nightly_price": 105,
                    "revenue": 3150,
                    "occupancy": 30
                },
                {
                    "year": 2019,
                    "month": 6,
                    "nightly_price": 105,
                    "revenue": 3150,
                    "occupancy": 30
                },
                {
                    "year": 2019,
                    "month": 7,
                    "nightly_price": 105,
                    "revenue": 2835,
                    "occupancy": 27
                },
                {
                    "year": 2019,
                    "month": 8,
                    "nightly_price": 105,
                    "revenue": 2331,
                    "occupancy": 22
                },
                {
                    "year": 2019,
                    "month": 9,
                    "nightly_price": 105,
                    "revenue": 0,
                    "occupancy": 0
                }
            ]
        }
    }
    

    This endpoint retrieves the Airbnb property 12 historical records - nightly price, revenue, and occupancy - 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 Airbnb 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.

    Get Host Info

    Sample Request

    OkHttpClient client = new OkHttpClient();
    
    Request request = new Request.Builder()
      .url("https://api.mashvisor.com/v1.1/client/airbnb-property/19680922/host?state=IL")
      .get()
      .build();
    
    Response response = client.newCall(request).execute();
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/19680922/host?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/airbnb-property/19680922/host');
    $request->setMethod(HTTP_METH_GET);
    
    $request->setQueryData(array(
      'page' => '1',
      '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/airbnb-property/19680922/host?state=IL"
    
        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": {
        "user": {
          "first_name": "Jeff",
          "has_profile_pic": true,
          "id": 12703126,
          "picture_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
          "smart_name": "Jeff",
          "thumbnail_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
          "acceptance_rate": "N/A",
          "created_at": "2014-03-01T21:16:11Z",
          "identity_verified": false,
          "is_superhost": true,
          "picture_large_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
          "recommendation_count": 0,
          "response_rate": "100%",
          "response_time": "within an hour",
          "reviewee_count": 24,
          "thumbnail_medium_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
          "neighborhood": "Chinatown",
          "verification_labels": [
            "Email address",
            "Phone number",
            "Reviewed"
          ],
          "verifications": [
            "email",
            "phone",
            "reviews"
          ],
          "about": "Friendly, accomadating, respectful, polite, easy going regular person. ",
          "all_active_phone_numbers": [],
          "friends_count": 0,
          "guidebooks_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": [
            "English"
          ],
          "listings_count": 5,
          "location": "San Francisco, CA",
          "recent_recommendation": null,
          "recent_review": {
            "review": {
              "comments": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
              "created_at": "2019-07-16T23:27:35Z",
              "id": 489450656,
              "listing_id": 18853563,
              "reviewee_id": 12703126,
              "reviewer": {
                "user": {
                  "first_name": "Lanting",
                  "has_profile_pic": true,
                  "id": 204093245,
                  "picture_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
                  "smart_name": "Lanting",
                  "thumbnail_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
                }
              },
              "reviewer_id": 204093245,
              "role": "guest",
              "user_flag": null,
              "listing": {
                "listing": {
                  "city": "San Francisco",
                  "collection_ids": null,
                  "country": "United States",
                  "has_double_blind_reviews": false,
                  "id": 18853563,
                  "instant_book_enabled": false,
                  "instant_bookable": false,
                  "lat": 37.79252,
                  "lng": -122.4081,
                  "medium_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
                  "name": "Nob Hill Jewel Box",
                  "native_currency": "USD",
                  "picture_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
                  "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAIAAADJUWIXAAAAS0lEQVQIHQFAAL//AXNWOO7s7/r9Ae7o5iI4RgFgQiMPBQU7W3SJfnuVqbMBRjoyKCYqHiAfq6CUN0dUAUU5MBgcKdbe6frv2vPz9WRpG/xGx/8wAAAAAElFTkSuQmCC",
                  "price": 100,
                  "price_formatted": "$100",
                  "price_native": 100,
                  "scrim_color": "#120806",
                  "smart_location": "San Francisco, CA",
                  "thumbnail_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
                  "user": {
                    "user": {
                      "first_name": "Jeff",
                      "has_profile_pic": true,
                      "id": 12703126,
                      "picture_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
                      "smart_name": "Jeff",
                      "thumbnail_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
                    }
                  },
                  "user_id": 12703126,
                  "x_medium_picture_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
                  "xl_picture_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
                }
              },
              "reviewee": {
                "user": {
                  "first_name": "Jeff",
                  "has_profile_pic": true,
                  "id": 12703126,
                  "picture_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png",
                  "smart_name": "Jeff",
                  "thumbnail_url": "https://bc9f40b414b80f1ce90f-212b46b1c531b50ebb00763170d70160.ssl.cf5.rackcdn.com/Properties/property-default.png"
                }
              }
            }
          },
          "school": "High school, some college",
          "show_travel_for_work": false,
          "signup_method": 0,
          "total_listings_count": 5,
          "user_flag": null,
          "work": "Property management "
        }
      }
    }
    

    This endpoint retrieves the host info for a specific AirBnB property.

    Host Info Data Dictionary

    Attribute Definition Possible Returns
    id AirBnB host ID Integer
    first_name Host first name String
    has_profile_pic Indicator if the host has profile picture Boolean
    picture_url Profile picture url String
    smart_name Host provided name String
    thumbnail_url Thumbnail profile picture url String
    acceptance_rate Booking acceptance rate String
    created_at Host created at time Timestamp
    identity_verified Verified host identity or not Boolean
    is_superhost Indicator if the host is superhost Boolean
    picture_large_url Large profile picture url String
    recommendation_count How many users recommended the host Integer
    response_rate Responsiveness rate Percentage
    response_time Responsiveness time summary String
    reviewee_count How many reviewee the host had Integer
    thumbnail_medium_url Thumbnail medium image url String
    neighborhood Host neighborhood String
    verifications Email, phone, reviews, and location String - array
    about Summary about the host String
    all_active_phone_numbers Host phone numbers String - array
    friends_count Host friends count over AirBnB Integer
    has_available_payout_info Boolean indicator about the payouts Boolean
    identity_mt_verified Boolean
    identity_v2_verified Boolean
    is_generated_user Boolean
    is_trip_host Boolean
    is_marketplace_cohost Boolean
    languages Host languages  String - array
    listings_count Host listings count Integer
    location Host location String
    recent_recommendation Recent recommendation host made Json array
    recent_review Latest review over the host Review object
    show_travel_for_work Boolean
    signup_method AirBnB signup method String
    total_listings_count String
    user_flag Boolean
    work Host current work String

    HTTP Request

    GET https://api.mashvisor.com/v1.1/client/airbnb-property/{id}/host

    Request Headers

    Parameter Value
    x-api-key User Authentication Header

    Path Parameters

    Parameter Value Default Description
    id Long The Airbnb property Id.

    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.

    Get Review Scores Info

    Sample Request

    OkHttpClient client = new OkHttpClient();
    
    Request request = new Request.Builder()
      .url("https://api.mashvisor.com/v1.1/client/airbnb-property/19680922/review-score?state=IL")
      .get()
      .build();
    
    Response response = client.newCall(request).execute();
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/19680922/review-score?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/airbnb-property/19680922/review-score');
    $request->setMethod(HTTP_METH_GET);
    
    $request->setQueryData(array(
      'page' => '1',
      '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/airbnb-property/19680922/review-score?state=IL"
    
        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": {
        "review_scores": {
          "accuracy": 10,
          "checkin": 10,
          "cleanliness": 10,
          "communication": 10,
          "location": 10,
          "rating": 90,
          "value": 9
        }
      }
    }
    

    This endpoint retrieves the review score object for a specific AirBnB property.

    The Review Score Data Dictionary

    Attribute Definition Possible Returns
    accuracy Total reviews about listing accuracy Integer
    checkin Total reviews about listing check in Integer
    cleanliness Total reviews about listing cleanliness Integer
    communication Total reviews about listing communication Integer
    location Total reviews about listing location Integer
    rating Total reviews about listing rating Integer
    value Total reviews about listing value Integer

    HTTP Request

    GET https://api.mashvisor.com/v1.1/client/airbnb-property/{id}/review-score

    Request Headers

    Parameter Value
    x-api-key User Authentication Header

    Path Parameters

    Parameter Value Default Description
    id Long The Airbnb property Id.

    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.

    Get Reviews

    Sample Request

    OkHttpClient client = new OkHttpClient();
    
    Request request = new Request.Builder()
      .url("https://api.mashvisor.com/v1.1/client/airbnb-property/19680922/reviews?state=CA")
      .get()
      .build();
    
    Response response = client.newCall(request).execute();
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/19680922/reviews?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/airbnb-property/19680922/reviews');
    $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/airbnb-property/19680922/reviews?state=CA"
    
        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": {
        "reviews": [
          {
            "author": {
              "first_name": "Soong",
              "has_profile_pic": true,
              "id": 39697902,
              "picture_url": "https://mashvisor.com/photos/user/6de492d2-be84-4281-9a91-c234588ffe35.jpg?aki_policy=profile_x_medium",
              "smart_name": "Soong",
              "thumbnail_url": "https://mashvisor.com/photos/user/6de492d2-be84-4281-9a91-c234588ffe35.jpg?aki_policy=profile_small"
            },
            "author_id": 39697902,
            "can_be_edited": false,
            "comments": "It was a wonderful place!",
            "created_at": "2019-07-13T21:07:13Z",
            "hide_author_profile": false,
            "id": 487146877,
            "listing_id": 19680922,
            "recipient_id": 12703126,
            "collection_tag": null,
            "listing": {
              "id": 19680922,
              "name": "Classic 20's  boutique apt. with charming updates"
            },
            "rating": 5,
            "recipient": {
              "first_name": "Jeff",
              "has_profile_pic": true,
              "id": 12703126,
              "picture_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_x_medium",
              "smart_name": "Jeff",
              "thumbnail_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_small"
            },
            "response": "",
            "role": "guest",
            "language": "en",
            "user_flag": null
          },
          {
            "author": {
              "first_name": "Steve",
              "has_profile_pic": true,
              "id": 39943239,
              "picture_url": "https://mashvisor.com/photos/user/ee2cdaa9-4cff-4978-af81-491453dae4e9.jpg?aki_policy=profile_x_medium",
              "smart_name": "Steve",
              "thumbnail_url": "https://mashvisor.com/photos/user/ee2cdaa9-4cff-4978-af81-491453dae4e9.jpg?aki_policy=profile_small"
            },
            "author_id": 39943239,
            "can_be_edited": false,
            "comments": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
            "created_at": "2018-08-18T20:22:51Z",
            "hide_author_profile": false,
            "id": 309737489,
            "listing_id": 19680922,
            "recipient_id": 12703126,
            "collection_tag": null,
            "listing": {
              "id": 19680922,
              "name": "Classic 20's  boutique apt. with charming updates"
            },
            "rating": 5,
            "recipient": {
              "first_name": "Jeff",
              "has_profile_pic": true,
              "id": 12703126,
              "picture_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_x_medium",
              "smart_name": "Jeff",
              "thumbnail_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_small"
            },
            "response": "",
            "role": "guest",
            "language": "en",
            "user_flag": null
          },
          {
            "author": {
              "first_name": "Nasser",
              "has_profile_pic": true,
              "id": 147937651,
              "picture_url": "https://mashvisor.com/photos/user/c03709f5-687c-4968-9a42-30aa51102338.jpg?aki_policy=profile_x_medium",
              "smart_name": "Nasser",
              "thumbnail_url": "https://mashvisor.com/photos/user/c03709f5-687c-4968-9a42-30aa51102338.jpg?aki_policy=profile_small"
            },
            "author_id": 147937651,
            "can_be_edited": false,
            "comments": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
            "created_at": "2018-02-04T23:22:52Z",
            "hide_author_profile": false,
            "id": 232418679,
            "listing_id": 19680922,
            "recipient_id": 12703126,
            "collection_tag": null,
            "listing": {
              "id": 19680922,
              "name": "Classic 20's  boutique apt. with charming updates"
            },
            "rating": 5,
            "recipient": {
              "first_name": "Jeff",
              "has_profile_pic": true,
              "id": 12703126,
              "picture_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_x_medium",
              "smart_name": "Jeff",
              "thumbnail_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_small"
            },
            "response": "",
            "role": "guest",
            "language": "pt",
            "user_flag": null
          }
        ]
      }
    }
    

    This endpoint retrieves an AirBnB listing's reviews array.

    Review Object Data Dictionary

    Attribute Definition Possible Returns
    author Author id and name String
    can_be_edited If the review is editable Boolean
    comments Guest comment over the listing String
    created_at Review creation date and time Timestamp
    id Review ID Integer
    listing_id AirBnB listing ID Integer
    recipient_id Host ID Integer
    collection_tag Tags for reviews String
    rating Review rating Integer
    response Comment reply String
    role Author role String
    language Author language String

    HTTP Request

    GET https://api.mashvisor.com/v1.1/client/airbnb-property/{id}/reviews

    Request Headers

    Parameter Value
    x-api-key User Authentication Header

    Path Parameters

    Parameter Value Default Description
    id Long The Airbnb property Id.

    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.

    Get Photos

    Sample Request

    OkHttpClient client = new OkHttpClient();
    
    Request request = new Request.Builder()
      .url("https://api.mashvisor.com/v1.1/client/airbnb-property/19680922/photos?state=CA")
      .get()
      .build();
    
    Response response = client.newCall(request).execute();
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/19680922/photos?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/airbnb-property/19680922/photos');
    $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/airbnb-property/19680922/photos?state=CA"
    
        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": {
        "photos": [
          {
            "id": 337504512,
            "picture": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?aki_policy=large",
            "sort_order": 1,
            "caption": "Livingroom area with Recliner chair, sofa/sleeper, coffee table",
            "large": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?aki_policy=large",
            "large_cover": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?interpolation=lanczos-none&size=large_cover&output-format=jpg&output-quality=70",
            "medium": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?aki_policy=medium",
            "mini_square": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?aki_policy=mini_square",
            "scrim_color": "#261005",
            "small": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?aki_policy=small",
            "thumbnail": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?aki_policy=small",
            "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAIAAADJUWIXAAAAS0lEQVQIHQFAAL//AYx0WAcJDQoD+grsvxQcKQGomoX8CBUQAvYF1YcHH1EBSioU/gsQBwkKNxry/PL2AXNBIgwZFx0fH//z6+Te148yFxTxIM31AAAAAElFTkSuQmCC",
            "x_large": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?aki_policy=x_large",
            "x_large_cover": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?interpolation=lanczos-none&size=x_large_cover&output-format=jpg&output-quality=70",
            "x_medium": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?aki_policy=x_medium",
            "x_small": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?aki_policy=x_small",
            "xl_picture": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?aki_policy=x_large",
            "xx_large": "https://mashvisor.com/photos/8239be3b-34a2-4b7e-b457-0eb695394f68.jpg?aki_policy=xx_large"
          },
          {
            "id": 337514315,
            "picture": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?aki_policy=large",
            "sort_order": 2,
            "caption": "Livingroom area showing queen size bed",
            "large": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?aki_policy=large",
            "large_cover": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?interpolation=lanczos-none&size=large_cover&output-format=jpg&output-quality=70",
            "medium": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?aki_policy=medium",
            "mini_square": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?aki_policy=mini_square",
            "scrim_color": "#230F06",
            "small": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?aki_policy=small",
            "thumbnail": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?aki_policy=small",
            "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAIAAADJUWIXAAAAS0lEQVQIHQFAAL//AXlRKPX9BRkdHvj7AfDn3gGPXiji9xBOZ4D18/DQr48BWTof8e/7DSQs//v3Hgz1AYRmSg8TF+jx+NLJwf/18w9IIn8/TQnwAAAAAElFTkSuQmCC",
            "x_large": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?aki_policy=x_large",
            "x_large_cover": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?interpolation=lanczos-none&size=x_large_cover&output-format=jpg&output-quality=70",
            "x_medium": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?aki_policy=x_medium",
            "x_small": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?aki_policy=x_small",
            "xl_picture": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?aki_policy=x_large",
            "xx_large": "https://mashvisor.com/photos/5268e49f-f7d3-463e-aaf9-aa33f4daabf2.jpg?aki_policy=xx_large"
          },
          {
            "id": 337514414,
            "picture": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?aki_policy=large",
            "sort_order": 3,
            "caption": "Dining Area",
            "large": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?aki_policy=large",
            "large_cover": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?interpolation=lanczos-none&size=large_cover&output-format=jpg&output-quality=70",
            "medium": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?aki_policy=medium",
            "mini_square": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?aki_policy=mini_square",
            "scrim_color": "#231E1B",
            "small": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?aki_policy=small",
            "thumbnail": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?aki_policy=small",
            "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAIAAADtz9qMAAAATElEQVQIHQFBAL7/AZqAZhkbIAgKCtTOyQGMcFwiFf3z9/z9+/sBkYZ8BPPe8fL3CgYBAYSDgefb3uvr5iwxJgFgYWb2+fvl39YD/vUK0yMhvhSWjQAAAABJRU5ErkJggg==",
            "x_large": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?aki_policy=x_large",
            "x_large_cover": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?interpolation=lanczos-none&size=x_large_cover&output-format=jpg&output-quality=70",
            "x_medium": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?aki_policy=x_medium",
            "x_small": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?aki_policy=x_small",
            "xl_picture": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?aki_policy=x_large",
            "xx_large": "https://mashvisor.com/photos/fbbe5275-7059-451c-bd2c-05bf94586ec4.jpg?aki_policy=xx_large"
          },
          {
            "id": 337514492,
            "picture": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?aki_policy=large",
            "sort_order": 4,
            "caption": "Galley Kitchen with period cabinets, nice size refrigerator/freezer and updated granite counter tops",
            "large": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?aki_policy=large",
            "large_cover": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?interpolation=lanczos-none&size=large_cover&output-format=jpg&output-quality=70",
            "medium": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?aki_policy=medium",
            "mini_square": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?aki_policy=mini_square",
            "scrim_color": "#321108",
            "small": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?aki_policy=small",
            "thumbnail": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?aki_policy=small",
            "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAIAAADtz9qMAAAATElEQVQIHQFBAL7/AamOceDg4RIUE/rx7AG0noLd19EsOkj11rgBtqWUz8jAHSAk//HjAaqtr93Aq/z69vXv6wGdrLPmwavm188rMjfs0Cfakj9QNAAAAABJRU5ErkJggg==",
            "x_large": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?aki_policy=x_large",
            "x_large_cover": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?interpolation=lanczos-none&size=x_large_cover&output-format=jpg&output-quality=70",
            "x_medium": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?aki_policy=x_medium",
            "x_small": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?aki_policy=x_small",
            "xl_picture": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?aki_policy=x_large",
            "xx_large": "https://mashvisor.com/photos/8d7546da-bb03-4759-bbca-2a65ce2890af.jpg?aki_policy=xx_large"
          },
          {
            "id": 337514550,
            "picture": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?aki_policy=large",
            "sort_order": 5,
            "caption": "Kitchen has 4 burner gas range oven/broiler, built in microwave and stainless steel sink",
            "large": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?aki_policy=large",
            "large_cover": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?interpolation=lanczos-none&size=large_cover&output-format=jpg&output-quality=70",
            "medium": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?aki_policy=medium",
            "mini_square": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?aki_policy=mini_square",
            "scrim_color": "#623D20",
            "small": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?aki_policy=small",
            "thumbnail": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?aki_policy=small",
            "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAIAAADJUWIXAAAAS0lEQVQIHQFAAL//AbmUbvXiyvHu7Q8UGRg0TgHRuqH92qcADSkBBxUcQl8Bq4Ff/Pbr5PIDHSQpNk9jAcPKyPDe0uXKuAcOGDxXaNk1HdTVxRasAAAAAElFTkSuQmCC",
            "x_large": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?aki_policy=x_large",
            "x_large_cover": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?interpolation=lanczos-none&size=x_large_cover&output-format=jpg&output-quality=70",
            "x_medium": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?aki_policy=x_medium",
            "x_small": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?aki_policy=x_small",
            "xl_picture": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?aki_policy=x_large",
            "xx_large": "https://mashvisor.com/photos/642bb902-5967-4d68-b071-38e2dc6d8f9e.jpg?aki_policy=xx_large"
          },
          {
            "id": 337514646,
            "picture": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?aki_policy=large",
            "sort_order": 6,
            "caption": "In kitchen looking at dining area",
            "large": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?aki_policy=large",
            "large_cover": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?interpolation=lanczos-none&size=large_cover&output-format=jpg&output-quality=70",
            "medium": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?aki_policy=medium",
            "mini_square": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?aki_policy=mini_square",
            "scrim_color": "#2C180F",
            "small": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?aki_policy=small",
            "thumbnail": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?aki_policy=small",
            "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAIAAADJUWIXAAAAS0lEQVQIHQFAAL//Ab2JPggJBQAA/wP88t/wCAGog1csQFzd1s3lzaYIEhkBnX1UIjti6d7WAOW1BAoHAZJxTev+EQYA+hD33+Dn4GWFHQtIYnX0AAAAAElFTkSuQmCC",
            "x_large": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?aki_policy=x_large",
            "x_large_cover": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?interpolation=lanczos-none&size=x_large_cover&output-format=jpg&output-quality=70",
            "x_medium": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?aki_policy=x_medium",
            "x_small": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?aki_policy=x_small",
            "xl_picture": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?aki_policy=x_large",
            "xx_large": "https://mashvisor.com/photos/9ec61251-5d80-48bf-9be2-a87956ab66af.jpg?aki_policy=xx_large"
          },
          {
            "id": 337514752,
            "picture": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?aki_policy=large",
            "sort_order": 7,
            "caption": "Bathroom vanity with updated vessel sink and granite countertops ",
            "large": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?aki_policy=large",
            "large_cover": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?interpolation=lanczos-none&size=large_cover&output-format=jpg&output-quality=70",
            "medium": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?aki_policy=medium",
            "mini_square": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?aki_policy=mini_square",
            "scrim_color": "#39230E",
            "small": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?aki_policy=small",
            "thumbnail": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?aki_policy=small",
            "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAIAAADtz9qMAAAATElEQVQIHQFBAL7/AbKXdismEuz2DczCzgGpqaMqEe7b5gLn1NABkYl/DPvmChMl7d3XAXVVNhAWHPHv8Q4LEwFWPSYtKi39+egCAgr+lRywRSWShwAAAABJRU5ErkJggg==",
            "x_large": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?aki_policy=x_large",
            "x_large_cover": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?interpolation=lanczos-none&size=x_large_cover&output-format=jpg&output-quality=70",
            "x_medium": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?aki_policy=x_medium",
            "x_small": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?aki_policy=x_small",
            "xl_picture": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?aki_policy=x_large",
            "xx_large": "https://mashvisor.com/photos/5df7d3e5-98f5-486e-ac4b-330edc142e0e.jpg?aki_policy=xx_large"
          },
          {
            "id": 337514847,
            "picture": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?aki_policy=large",
            "sort_order": 8,
            "caption": "Large walk-in closet",
            "large": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?aki_policy=large",
            "large_cover": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?interpolation=lanczos-none&size=large_cover&output-format=jpg&output-quality=70",
            "medium": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?aki_policy=medium",
            "mini_square": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?aki_policy=mini_square",
            "scrim_color": "#1E202C",
            "small": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?aki_policy=small",
            "thumbnail": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?aki_policy=small",
            "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAIAAADtz9qMAAAATElEQVQIHQFBAL7/Ab+kehMWGwkKC5WXugGmlnshJTDj7P6nmZ4BjYRyFBgj0eD31L22AYqCcdvd6env+P8A+QGKfmivuM34/wUdIB/TtSCmT7p/WAAAAABJRU5ErkJggg==",
            "x_large": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?aki_policy=x_large",
            "x_large_cover": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?interpolation=lanczos-none&size=x_large_cover&output-format=jpg&output-quality=70",
            "x_medium": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?aki_policy=x_medium",
            "x_small": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?aki_policy=x_small",
            "xl_picture": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?aki_policy=x_large",
            "xx_large": "https://mashvisor.com/photos/e429266b-c6d9-44bd-9020-8f0172b1d1f2.jpg?aki_policy=xx_large"
          },
          {
            "id": 337515159,
            "picture": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?aki_policy=large",
            "sort_order": 9,
            "caption": "",
            "large": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?aki_policy=large",
            "large_cover": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?interpolation=lanczos-none&size=large_cover&output-format=jpg&output-quality=70",
            "medium": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?aki_policy=medium",
            "mini_square": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?aki_policy=mini_square",
            "scrim_color": "#14100D",
            "small": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?aki_policy=small",
            "thumbnail": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?aki_policy=small",
            "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAIAAADtz9qMAAAATElEQVQIHQFBAL7/AZmFZvX1+9/m8ycyPAGgj2/t5ebr7/1RZXUBqZx+49nb7u/7Wm9/AVYxIQ0PC9/2/y4uNAFIMyj48vPmAAsZHCjOOiGPSJGPcQAAAABJRU5ErkJggg==",
            "x_large": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?aki_policy=x_large",
            "x_large_cover": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?interpolation=lanczos-none&size=x_large_cover&output-format=jpg&output-quality=70",
            "x_medium": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?aki_policy=x_medium",
            "x_small": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?aki_policy=x_small",
            "xl_picture": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?aki_policy=x_large",
            "xx_large": "https://mashvisor.com/photos/97d29a00-c93a-493b-93e5-9f50db3c6d71.jpg?aki_policy=xx_large"
          },
          {
            "id": 459520697,
            "picture": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?aki_policy=large",
            "sort_order": 10,
            "caption": "Bathtub / shower combination ",
            "large": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?aki_policy=large",
            "large_cover": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?interpolation=lanczos-none&size=large_cover&output-format=jpg&output-quality=70",
            "medium": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?aki_policy=medium",
            "mini_square": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?aki_policy=mini_square",
            "scrim_color": "#42311F",
            "small": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?aki_policy=small",
            "thumbnail": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?aki_policy=small",
            "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAIAAADtz9qMAAAATElEQVQIHQFBAL7/AdnMvdLOzNTOxf76+AHTxbrd29jPyb8FAgABx7qw4d/c2dPJA/77AcOyqNfZ1dXQyg4KBQGllYjt7er08/ILCQSfWClOjvre5gAAAABJRU5ErkJggg==",
            "x_large": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?aki_policy=x_large",
            "x_large_cover": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?interpolation=lanczos-none&size=x_large_cover&output-format=jpg&output-quality=70",
            "x_medium": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?aki_policy=x_medium",
            "x_small": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?aki_policy=x_small",
            "xl_picture": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?aki_policy=x_large",
            "xx_large": "https://mashvisor.com/photos/e36b36f8-9377-4ca1-9ad5-e4ba3ec7d3c1.jpg?aki_policy=xx_large"
          },
          {
            "id": 459521152,
            "picture": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?aki_policy=large",
            "sort_order": 11,
            "caption": "Tile shelf’s in shower with ample supplies to get started ",
            "large": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?aki_policy=large",
            "large_cover": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?interpolation=lanczos-none&size=large_cover&output-format=jpg&output-quality=70",
            "medium": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?aki_policy=medium",
            "mini_square": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?aki_policy=mini_square",
            "scrim_color": "#521B07",
            "small": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?aki_policy=small",
            "thumbnail": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?aki_policy=small",
            "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAIAAADtz9qMAAAATElEQVQIHQFBAL7/Ac6ujfr5+OPj4ufp7QHOrY/2+PjV1tX19fYBx6iL9PX20dPS6d7gAb6hhvb19dLT0vz3+AGxlXz5+PfQ09ABAAFpTy/rv9tePwAAAABJRU5ErkJggg==",
            "x_large": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?aki_policy=x_large",
            "x_large_cover": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?interpolation=lanczos-none&size=x_large_cover&output-format=jpg&output-quality=70",
            "x_medium": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?aki_policy=x_medium",
            "x_small": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?aki_policy=x_small",
            "xl_picture": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?aki_policy=x_large",
            "xx_large": "https://mashvisor.com/photos/3319c11d-8560-49c1-95e3-50c98de40781.jpg?aki_policy=xx_large"
          }
        ]
      }
    }
    

    This endpoint retrieves all listings photos, with their orders and different sizes.

    Photo Object Data Dictionary

    Attribute Definition Possible Returns
    id ID of the photo Integer
    picture Main url String
    sort_order Photo sorting order Integer
    caption Photo caption String
    large String
    large_cover String
    medium String
    mini_square String
    scrim_color String
    small String
    thumbnail String
    x_large String
    x_large_cover String
    x_medium String
    x_small String
    xl_picture String
    xx_large String

    HTTP Request

    GET https://api.mashvisor.com/v1.1/client/airbnb-property/{id}/photos

    Request Headers

    Parameter Value
    x-api-key User Authentication Header

    Path Parameters

    Parameter Value Default Description
    id Long The Airbnb property Id.

    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.

    Get Airbnb Calendars

    Sample Request

    OkHttpClient client = new OkHttpClient();
    
    Request request = new Request.Builder()
      .url("https://api.mashvisor.com/v1.1/client/airbnb-property/19680922/calendar?state=CA")
      .get()
      .build();
    
    Response response = client.newCall(request).execute();
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://api.mashvisor.com/v1.1/client/airbnb-property/19680922/calendar?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/airbnb-property/19680922/calendar');
    $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/airbnb-property/19680922/calendar?state=CA"
    
        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": {
        "id": 19680922,
        "created_at": "2018-07-31T23:02:34.752Z",
        "updated_at": "2019-07-25T21:40:49.824Z",
        "calendar_2019": {
          "metadata": "N/A",
          "calendar_months": [
            {
              "abbr_name": "May",
              "day_names": [
                "Mon",
                "Tue",
                "Wed",
                "Thu",
                "Fri",
                "Sat",
                "Sun"
              ],
              "days": [
                {
                  "available": false,
                  "date": "2019-04-29",
                  "available_for_checkin": false,
                  "price": {
                    "date": "2019-04-29",
                    "local_adjusted_price": 105,
                    "local_currency": "USD",
                    "local_price": 105,
                    "native_adjusted_price": 105,
                    "native_currency": "USD",
                    "native_price": 105,
                    "type": "default",
                    "local_price_formatted": "$105",
                    "is_price_upon_request": null
                  },
                  "min_nights": 30,
                  "max_nights": 180
                },
                {
                  "available": false,
                  "date": "2019-04-30",
                  "available_for_checkin": false,
                  "price": {
                    "date": "2019-04-30",
                    "local_adjusted_price": 105,
                    "local_currency": "USD",
                    "local_price": 105,
                    "native_adjusted_price": 105,
                    "native_currency": "USD",
                    "native_price": 105,
                    "type": "default",
                    "local_price_formatted": "$105",
                    "is_price_upon_request": null
                  },
                  "min_nights": 30,
                  "max_nights": 180
                },
                {
                  "available": false,
                  "date": "2019-05-01",
                  "available_for_checkin": false,
                  "price": {
                    "date": "2019-05-01",
                    "local_adjusted_price": 105,
                    "local_currency": "USD",
                    "local_price": 105,
                    "native_adjusted_price": 105,
                    "native_currency": "USD",
                    "native_price": 105,
                    "type": "default",
                    "local_price_formatted": "$105",
                    "is_price_upon_request": null
                  },
                  "min_nights": 30,
                  "max_nights": 180
                },
                {
                  "available": false,
                  "date": "2019-05-02",
                  "available_for_checkin": false,
                  "price": {
                    "date": "2019-05-02",
                    "local_adjusted_price": 105,
                    "local_currency": "USD",
                    "local_price": 105,
                    "native_adjusted_price": 105,
                    "native_currency": "USD",
                    "native_price": 105,
                    "type": "default",
                    "local_price_formatted": "$105",
                    "is_price_upon_request": null
                  },
                  "min_nights": 30,
                  "max_nights": 180
                },
                {
                  "available": false,
                  "date": "2019-05-03",
                  "available_for_checkin": false,
                  "price": {
                    "date": "2019-05-03",
                    "local_adjusted_price": 105,
                    "local_currency": "USD",
                    "local_price": 105,
                    "native_adjusted_price": 105,
                    "native_currency": "USD",
                    "native_price": 105,
                    "type": "default",
                    "local_price_formatted": "$105",
                    "is_price_upon_request": null
                  },
                  "min_nights": 30,
                  "max_nights": 180
                },
                {
                  "available": false,
                  "date": "2019-05-04",
                  "available_for_checkin": false,
                  "price": {
                    "date": "2019-05-04",
                    "local_adjusted_price": 105,
                    "local_currency": "USD",
                    "local_price": 105,
                    "native_adjusted_price": 105,
                    "native_currency": "USD",
                    "native_price": 105,
                    "type": "default",
                    "local_price_formatted": "$105",
                    "is_price_upon_request": null
                  },
                  "min_nights": 30,
                  "max_nights": 180
                },
                ...
              ],
              "prices_to_be_highlighted": null
            },
            ...
          ]
        }
      }
    }
    

    This endpoint retrieves an array of month by month, and day per day for each day availability and day booking price, below is an explanation for each day object elements.

    Calendars Data Dictionary

    Attribute Definition Possible Returns
    calendar_2014 Calendar days of 2014 Calendar object
    calendar_2015 Calendar days of 2015 Calendar object
    calendar_2016 Calendar days of 2016 Calendar object
    calendar_2017 Calendar days of 2017 Calendar object
    calendar_2018 Calendar days of 2018 Calendar object
    calendar_2019 Calendar days of 2019 Calendar object

    Calendar Data Dictionary

    Attribute Definition Possible Returns
    available Indicator whether the day is available for booking or not Boolean
    date The date of the day Date
    local_adjusted_price The local price for that day Integer
    local_currency The local price currency String
    native_price The native price for that day of booking Integer

    HTTP Request

    GET https://api.mashvisor.com/v1.1/client/airbnb-property/{id}/calendar

    Request Headers

    Parameter Value
    x-api-key User Authentication Header

    Path Parameters

    Parameter Value Default Description
    id Long The Airbnb property Id.

    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.

    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"
    }
    

    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/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.
    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": {
            "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_of_properties": 114,
            "num_page_properties": 3,
            "page": "1"
        }
    }
    

    List all active short term rentals for a specific location: city, zip code, or a 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.
    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 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": 161,
        "average_occupancy": 82.7578,
        "average_price": 191.5714,
        "rental_income": 3,
        "property_types": 3,
        "occupancy_histogram": {
          "average_occupancy": 193,
          "histogram": [
            50.4,
            23.3,
            43.2,
            56.4,
            80.4,
            43.2,
            21.1,
            41,
            26.3,
            37.3,
            64.7,
            90.1,
            11.3
          ]
        },
        "night_price_histogram": {
          "average_price": 153,
          "histogram": [
            134,
            126,
            137,
            152,
            161,
            150,
            168,
            160,
            151,
            145,
            156,
            114,
            116
          ]
        }
      }
    }
    

    Get a summary an overview for a specific location: city, zip code, or a 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.
    city String A specific city you're looking for.
    neighborhood Long Neighborhood id you're targeting
    zip_code Integer Any postal zip code.

    Get Airbnb Occupancy Rates

    For each Airbnb listing, we calculate its occupancy rate, month per month, and an annual rate, and we offer our clients a 12-month historical performance for the occupancy rates. We store each listing’s bookings and calendar since the day the listing became active over AirBnB.
    We have access to a day per day performance, nightly price, and if the property was available for booking or not. So for each month, we check day over day if it was booked or not, and how much the host made off that booking, whether it was a one night booking, or a booking for a few nights in a row.
    Sometimes, a host makes the listing calendar look like it’s occupied and not available for booking, even though it is not booked by a guest. Generally speaking, this might cause inaccurate calculations for the occupancy rates and the listing rental rate. At Mashvisor, we have identified this issue and solved it by the continuous hard working cycle over cycle over the past 4 years to enhance how we calculate the occupancy and to verify if a night was really booked or only blocked by the host from booking.
    We also calculate the nightly price rate based on the nights that were actually booked. We calculate the nightly price as the average of all booked nights in a month.
    Also, when Mashvisor sees a month is almost fully booked, we review the month’s reviews and compare it to the number of bookings. This guarantees the bookings are real and the data and calculation we made are right. If the validation fails, we don’t consider the month’s bookings.
    Finally, the listing’s occupancy rate is calculated as the average (mean) occupancy rate of the previous 12 months’ occupancies to make sure that seasonality is considered in the analysis.

    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": {
        "studio": 57.2,
        "one_bedroom": 82.75,
        "two_bedrooms": 71.4,
        "three_bedrooms": 72.76,
        "four_bedrooms": 55.26
      }
    }
    

    Market occupancy rates for a zip code or a neighborhood.

    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.
    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": 4,
        "House": 21,
        "Serviced apartment": 14,
        "Townhouse": 3,
        "Condominium": 6
      }
    }
    

    Check all market property types for a zip code or a neighborhood and return their 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.
    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": [
        {
          "first_name": "Jeff",
          "has_profile_pic": true,
          "id": 12703126,
          "picture_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_x_medium",
          "smart_name": "Jeff",
          "thumbnail_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_small",
          "acceptance_rate": "N/A",
          "created_at": "2014-03-01T21:16:11Z",
          "identity_verified": false,
          "is_superhost": true,
          "picture_large_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_large",
          "recommendation_count": 0,
          "response_rate": "100%",
          "response_time": "within an hour",
          "reviewee_count": 24,
          "thumbnail_medium_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_medium",
          "neighborhood": "Chinatown",
          "verification_labels": [
            "Email address",
            "Phone number",
            "Reviewed"
          ],
          "verifications": [
            "email",
            "phone",
            "reviews"
          ],
          "about": "Friendly, accomadating, respectful, polite, easy going regular person. ",
          "all_active_phone_numbers": [],
          "friends_count": 0,
          "guidebooks_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": [
            "English"
          ],
          "listings_count": 5,
          "location": "San Francisco, CA",
          "recent_recommendation": null,
          "recent_review": {
            "review": {
              "comments": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.",
              "created_at": "2019-07-16T23:27:35Z",
              "id": 489450656,
              "listing_id": 18853563,
              "reviewee_id": 12703126,
              "reviewer": {
                "user": {
                  "first_name": "Lanting",
                  "has_profile_pic": true,
                  "id": 204093245,
                  "picture_url": "https://mashvisor.com/photos/user/737bd62a-859b-400b-8a4f-42749ef8908c.jpg?aki_policy=profile_x_medium",
                  "smart_name": "Lanting",
                  "thumbnail_url": "https://mashvisor.com/photos/user/737bd62a-859b-400b-8a4f-42749ef8908c.jpg?aki_policy=profile_small"
                }
              },
              "reviewer_id": 204093245,
              "role": "guest",
              "user_flag": null,
              "listing": {
                "listing": {
                  "city": "San Francisco",
                  "collection_ids": null,
                  "country": "United States",
                  "has_double_blind_reviews": false,
                  "id": 18853563,
                  "instant_book_enabled": false,
                  "instant_bookable": false,
                  "lat": 37.79252,
                  "lng": -122.4081,
                  "medium_url": "https://mashvisor.com/photos/aeb9bdc7-2fad-4072-a8d3-4e65e9366042.jpg?aki_policy=medium",
                  "name": "Nob Hill Jewel Box",
                  "native_currency": "USD",
                  "picture_url": "https://mashvisor.com/photos/aeb9bdc7-2fad-4072-a8d3-4e65e9366042.jpg?aki_policy=large",
                  "preview_encoded_png": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAIAAADJUWIXAAAAS0lEQVQIHQFAAL//AXNWOO7s7/r9Ae7o5iI4RgFgQiMPBQU7W3SJfnuVqbMBRjoyKCYqHiAfq6CUN0dUAUU5MBgcKdbe6frv2vPz9WRpG/xGx/8wAAAAAElFTkSuQmCC",
                  "price": 100,
                  "price_formatted": "$100",
                  "price_native": 100,
                  "scrim_color": "#120806",
                  "smart_location": "San Francisco, CA",
                  "thumbnail_url": "https://mashvisor.com/photos/aeb9bdc7-2fad-4072-a8d3-4e65e9366042.jpg?aki_policy=small",
                  "user": {
                    "user": {
                      "first_name": "Jeff",
                      "has_profile_pic": true,
                      "id": 12703126,
                      "picture_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_x_medium",
                      "smart_name": "Jeff",
                      "thumbnail_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_small"
                    }
                  },
                  "user_id": 12703126,
                  "x_medium_picture_url": "https://mashvisor.com/photos/aeb9bdc7-2fad-4072-a8d3-4e65e9366042.jpg?aki_policy=x_medium",
                  "xl_picture_url": "https://mashvisor.com/photos/aeb9bdc7-2fad-4072-a8d3-4e65e9366042.jpg?aki_policy=x_large"
                }
              },
              "reviewee": {
                "user": {
                  "first_name": "Jeff",
                  "has_profile_pic": true,
                  "id": 12703126,
                  "picture_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_x_medium",
                  "smart_name": "Jeff",
                  "thumbnail_url": "https://mashvisor.com/photos/7406e94f-e5b0-4ba4-9739-eb90b739bef5.jpg?aki_policy=profile_small"
                }
              }
            }
          },
          "school": "High school, some college",
          "show_travel_for_work": false,
          "signup_method": 0,
          "total_listings_count": 5,
          "user_flag": null,
          "work": "Property management "
        },
        ...
      ]
    }
    

    Obtain a list of all market super hosts for a zip code or a neighborhood.

    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.
    city String A specific city you're looking for.
    neighborhood Long Neighborhood id you're targeting
    zip_code Integer Any postal zip code.

    Get 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": {
            "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": 166,
                    "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": 152,
                    "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",