curl --request GET \
--url https://us-red-property-data.p.rapidapi.com/api/v1/search/sold \
--header 'x-rapidapi-key: <api-key>'import requests
url = "https://us-red-property-data.p.rapidapi.com/api/v1/search/sold"
headers = {"x-rapidapi-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-rapidapi-key': '<api-key>'}};
fetch('https://us-red-property-data.p.rapidapi.com/api/v1/search/sold', 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://us-red-property-data.p.rapidapi.com/api/v1/search/sold",
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-rapidapi-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://us-red-property-data.p.rapidapi.com/api/v1/search/sold"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-rapidapi-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://us-red-property-data.p.rapidapi.com/api/v1/search/sold")
.header("x-rapidapi-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://us-red-property-data.p.rapidapi.com/api/v1/search/sold")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-rapidapi-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"cost": 1,
"total": 792,
"has_more": true,
"data": [
{
"property_id": "5859767121",
"list_price": 799000,
"rmn_listing_attribution": false,
"search_promotions": null,
"primary_photo": {
"href": "https://ap.rdcpix.com/7699cb45771db9fe7e88328bb46e77bfl-m416623092s.jpg"
},
"listing_id": "2988775604",
"matterport": false,
"virtual_tours": null,
"status": "sold",
"products": {
"products": [
"core.agent",
"co_broke"
],
"brand_name": "essentials"
},
"source": {
"id": "PHPA",
"name": "BrightMLS",
"type": "mls",
"spec_id": null,
"plan_id": null,
"listing_id": "DCDC2232532"
},
"lead_attributes": {
"show_contact_an_agent": true,
"market_type": "choice",
"lead_type": "co_broke",
"is_veterans_united_eligible": true
},
"community": null,
"permalink": "1027-6th-St-NE_Washington_DC_20002_M58597-67121",
"price_reduced_amount": 26000,
"description": {
"name": null,
"beds": 4,
"baths_consolidated": "2",
"sqft": 1470,
"lot_sqft": 871,
"baths_max": null,
"baths_min": null,
"beds_min": null,
"beds_max": null,
"sqft_min": null,
"sqft_max": null,
"type": "townhomes",
"sub_type": "townhomes",
"sold_price": 765000,
"sold_date": "2026-02-11",
"year_built": 1900,
"garage": null
},
"location": {
"street_view_url": "https://maps.googleapis.com/maps/api/streetview?channel=rdc-streetview&client=gme-movesalesinc&location=1027%206th%20St%20NE%2C%20Washington%2C%20DC%2020002&size=640x480&source=outdoor&signature=eAmDxcisIubVsIOX2qO_0OOSdOE=",
"address": {
"line": "1027 6th St NE",
"postal_code": "20002",
"state": "District of Columbia",
"state_code": "DC",
"city": "Washington",
"coordinate": {
"lat": 38.903472,
"lon": -76.99819
}
},
"county": {
"name": "District of Columbia",
"fips_code": null
}
},
"open_houses": null,
"branding": [
{
"type": "Office",
"name": "COMPASS",
"photo": null
}
],
"flags": {
"is_coming_soon": null,
"is_new_listing": false,
"is_price_reduced": false,
"is_foreclosure": null,
"is_new_construction": true,
"is_pending": null,
"is_contingent": null,
"is_auction": null,
"is_fractionally_owned": null,
"is_non_deeded": null
},
"list_date": "2025-11-20T20:22:21.000000Z",
"photos": [
{
"href": "https://ap.rdcpix.com/7699cb45771db9fe7e88328bb46e77bfl-m416623092s.jpg"
}
],
"advertisers": [
{
"type": "seller",
"fulfillment_id": "3498479",
"name": "Tianni Craig",
"builder": null,
"email": "[email protected]",
"office": {
"name": "COMPASS"
},
"phones": [
{
"number": "2026706570"
}
]
}
]
}
]
}{
"message": "Bad request"
}{
"message": "Invalid API key. Go to https://docs.rapidapi.com/docs/keys for more info."
}{
"message": "You are not subscribed to this API."
}{
"success": false,
"message": "Request failed with status 500: Internal Server Error",
"status_code": 500,
"cost": 0,
"explain": "Oops, it looks like there was an issue processing your request. Don't worry, you won't be charged for this request"
}Search Sold Properties
Search Sold Properties
curl --request GET \
--url https://us-red-property-data.p.rapidapi.com/api/v1/search/sold \
--header 'x-rapidapi-key: <api-key>'import requests
url = "https://us-red-property-data.p.rapidapi.com/api/v1/search/sold"
headers = {"x-rapidapi-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-rapidapi-key': '<api-key>'}};
fetch('https://us-red-property-data.p.rapidapi.com/api/v1/search/sold', 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://us-red-property-data.p.rapidapi.com/api/v1/search/sold",
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-rapidapi-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://us-red-property-data.p.rapidapi.com/api/v1/search/sold"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-rapidapi-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://us-red-property-data.p.rapidapi.com/api/v1/search/sold")
.header("x-rapidapi-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://us-red-property-data.p.rapidapi.com/api/v1/search/sold")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-rapidapi-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"cost": 1,
"total": 792,
"has_more": true,
"data": [
{
"property_id": "5859767121",
"list_price": 799000,
"rmn_listing_attribution": false,
"search_promotions": null,
"primary_photo": {
"href": "https://ap.rdcpix.com/7699cb45771db9fe7e88328bb46e77bfl-m416623092s.jpg"
},
"listing_id": "2988775604",
"matterport": false,
"virtual_tours": null,
"status": "sold",
"products": {
"products": [
"core.agent",
"co_broke"
],
"brand_name": "essentials"
},
"source": {
"id": "PHPA",
"name": "BrightMLS",
"type": "mls",
"spec_id": null,
"plan_id": null,
"listing_id": "DCDC2232532"
},
"lead_attributes": {
"show_contact_an_agent": true,
"market_type": "choice",
"lead_type": "co_broke",
"is_veterans_united_eligible": true
},
"community": null,
"permalink": "1027-6th-St-NE_Washington_DC_20002_M58597-67121",
"price_reduced_amount": 26000,
"description": {
"name": null,
"beds": 4,
"baths_consolidated": "2",
"sqft": 1470,
"lot_sqft": 871,
"baths_max": null,
"baths_min": null,
"beds_min": null,
"beds_max": null,
"sqft_min": null,
"sqft_max": null,
"type": "townhomes",
"sub_type": "townhomes",
"sold_price": 765000,
"sold_date": "2026-02-11",
"year_built": 1900,
"garage": null
},
"location": {
"street_view_url": "https://maps.googleapis.com/maps/api/streetview?channel=rdc-streetview&client=gme-movesalesinc&location=1027%206th%20St%20NE%2C%20Washington%2C%20DC%2020002&size=640x480&source=outdoor&signature=eAmDxcisIubVsIOX2qO_0OOSdOE=",
"address": {
"line": "1027 6th St NE",
"postal_code": "20002",
"state": "District of Columbia",
"state_code": "DC",
"city": "Washington",
"coordinate": {
"lat": 38.903472,
"lon": -76.99819
}
},
"county": {
"name": "District of Columbia",
"fips_code": null
}
},
"open_houses": null,
"branding": [
{
"type": "Office",
"name": "COMPASS",
"photo": null
}
],
"flags": {
"is_coming_soon": null,
"is_new_listing": false,
"is_price_reduced": false,
"is_foreclosure": null,
"is_new_construction": true,
"is_pending": null,
"is_contingent": null,
"is_auction": null,
"is_fractionally_owned": null,
"is_non_deeded": null
},
"list_date": "2025-11-20T20:22:21.000000Z",
"photos": [
{
"href": "https://ap.rdcpix.com/7699cb45771db9fe7e88328bb46e77bfl-m416623092s.jpg"
}
],
"advertisers": [
{
"type": "seller",
"fulfillment_id": "3498479",
"name": "Tianni Craig",
"builder": null,
"email": "[email protected]",
"office": {
"name": "COMPASS"
},
"phones": [
{
"number": "2026706570"
}
]
}
]
}
]
}{
"message": "Bad request"
}{
"message": "Invalid API key. Go to https://docs.rapidapi.com/docs/keys for more info."
}{
"message": "You are not subscribed to this API."
}{
"success": false,
"message": "Request failed with status 500: Internal Server Error",
"status_code": 500,
"cost": 0,
"explain": "Oops, it looks like there was an issue processing your request. Don't worry, you won't be charged for this request"
}Authorizations
Rapid API Key
Query Parameters
Location
1"20002"
Page number for pagination
1
Sort results by the specified criteria
sold_date: Sold datelowest_price: Lowest pricehighest_price: Highest pricelargest_sqft: Largest sqftlot_size: Lot sizephoto_count: Photo count
sold_date, lowest_price, highest_price, largest_sqft, lot_size, photo_count "sold_date"
Sold within days
30
list_price_range filter in format min,max
Example 50000,1000000 means price from $50,000 to $1,000,000
"50000,1000000"
Price reduced
true
Builder promotions
true
monthly_payment_range filter in format min,max
Example 50000,1000000 means price from $50,000 to $1,000,000
"50000,1000000"
Down payment
1000
Filter by minimum number of bedrooms. The value represents the lower bound. For example, if 1 is provided, the query will return properties with 1 or more bedrooms (bedrooms >= 1)
1
Filter by minimum number of bathrooms. The value represents the lower bound. For example, if 1 is provided, the query will return properties with 1 or more bathrooms (bathrooms >= 1)
1
Filter listings by home type
You can use one or multiple values separated by commas ,
house: Housecondo: Condotownhome: Townhomemulti_family: Multi Familymobile: Mobilefarm: Farmland: Land
"house,condo"
square_feet_range filter in format min,max
Example 500,2000 square feet from 500 to 2000
"500,2000"
lot_size_range filter in format min,max
Example: 1000,2000 lot size from 1000 sqft to 2000 sqft
"1000,2000"
year_built_range filter in format min,max
Example: 2015,2020 year built from 2015 to 2020
"2015,2020"
Max HOA Fees per month
500
Garage
1
Single-story only
true
Filter listings by home features
You can use one or multiple values separated by commas ,
"Pool,Lake view"
Filter listings by interior
You can use one or multiple values separated by commas ,
disability_features: Accessibilitybasement: Basementcentral_air: Central Aircentral_heat: Central Heatden_or_office: Den/officedining_room: Dining roomelevator: Elevatorenergy_efficient: Energy efficientfamily_room: Family roomfireplace: Fireplaceforced_air: Forced airgame_room: Game roomhardwood_floors: Hardwood floorswasher_dryer: In-home laundry
"disability_features,basement"
Filter listings by exterior
You can use one or multiple values separated by commas ,
carport: Carportcorner_lot: Corner lotcul_de_sac: Cul-de-sacgolf_course_lot_or_frontage: Golf course lothorse_facilities: Horse facilityswimming_pool: Poolrv_or_boat_parking: RV / boat parkingspa_or_hot_tub: Spa / hot tub
"carport,corner_lot"
Filter listings by views
You can use one or multiple values separated by commas ,
city_view: City viewgolf_course_view: Golf course viewhill_or_mountain_view: Hill / mtn viewlake_view: Lake viewocean_view: Ocean viewriver_view: River viewwaterfront: Waterfront
"city_view,golf_course_view"
Filter listings by community
You can use one or multiple values separated by commas ,
senior_community: 55+ communitycommunity_boat_facilities: Boat facilitycommunity_clubhouse: Clubhousecommunity_golf: Golf coursecommunity_horse_facilities: Horse facilitycommunity_park: Parkcommunity_swimming_pool: Poolrecreation_facility: Recreation facilitycommunity_security_features: Security featurecommunity_spa_or_hot_tub: Spa / hot tubtennis_court: Tennis court
"senior_community,community_boat_facilities"