Find an API

Search public APIs with auth details & Postman guides

← All APIs

SimplyRETS

simplyrets · Company

Company No Auth Free & Open API

The SimplyRETS API is an exciting step towards making it easier for developers and real estate agents to build something awesome with real estate data! The documentation below makes live requests to our API using the trial data. To get set up with the API using live MLS data, you must have RETS credentials from your MLS, which you can then use to create an app with SimplyRETS. For more information on that process, please see our [FAQ](https://simplyrets.com/faq), [Getting Started](https://simpl

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET The SimplyRETS OpenHouses API

This is the main endpoint for accessing openhouses.

https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses?sort=listprice&type=residential&agent=example&limit=10&cities=example&lastId=1&offset=0&brokers=example&include=example&minprice=1&listingId=example&startdate=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses?sort=listprice&type=residential&agent=example&limit=10&cities=example&lastId=1&offset=0&brokers=example&include=example&minprice=1&listingId=example&startdate=example"
import requests
params = {
    "sort": "listprice",
    "type": "residential",
    "agent": "example",
    "limit": "10",
    "cities": "example",
    "lastId": "1",
    "offset": "0",
    "brokers": "example",
    "include": "example",
    "minprice": "1",
    "listingId": "example",
    "startdate": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses');
url.searchParams.set('sort', 'listprice');
url.searchParams.set('type', 'residential');
url.searchParams.set('agent', 'example');
url.searchParams.set('limit', '10');
url.searchParams.set('cities', 'example');
url.searchParams.set('lastId', '1');
url.searchParams.set('offset', '0');
url.searchParams.set('brokers', 'example');
url.searchParams.set('include', 'example');
url.searchParams.set('minprice', '1');
url.searchParams.set('listingId', 'example');
url.searchParams.set('startdate', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses")
	q := baseURL.Query()
	q.Set("sort", "listprice")
	q.Set("type", "residential")
	q.Set("agent", "example")
	q.Set("limit", "10")
	q.Set("cities", "example")
	q.Set("lastId", "1")
	q.Set("offset", "0")
	q.Set("brokers", "example")
	q.Set("include", "example")
	q.Set("minprice", "1")
	q.Set("listingId", "example")
	q.Set("startdate", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses")
uri.query = URI.encode_www_form({
  "sort" => "listprice",
  "type" => "residential",
  "agent" => "example",
  "limit" => "10",
  "cities" => "example",
  "lastId" => "1",
  "offset" => "0",
  "brokers" => "example",
  "include" => "example",
  "minprice" => "1",
  "listingId" => "example",
  "startdate" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses?" . http_build_query([
    "sort" => "listprice",
    "type" => "residential",
    "agent" => "example",
    "limit" => "10",
    "cities" => "example",
    "lastId" => "1",
    "offset" => "0",
    "brokers" => "example",
    "include" => "example",
    "minprice" => "1",
    "listingId" => "example",
    "startdate" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET The SimplyRETS Listings API

This is the main endpoint for accessing your properties. View all of the available query parameters and make requests below! The API uses Basic Authentication, which most HTTP libraries will handle for you. To use the test data (which is what this pages uses), you can use the api key `simplyrets` an

https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/properties?q=test&sort=listprice&type=residential&agent=example&count=10&limit=10&water=example&cities=example&lastId=1&maxdom=1&offset=0&points=example&status=Active&vendor=example&brokers=example&include=association&maxarea=1&maxbeds=1&minarea=1&minbeds=1&minyear=1&subtype=apartment&counties=example&features=example&maxbaths=1&maxprice=1&minbaths=1&minprice=1&postalCodes=example&neighborhoods=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/properties?q=test&sort=listprice&type=residential&agent=example&count=10&limit=10&water=example&cities=example&lastId=1&maxdom=1&offset=0&points=example&status=Active&vendor=example&brokers=example&include=association&maxarea=1&maxbeds=1&minarea=1&minbeds=1&minyear=1&subtype=apartment&counties=example&features=example&maxbaths=1&maxprice=1&minbaths=1&minprice=1&postalCodes=example&neighborhoods=example"
import requests
params = {
    "q": "test",
    "sort": "listprice",
    "type": "residential",
    "agent": "example",
    "count": "10",
    "limit": "10",
    "water": "example",
    "cities": "example",
    "lastId": "1",
    "maxdom": "1",
    "offset": "0",
    "points": "example",
    "status": "Active",
    "vendor": "example",
    "brokers": "example",
    "include": "association",
    "maxarea": "1",
    "maxbeds": "1",
    "minarea": "1",
    "minbeds": "1",
    "minyear": "1",
    "subtype": "apartment",
    "counties": "example",
    "features": "example",
    "maxbaths": "1",
    "maxprice": "1",
    "minbaths": "1",
    "minprice": "1",
    "postalCodes": "example",
    "neighborhoods": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/properties",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/properties');
url.searchParams.set('q', 'test');
url.searchParams.set('sort', 'listprice');
url.searchParams.set('type', 'residential');
url.searchParams.set('agent', 'example');
url.searchParams.set('count', '10');
url.searchParams.set('limit', '10');
url.searchParams.set('water', 'example');
url.searchParams.set('cities', 'example');
url.searchParams.set('lastId', '1');
url.searchParams.set('maxdom', '1');
url.searchParams.set('offset', '0');
url.searchParams.set('points', 'example');
url.searchParams.set('status', 'Active');
url.searchParams.set('vendor', 'example');
url.searchParams.set('brokers', 'example');
url.searchParams.set('include', 'association');
url.searchParams.set('maxarea', '1');
url.searchParams.set('maxbeds', '1');
url.searchParams.set('minarea', '1');
url.searchParams.set('minbeds', '1');
url.searchParams.set('minyear', '1');
url.searchParams.set('subtype', 'apartment');
url.searchParams.set('counties', 'example');
url.searchParams.set('features', 'example');
url.searchParams.set('maxbaths', '1');
url.searchParams.set('maxprice', '1');
url.searchParams.set('minbaths', '1');
url.searchParams.set('minprice', '1');
url.searchParams.set('postalCodes', 'example');
url.searchParams.set('neighborhoods', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/properties")
	q := baseURL.Query()
	q.Set("q", "test")
	q.Set("sort", "listprice")
	q.Set("type", "residential")
	q.Set("agent", "example")
	q.Set("count", "10")
	q.Set("limit", "10")
	q.Set("water", "example")
	q.Set("cities", "example")
	q.Set("lastId", "1")
	q.Set("maxdom", "1")
	q.Set("offset", "0")
	q.Set("points", "example")
	q.Set("status", "Active")
	q.Set("vendor", "example")
	q.Set("brokers", "example")
	q.Set("include", "association")
	q.Set("maxarea", "1")
	q.Set("maxbeds", "1")
	q.Set("minarea", "1")
	q.Set("minbeds", "1")
	q.Set("minyear", "1")
	q.Set("subtype", "apartment")
	q.Set("counties", "example")
	q.Set("features", "example")
	q.Set("maxbaths", "1")
	q.Set("maxprice", "1")
	q.Set("minbaths", "1")
	q.Set("minprice", "1")
	q.Set("postalCodes", "example")
	q.Set("neighborhoods", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/properties")
uri.query = URI.encode_www_form({
  "q" => "test",
  "sort" => "listprice",
  "type" => "residential",
  "agent" => "example",
  "count" => "10",
  "limit" => "10",
  "water" => "example",
  "cities" => "example",
  "lastId" => "1",
  "maxdom" => "1",
  "offset" => "0",
  "points" => "example",
  "status" => "Active",
  "vendor" => "example",
  "brokers" => "example",
  "include" => "association",
  "maxarea" => "1",
  "maxbeds" => "1",
  "minarea" => "1",
  "minbeds" => "1",
  "minyear" => "1",
  "subtype" => "apartment",
  "counties" => "example",
  "features" => "example",
  "maxbaths" => "1",
  "maxprice" => "1",
  "minbaths" => "1",
  "minprice" => "1",
  "postalCodes" => "example",
  "neighborhoods" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/properties?" . http_build_query([
    "q" => "test",
    "sort" => "listprice",
    "type" => "residential",
    "agent" => "example",
    "count" => "10",
    "limit" => "10",
    "water" => "example",
    "cities" => "example",
    "lastId" => "1",
    "maxdom" => "1",
    "offset" => "0",
    "points" => "example",
    "status" => "Active",
    "vendor" => "example",
    "brokers" => "example",
    "include" => "association",
    "maxarea" => "1",
    "maxbeds" => "1",
    "minarea" => "1",
    "minbeds" => "1",
    "minyear" => "1",
    "subtype" => "apartment",
    "counties" => "example",
    "features" => "example",
    "maxbaths" => "1",
    "maxprice" => "1",
    "minbaths" => "1",
    "minprice" => "1",
    "postalCodes" => "example",
    "neighborhoods" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Single OpenHouse Endpoint

Use this endpoint for accessing a single OpenHouse.

https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses/{openHouseKey}?include=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses/{openHouseKey}?include=example"
import requests
params = {
    "include": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses/{openHouseKey}",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses/{openHouseKey}');
url.searchParams.set('include', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses/{openHouseKey}")
	q := baseURL.Query()
	q.Set("include", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses/{openHouseKey}")
uri.query = URI.encode_www_form({
  "include" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/simplyrets.com/1.0.0/openhouses/{openHouseKey}?" . http_build_query([
    "include" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with SimplyRETS?

SimplyRETS is a Company API. Developers commonly use company APIs for:

  • enriching CRM records with company firmographics
  • building lead-generation and prospecting tools
  • verifying business identity and registration details
  • monitoring competitors and market intelligence
  • powering B2B data enrichment pipelines

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. SimplyRETS is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗