Realtor.com property data API
Search listings by location, open property pages, or list the agents working an area. Each home or agent comes back as one record.
- Record types
property- Fields
- 57
- From
- $0.90 per 1,000 records
What you can request
Set mode in the request body to choose what comes back; without it the request runs as search. Each mode reads the inputs listed next to it.
| Mode | What comes back | Inputs | Billed as |
|---|---|---|---|
search | One record per listing in the results for each location or search URL. | locations searchUrls listingFilter | property |
property | The full detail page for each property URL. | propertyUrls | property-detail |
agents | One record per agent working each location. | locations | agent |
Every request also takes maxItems (records for the whole request) and maxItemsPerInput (records per search, URL or name).
Example request and record
The request below is the one this example record answers. The names, usernames, photos and contact details of people in it are fictional. Long values in the record are shortened.
curl
curl -X POST https://api.urakimon.com/records/realtor \
-H "x-api-key: $URAKIMON_API_KEY" \
-H "content-type: application/json" \
-d '{
"mode": "property",
"propertyUrls": [
"https://www.realtor.com/realestateandhomes-detail/4502-Turnstone-Dr_Austin_TX_78744_M87530-28979",
"https://www.realtor.com/realestateandhomes-detail/8107-Elijah-Craig-Way_Austin_TX_78744_M92987-77433",
"https://www.realtor.com/realestateandhomes-detail/7901-Gilwice-Ln_Austin_TX_78744_M74493-23665",
"https://www.realtor.com/realestateandhomes-detail/6804-Gabion-Dr_Austin_TX_78749_M80803-85535"
]
}'Python
import os
import requests
res = requests.post(
"https://api.urakimon.com/records/realtor",
headers={"x-api-key": os.environ["URAKIMON_API_KEY"]},
json={
"mode": "property",
"propertyUrls": [
"https://www.realtor.com/realestateandhomes-detail/4502-Turnstone-Dr_Austin_TX_78744_M87530-28979",
"https://www.realtor.com/realestateandhomes-detail/8107-Elijah-Craig-Way_Austin_TX_78744_M92987-77433",
"https://www.realtor.com/realestateandhomes-detail/7901-Gilwice-Ln_Austin_TX_78744_M74493-23665",
"https://www.realtor.com/realestateandhomes-detail/6804-Gabion-Dr_Austin_TX_78749_M80803-85535"
]
},
)
res.raise_for_status()
records = res.json()["records"]Node
const res = await fetch("https://api.urakimon.com/records/realtor", {
method: "POST",
headers: {
"x-api-key": process.env.URAKIMON_API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"mode": "property",
"propertyUrls": [
"https://www.realtor.com/realestateandhomes-detail/4502-Turnstone-Dr_Austin_TX_78744_M87530-28979",
"https://www.realtor.com/realestateandhomes-detail/8107-Elijah-Craig-Way_Austin_TX_78744_M92987-77433",
"https://www.realtor.com/realestateandhomes-detail/7901-Gilwice-Ln_Austin_TX_78744_M74493-23665",
"https://www.realtor.com/realestateandhomes-detail/6804-Gabion-Dr_Austin_TX_78749_M80803-85535"
]
}),
});
const { records } = await res.json();{ "source": "realtor", "propertyId": "8753028979", "listingId": "3000682990", "listingKey": "dedd486d8a2c347af1dd8b8103a6fbe4", "type": "property", "url": "https://www.realtor.com/realestateandhomes-detail/4502-Turnstone-Dr_Austin_TX_78744_M87530-28979", "permalink": "4502-Turnstone-Dr_Austin_TX_78744_M87530-28979", "providerUrl": "www.austinhomesearch.com/ACT9068200", "status": "for_sale", "isNewListing": true, "isUsdaEligible": false, "price": 230000, "lastSoldPrice": null, "lastSoldDate": "2021-04-06T00:00:00.000Z", "listDate": "2026-09-12T14:56:15.000Z", "updatedAt": "2026-09-13T09:01:11.000Z", "daysOnMarket": 8, "daysOnMls": 1, "lastPriceChangeAmount": null, "pricePerSqft": 150, "beds": 3, "baths": 2, "bathsTotal": 2, "bathsFull": 2, "bathsHalf": null, "livingArea": 1535, "lotSize": 7231, "yearBuilt": 1978, "yearRenovated": null, "homeType": "single_family", "homeSubType": [], "stories": 1, "garage": null, "descriptionText": "Tenant-occupied investment opportunity in an established Southeast Austin neighborhood. With 3 bedrooms and 2 full bathrooms, the home pr…", "address": { "line": "4502 Turnstone Dr", "city": "Austin", "state": "Texas", "stateCode": "TX", "postalCode": "78744", "unit": null, "country": "USA", "text": "4502 Turnstone Dr, Austin, TX, 78744" }, "coordinates": { "lat": 30.186846, "lng": -97.751139 }, "county": { "name": "Travis", "stateCode": "TX", "fips": "48453" }, "neighborhoods": [ "Dove Springs", "Franklin Park", "Southeast Austin" ], "hoaFee": 0, "photoCount": 29, "id": "8753028979", "event": "property-detail", "collectedAt": "2026-09-20T19:42:12.186Z"}Fields
Every record starts with the same envelope: source, type, event, id, url, collectedAt. What the envelope means. The tables below list the fields after it, read from real Realtor.com records. Where a field does not apply to an item it is null or an empty list, not left out. "Present on" names the billed events a field comes with when it is not on every record of that type.
property records
One property listing or listing card from realtor.com, from a search result or a property detail page. Billed as property or property-detail.
| Field | Type | What it holds | Present on |
|---|---|---|---|
propertyId | string | Realtor.com's numeric property id, the same value used as this record's id. | All |
listingId | null | string | The MLS listing id backing this property, or null. | All |
listingKey | string | The photo CDN key for this listing (the 32 character hex prefix in its rdcpix photo URLs), or null. | Only property-detail |
permalink | string | The realtor.com URL slug for the property, or null. | Only property-detail |
providerUrl | null | string | External MLS or office listing URL for the property, kept as given (not a realtor.com link), or null. | Only property-detail |
status | null | string | The listing status text, for example for_sale, or null. | All |
isNewListing | boolean | Whether realtor.com flags this as a new listing; only set on detail records, null otherwise. | Only property-detail |
isUsdaEligible | boolean | null | Whether the property is USDA loan eligible; only set on detail records, null otherwise. | Only property-detail |
price | integer | null | The listed price in USD as a number, or null; on a new construction range use priceMin and priceMax instead. | All |
lastSoldPrice | null | The property's last recorded sale price in USD, or null. | All |
lastSoldDate | null | string | ISO 8601 date the property last sold, or null. | All |
listDate | null | string | ISO 8601 timestamp the property was listed, or null. | All |
updatedAt | string | ISO 8601 timestamp of the MLS feed's last update for this listing; only set on detail records. | Only property-detail |
daysOnMarket | integer | null | Whole days elapsed since listDate, derived at collection time; null when listDate is absent. | All |
daysOnMls | integer | null | The MLS feed's own days on market counter, frozen at its last update; only set on detail records. | Only property-detail |
lastPriceChangeAmount | integer | null | The most recent price change amount in USD, or null; only set on detail records. | Only property-detail |
pricePerSqft | integer | null | Price per square foot in USD, or null. | All |
beds | integer | null | Number of bedrooms, or null. | All |
baths | integer | null | number | Number of bathrooms, or null. | All |
bathsTotal | integer | null | Full plus half bathrooms as a single room count; only set on detail records, null otherwise. | Only property-detail |
bathsFull | integer | null | Number of full bathrooms, or null. | All |
bathsHalf | integer | null | Number of half bathrooms, or null. | All |
livingArea | integer | null | Living area in square feet, or null (for example on land listings). | All |
lotSize | integer | null | Lot size in square feet; only set on detail records, null otherwise. | Only property-detail |
yearBuilt | integer | null | Four digit year the property was built, or null. | All |
yearRenovated | null | Four digit year the property was last renovated; only set on detail records, null otherwise. | Only property-detail |
homeType | null | string | The property type, for example single_family or land. | All |
homeSubType | array | List of property subtype strings; only set on detail records, empty otherwise. | Only property-detail |
stories | integer | null | Number of stories, or null. | All |
garage | integer | null | Number of garage spaces; only set on detail records, null otherwise. | Only property-detail |
descriptionText | string | The listing's marketing description text; only set on detail records, null otherwise. | Only property-detail |
address | object | The property address; search records carry line, city, stateCode, postalCode and text; detail records add state, unit and country. | All |
coordinates | null | object | The property location as keys lat and lng; on search records this may be null instead of an object when no coordinate was reported. | All |
county | null | object | The property's county; a plain name string on search records, or an object with keys name, stateCode and fips on detail records. | All |
neighborhoods | array | List of neighborhood name strings; empty when none are reported. | All |
hoaFee | integer | null | Monthly HOA fee in USD; only set on detail records, null otherwise. | Only property-detail |
photoCount | integer | Number of photos for the listing, or null. | All |
priceMin | integer | Minimum price in USD of a new construction price range; only set on search records, null otherwise. | Only property |
priceMax | integer | Maximum price in USD of a new construction price range; only set on search records, null otherwise. | Only property |
lotSqft | null | Lot size in square feet; only set on search records, null otherwise. | Only property |
priceReducedAmount | null | The amount the price has been reduced by, in USD, or null. | Only property |
isNewConstruction | boolean | Whether the listing is a new construction or builder listing; only set on search records, null otherwise. | Only property |
builderName | string | The builder's name for a new construction listing, or null; only set on search records. | Only property |
primaryPhoto | string | URL of the listing's primary photo, or null. | All |
photos | array | List of photo URLs for the listing; empty when none are available. | All |
agents | array | Every advertiser on the listing: name, email, phone, href, profileUrl, fulfillmentId, type, broker, office and more; detail records only. | Only property-detail |
agent | object | The property's primary agent (the first entry of agents), or null; only set on detail records. | Only property-detail |
priceHistory | array | List of past price events, each with keys date, event, price, priceChange, pricePerSqft, sourceListingId, sourceName and listingStatus. | Only property-detail |
taxHistory | array | List of past tax assessments, each with year, tax, assessment and market (assessment and market hold building, land and total). | Only property-detail |
schools | array | List of nearby schools, each with name, rating, grades, level, distanceMiles, studentCount, studentTeacherRatio, fundingType and assigned. | Only property-detail |
features | array | List of feature groups, each with keys category, parentCategory and text (a list of feature strings); only set on detail records. | Only property-detail |
tags | array | List of realtor.com tag id strings for the listing; only set on detail records, empty otherwise. | Only property-detail |
mlsSource | object | The MLS feed's own name, listingId and type for this listing, or null; only set on detail records. | Only property-detail |
estimates | object | Realtor.com's automated value estimates: keys current, forecast and historical, each a list of estimate points; detail records only. | Only property-detail |
flood | null | object | Flood risk summary with keys score, severity and trend, or null; only set on detail records. | Only property-detail |
openHouses | array | List of upcoming open house events, each with keys start, end and description; only set on detail records. | Only property-detail |
moveInDate | null | ISO 8601 date the property becomes available to move into, or null; only set on detail records. | Only property-detail |
Realtor.com data pricing
You pay once for each record you receive, at the price of the event it carries. A request that returns nothing costs nothing.
| Event | Per 1,000 records | Per record |
|---|---|---|
agent | $0.90 | $0.00090 |
property | $1.00 | $0.00100 |
property-detail | $1.40 | $0.00140 |
Freshness and limits
- Records are collected when you send the request. Each one carries
collectedAt, the UTC time it was read. POST /records/realtorreturns up to 500 records in one response. Ask for more and it answers413; send the same body toPOST /jobs/realtorinstead.- A request without
maxItemsreturns up to 100 records. - Your key's rate limit and quotas apply to every source.