curl --request GET \
--url https://scrapebadger.com/v1/realtor/search \
--header 'x-api-key: <api-key>'import requests
url = "https://scrapebadger.com/v1/realtor/search"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://scrapebadger.com/v1/realtor/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/realtor/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/realtor/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/realtor/search")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/realtor/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"market": "<string>",
"country": "<string>",
"total": 123,
"count": 123,
"page": 123,
"total_pages": 123,
"results": [
{
"property_id": "<string>",
"listing_id": "<string>",
"mls_number": "<string>",
"market": "<string>",
"country": "<string>",
"url": "<string>",
"status": "<string>",
"transaction_type": "<string>",
"currency": "<string>",
"list_price": 123,
"list_price_formatted": "<string>",
"list_price_min": 123,
"list_price_max": 123,
"price_per_sqft": 123,
"price_reduced_amount": 123,
"last_sold_price": 123,
"last_sold_date_utc": 123,
"last_sold_date_at": "<string>",
"hoa_fee": 123,
"property_type": "<string>",
"sub_type": "<string>",
"beds": 123,
"baths": 123,
"baths_full": 123,
"baths_half": 123,
"sqft": 123,
"lot_sqft": 123,
"year_built": 123,
"stories": 123,
"garage": 123,
"rooms": 123,
"parking_spaces": 123,
"address": {
"line": "<string>",
"city": "<string>",
"state": "<string>",
"state_code": "<string>",
"postal_code": "<string>",
"country": "<string>",
"neighborhood": "<string>",
"county": "<string>",
"coordinate": {
"lat": 123,
"lon": 123
}
},
"description_text": "<string>",
"primary_photo": "<string>",
"photo_count": 123,
"photos": [
{
"href": "<string>",
"href_high": "<string>",
"href_med": "<string>",
"href_low": "<string>",
"tags": [
"<string>"
],
"description": "<string>"
}
],
"virtual_tours": [
"<string>"
],
"videos": [
"<string>"
],
"flags": {
"is_new_listing": true,
"is_pending": true,
"is_contingent": true,
"is_foreclosure": true,
"is_new_construction": true,
"is_price_reduced": true,
"is_coming_soon": true
},
"tags": [
"<string>"
],
"list_date_utc": 123,
"list_date_at": "<string>",
"last_update_utc": 123,
"last_update_at": "<string>",
"days_on_market": 123,
"agents": [
{
"agent_id": "<string>",
"name": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"title": "<string>",
"type": "<string>",
"email": "<string>",
"phones": [
{
"number": "<string>",
"type": "<string>",
"ext": "<string>",
"primary": true
}
],
"photo": "<string>",
"href": "<string>",
"office": {
"name": "<string>",
"email": "<string>",
"href": "<string>",
"logo": "<string>",
"phones": [
{
"number": "<string>",
"type": "<string>",
"ext": "<string>",
"primary": true
}
],
"address": {
"line": "<string>",
"city": "<string>",
"state": "<string>",
"state_code": "<string>",
"postal_code": "<string>",
"country": "<string>",
"neighborhood": "<string>",
"county": "<string>",
"coordinate": {
"lat": 123,
"lon": 123
}
}
},
"broker": "<string>",
"nrds_id": "<string>",
"state_license": "<string>"
}
],
"source_mls_id": "<string>",
"source_mls_name": "<string>",
"open_houses": [
{
"start_utc": 123,
"start_at": "<string>",
"end_utc": 123,
"end_at": "<string>",
"description": "<string>",
"time_zone": "<string>",
"href": "<string>"
}
]
}
]
}Search Listings
Search a realtor.com (US) or realtor.ca (CA) market for property listings.
curl --request GET \
--url https://scrapebadger.com/v1/realtor/search \
--header 'x-api-key: <api-key>'import requests
url = "https://scrapebadger.com/v1/realtor/search"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://scrapebadger.com/v1/realtor/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/realtor/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/realtor/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/realtor/search")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/realtor/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"market": "<string>",
"country": "<string>",
"total": 123,
"count": 123,
"page": 123,
"total_pages": 123,
"results": [
{
"property_id": "<string>",
"listing_id": "<string>",
"mls_number": "<string>",
"market": "<string>",
"country": "<string>",
"url": "<string>",
"status": "<string>",
"transaction_type": "<string>",
"currency": "<string>",
"list_price": 123,
"list_price_formatted": "<string>",
"list_price_min": 123,
"list_price_max": 123,
"price_per_sqft": 123,
"price_reduced_amount": 123,
"last_sold_price": 123,
"last_sold_date_utc": 123,
"last_sold_date_at": "<string>",
"hoa_fee": 123,
"property_type": "<string>",
"sub_type": "<string>",
"beds": 123,
"baths": 123,
"baths_full": 123,
"baths_half": 123,
"sqft": 123,
"lot_sqft": 123,
"year_built": 123,
"stories": 123,
"garage": 123,
"rooms": 123,
"parking_spaces": 123,
"address": {
"line": "<string>",
"city": "<string>",
"state": "<string>",
"state_code": "<string>",
"postal_code": "<string>",
"country": "<string>",
"neighborhood": "<string>",
"county": "<string>",
"coordinate": {
"lat": 123,
"lon": 123
}
},
"description_text": "<string>",
"primary_photo": "<string>",
"photo_count": 123,
"photos": [
{
"href": "<string>",
"href_high": "<string>",
"href_med": "<string>",
"href_low": "<string>",
"tags": [
"<string>"
],
"description": "<string>"
}
],
"virtual_tours": [
"<string>"
],
"videos": [
"<string>"
],
"flags": {
"is_new_listing": true,
"is_pending": true,
"is_contingent": true,
"is_foreclosure": true,
"is_new_construction": true,
"is_price_reduced": true,
"is_coming_soon": true
},
"tags": [
"<string>"
],
"list_date_utc": 123,
"list_date_at": "<string>",
"last_update_utc": 123,
"last_update_at": "<string>",
"days_on_market": 123,
"agents": [
{
"agent_id": "<string>",
"name": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"title": "<string>",
"type": "<string>",
"email": "<string>",
"phones": [
{
"number": "<string>",
"type": "<string>",
"ext": "<string>",
"primary": true
}
],
"photo": "<string>",
"href": "<string>",
"office": {
"name": "<string>",
"email": "<string>",
"href": "<string>",
"logo": "<string>",
"phones": [
{
"number": "<string>",
"type": "<string>",
"ext": "<string>",
"primary": true
}
],
"address": {
"line": "<string>",
"city": "<string>",
"state": "<string>",
"state_code": "<string>",
"postal_code": "<string>",
"country": "<string>",
"neighborhood": "<string>",
"county": "<string>",
"coordinate": {
"lat": 123,
"lon": 123
}
}
},
"broker": "<string>",
"nrds_id": "<string>",
"state_license": "<string>"
}
],
"source_mls_id": "<string>",
"source_mls_name": "<string>",
"open_houses": [
{
"start_utc": 123,
"start_at": "<string>",
"end_utc": 123,
"end_at": "<string>",
"description": "<string>",
"time_zone": "<string>",
"href": "<string>"
}
]
}
]
}Query Parameters
lat_min/lat_max/lng_min/lng_max).us (realtor.com, USD) or ca (realtor.ca, CAD).| Value | Description |
|---|---|
for_sale | Active for-sale listings (default) |
for_rent | Rental listings |
sold | Recently sold listings |
pending | Pending / under contract |
single_family, condos, townhomes, multi_family, mobile, land.| Value | Description |
|---|---|
relevant | Best match (default) |
newest | Most recently listed |
price_low | Cheapest first |
price_high | Most expensive first |
photo_count | Most photos first |
1 - 200.Response
us or ca).US or CA).Show Property object
Show Property object
us or ca).for_sale, for_rent, sold, pending).sale or rent (nullable).$450,000 (nullable).single_family) (nullable).line, city, state, state_code, postal_code, country, neighborhood, county, and coordinate ({lat, lon}).href, href_high, href_med, href_low, tags[], description.is_new_listing, is_pending, is_contingent, is_foreclosure, is_new_construction, is_price_reduced, is_coming_soon.start_utc, start_at, end_utc, end_at, description, time_zone, href.Example Response
{
"market": "us",
"country": "US",
"total": 842,
"count": 20,
"page": 1,
"total_pages": 43,
"results": [
{
"property_id": "1234567890",
"listing_id": "2960000001",
"mls_number": "ACT1234567",
"market": "us",
"country": "US",
"url": "https://www.realtor.com/realestateandhomes-detail/1234567890",
"status": "for_sale",
"transaction_type": "sale",
"currency": "USD",
"list_price": 450000,
"list_price_formatted": "$450,000",
"price_per_sqft": 250,
"hoa_fee": 45,
"property_type": "single_family",
"beds": 3,
"baths": 2,
"baths_full": 2,
"baths_half": 0,
"sqft": 1800,
"lot_sqft": 6500,
"year_built": 2015,
"address": {
"line": "123 Main St",
"city": "Austin",
"state": "Texas",
"state_code": "TX",
"postal_code": "78701",
"country": "US",
"neighborhood": "Downtown",
"county": "Travis",
"coordinate": { "lat": 30.2672, "lon": -97.7431 }
},
"primary_photo": "https://ap.rdcpix.com/abc/s.jpg",
"photo_count": 32,
"flags": { "is_new_listing": true, "is_price_reduced": false },
"days_on_market": 4,
"agents": [{ "agent_id": "A1", "name": "Jane Doe", "email": "jane@realty.com" }]
}
]
}
Authorizations
Query Parameters
Free-text location (city, ZIP/postal code, or region). Required unless a Canada bounding box is supplied.
Market to search: us (realtor.com, USD) or ca (realtor.ca, CAD).
us, ca Listing status filter.
for_sale, for_rent, sold, pending Minimum list price in the market's local currency.
x >= 0Maximum list price in the market's local currency.
x >= 0Minimum number of bedrooms.
x >= 0Minimum number of bathrooms.
x >= 0Minimum interior square footage (US market only).
x >= 0Maximum interior square footage (US market only).
x >= 0Comma-separated property types (US market only): single_family, condos, townhomes, multi_family, mobile, land.
Sort order for results.
relevant, newest, price_low, price_high, photo_count Page number for paginated results.
x >= 1Results per page (1-200).
1 <= x <= 200South edge of a bounding box (Canada power-user option; realtor.ca caps ~600 results per box).
North edge of a bounding box (Canada only).
West edge of a bounding box (Canada only).
East edge of a bounding box (Canada only).

