Developer Tools

Valuations for underwriting, analyzing, and evaluating homes

Values and valuation reports that provide insight into the true worth of a home.

API Documentation

Get a head start by downloading our postman collection, which includes dozens of examples from 20 different languages and tools for calling our API.

HouseCanary Analytics API Provides All the Information You Need to Value One Property or Thousands

Use the code below in the language of your choice to get a live response.
1curl -G https://api.housecanary.com/v2/property/value \
2	-d address=43+Valmonte+Plaza \
3	-d zipcode=90274 \
4	-u test_0TAQAK5ESOFQ1ZVLQO9M:rTecWozVb3dGkWkdUX7ElAgTFWqvWDHk \
1import pprint
2import requests
34url = 'https://api.housecanary.com/v2/property/value'5params = {'address': '43 Valmonte Plaza', 'zipcode': '90274'}
6response = requests.get(url, params=params, auth=('test_0TAQAK5ESOFQ1ZVLQO9M', 'rTecWozVb3dGkWkdUX7ElAgTFWqvWDHk'))
7pprint.pprint(response.json()) 
1import java.net.*;
23import org.apache.commons.codec.binary.Base64;
4import org.apache.http.HttpEntity;
5import org.apache.http.HttpHeaders;
6import org.apache.http.client.methods.HttpGet;
7import org.apache.http.client.methods.CloseableHttpResponse;
8import org.apache.http.client.utils.URIBuilder;
9import org.apache.http.impl.client.HttpClients;
10import org.apache.http.impl.client.CloseableHttpClient;
11import org.apache.http.util.EntityUtils;
1213/**
14* Example of making a GET request to the HouseCanary API
15* using the Apache HTTP library.
16*/17publicclassHCApiGetExample{
1819publicstaticvoidmain(final String[] args){
20try {
21 String host = "api.housecanary.com";
2223// build up the URI with query params24 URI uri = new URIBuilder()
25 .setScheme("https")
26 .setHost(host)
27 .setPath("/v2/property/value")
28 .setParameter("address", "43 Valmonte Plaza")
29 .setParameter("zipcode", "90274")
30 .build();
3132 HttpGet httpGet = new HttpGet(uri);
3334 String auth = "test_0TAQAK5ESOFQ1ZVLQO9M" + ":" + "rTecWozVb3dGkWkdUX7ElAgTFWqvWDHk";
35byte[] encodedAuth = Base64.encodeBase64(auth.getBytes());
36 String authHeader = "Basic " + new String(encodedAuth);
37 httpGet.addHeader(HttpHeaders.AUTHORIZATION, authHeader);
3839 CloseableHttpClient httpClient = HttpClients.createDefault();
4041 CloseableHttpResponse response = httpClient.execute(httpGet);
4243try {
44 System.out.println(response.getStatusLine());
4546 HttpEntity entity = response.getEntity();
47 System.out.println(EntityUtils.toString(entity));
4849 EntityUtils.consume(entity);
50 } finally {
51 response.close();
52 }
53return;
5455 } catch (Exception e) {
56 e.printStackTrace();
57 }
58	}
59}
1namespace HouseCanaryAPIGist
2{
3using System;
4using System.Collections.Generic;
5using System.Net;
6using System.Net.Http;
7using System.Net.Http.Headers;
8using System.Text;
910// Example of making a GET request to the HouseCanary API 11// using System.Net.Http.HttpClient.12publicclassHCApiGetExample13	{14publicstaticvoidMain(string[] args)15{
16using (var client = new HttpClient())
17 {
18 client.BaseAddress = new Uri("https://api.housecanary.com");
1920string queryParams;
21using(var content = new FormUrlEncodedContent(new KeyValuePair[]{
22new KeyValuePair("address", "43 Valmonte Plaza"),
23new KeyValuePair("zipcode", "90274")
24 })) {
25 queryParams = content.ReadAsStringAsync().Result;
26 }
2728string url = "/v2/property/value?" + queryParams;
2930 var byteArray = Encoding.ASCII.GetBytes("test_0TAQAK5ESOFQ1ZVLQO9M:rTecWozVb3dGkWkdUX7ElAgTFWqvWDHk");
31 client.DefaultRequestHeaders.Authorization = 32new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
3334 HttpResponseMessage response = client.GetAsync(url).GetAwaiter().GetResult();
3536string body = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
3738 Console.WriteLine(body);
39 }
40 }
41	}
42}
1require'http'23url = "https://api.housecanary.com/v2/property/value"45query_params = {
6"address": "43 Valmonte Plaza",
7"zipcode": "90274"8}
910response = HTTP.basic_auth(:user => "test_0TAQAK5ESOFQ1ZVLQO9M", :pass => "rTecWozVb3dGkWkdUX7ElAgTFWqvWDHk")
11.get(url, :params => query_params)
1213puts response.to_s
1library(httr)
23url <- "https://api.housecanary.com/v2/property/value"45query_params <- list(
6address = "43 Valmonte Plaza",
7zipcode = "90274"8)
910r <- GET(
11url,
12authenticate("test_0TAQAK5ESOFQ1ZVLQO9M", "rTecWozVb3dGkWkdUX7ElAgTFWqvWDHk", type = "basic"),
13query = query_params)
1415print(str(content(r)))
1// Example with Node.js23const request = require('request');
4const url = 'https://api.housecanary.com/v2/property/value';
56request.get({
7url: url,
8auth: {
9user: 'test_0TAQAK5ESOFQ1ZVLQO9M',
10pass: 'rTecWozVb3dGkWkdUX7ElAgTFWqvWDHk'11	},
12qs: {
13address: '43 Valmonte Plaza',
14zipcode: '90274'15	} 16}, function (error, response, body) {
17console.log(body);
18});

Security and Compliance at HouseCanary

HouseCanary is committed to security and compliance. We take the following measures to ensure that your information is safe, and that our site is always accessible to provide you with error-free data.
Third-party security certification
SOC 2 Type I and II compliant
Third-party security auditing
Continuous conduct penetration testing
Best in class security practices
Data encrypted using 256-bit or higher encryption
Systems restricted to authorized personnel only
All hands on deck for security
Complete background investigations on all critical employees, as designated by SOC requirements, and on certain personnel involved in the production and delivery of valuation products.