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.

ModeWhat comes backInputsBilled as
searchOne record per listing in the results for each location or search URL.locations searchUrls listingFilterproperty
propertyThe full detail page for each property URL.propertyUrlsproperty-detail
agentsOne record per agent working each location.locationsagent

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();
Example Realtor.com recordDownload
{  "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.

57 fields on property records, besides the envelope
FieldTypeWhat it holdsPresent on
propertyIdstringRealtor.com's numeric property id, the same value used as this record's id.All
listingIdnull | stringThe MLS listing id backing this property, or null.All
listingKeystringThe photo CDN key for this listing (the 32 character hex prefix in its rdcpix photo URLs), or null.Only property-detail
permalinkstringThe realtor.com URL slug for the property, or null.Only property-detail
providerUrlnull | stringExternal MLS or office listing URL for the property, kept as given (not a realtor.com link), or null.Only property-detail
statusnull | stringThe listing status text, for example for_sale, or null.All
isNewListingbooleanWhether realtor.com flags this as a new listing; only set on detail records, null otherwise.Only property-detail
isUsdaEligibleboolean | nullWhether the property is USDA loan eligible; only set on detail records, null otherwise.Only property-detail
priceinteger | nullThe listed price in USD as a number, or null; on a new construction range use priceMin and priceMax instead.All
lastSoldPricenullThe property's last recorded sale price in USD, or null.All
lastSoldDatenull | stringISO 8601 date the property last sold, or null.All
listDatenull | stringISO 8601 timestamp the property was listed, or null.All
updatedAtstringISO 8601 timestamp of the MLS feed's last update for this listing; only set on detail records.Only property-detail
daysOnMarketinteger | nullWhole days elapsed since listDate, derived at collection time; null when listDate is absent.All
daysOnMlsinteger | nullThe MLS feed's own days on market counter, frozen at its last update; only set on detail records.Only property-detail
lastPriceChangeAmountinteger | nullThe most recent price change amount in USD, or null; only set on detail records.Only property-detail
pricePerSqftinteger | nullPrice per square foot in USD, or null.All
bedsinteger | nullNumber of bedrooms, or null.All
bathsinteger | null | numberNumber of bathrooms, or null.All
bathsTotalinteger | nullFull plus half bathrooms as a single room count; only set on detail records, null otherwise.Only property-detail
bathsFullinteger | nullNumber of full bathrooms, or null.All
bathsHalfinteger | nullNumber of half bathrooms, or null.All
livingAreainteger | nullLiving area in square feet, or null (for example on land listings).All
lotSizeinteger | nullLot size in square feet; only set on detail records, null otherwise.Only property-detail
yearBuiltinteger | nullFour digit year the property was built, or null.All
yearRenovatednullFour digit year the property was last renovated; only set on detail records, null otherwise.Only property-detail
homeTypenull | stringThe property type, for example single_family or land.All
homeSubTypearrayList of property subtype strings; only set on detail records, empty otherwise.Only property-detail
storiesinteger | nullNumber of stories, or null.All
garageinteger | nullNumber of garage spaces; only set on detail records, null otherwise.Only property-detail
descriptionTextstringThe listing's marketing description text; only set on detail records, null otherwise.Only property-detail
addressobjectThe property address; search records carry line, city, stateCode, postalCode and text; detail records add state, unit and country.All
coordinatesnull | objectThe property location as keys lat and lng; on search records this may be null instead of an object when no coordinate was reported.All
countynull | objectThe property's county; a plain name string on search records, or an object with keys name, stateCode and fips on detail records.All
neighborhoodsarrayList of neighborhood name strings; empty when none are reported.All
hoaFeeinteger | nullMonthly HOA fee in USD; only set on detail records, null otherwise.Only property-detail
photoCountintegerNumber of photos for the listing, or null.All
priceMinintegerMinimum price in USD of a new construction price range; only set on search records, null otherwise.Only property
priceMaxintegerMaximum price in USD of a new construction price range; only set on search records, null otherwise.Only property
lotSqftnullLot size in square feet; only set on search records, null otherwise.Only property
priceReducedAmountnullThe amount the price has been reduced by, in USD, or null.Only property
isNewConstructionbooleanWhether the listing is a new construction or builder listing; only set on search records, null otherwise.Only property
builderNamestringThe builder's name for a new construction listing, or null; only set on search records.Only property
primaryPhotostringURL of the listing's primary photo, or null.All
photosarrayList of photo URLs for the listing; empty when none are available.All
agentsarrayEvery advertiser on the listing: name, email, phone, href, profileUrl, fulfillmentId, type, broker, office and more; detail records only.Only property-detail
agentobjectThe property's primary agent (the first entry of agents), or null; only set on detail records.Only property-detail
priceHistoryarrayList of past price events, each with keys date, event, price, priceChange, pricePerSqft, sourceListingId, sourceName and listingStatus.Only property-detail
taxHistoryarrayList of past tax assessments, each with year, tax, assessment and market (assessment and market hold building, land and total).Only property-detail
schoolsarrayList of nearby schools, each with name, rating, grades, level, distanceMiles, studentCount, studentTeacherRatio, fundingType and assigned.Only property-detail
featuresarrayList of feature groups, each with keys category, parentCategory and text (a list of feature strings); only set on detail records.Only property-detail
tagsarrayList of realtor.com tag id strings for the listing; only set on detail records, empty otherwise.Only property-detail
mlsSourceobjectThe MLS feed's own name, listingId and type for this listing, or null; only set on detail records.Only property-detail
estimatesobjectRealtor.com's automated value estimates: keys current, forecast and historical, each a list of estimate points; detail records only.Only property-detail
floodnull | objectFlood risk summary with keys score, severity and trend, or null; only set on detail records.Only property-detail
openHousesarrayList of upcoming open house events, each with keys start, end and description; only set on detail records.Only property-detail
moveInDatenullISO 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.

EventPer 1,000 recordsPer 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/realtor returns up to 500 records in one response. Ask for more and it answers 413; send the same body to POST /jobs/realtor instead.
  • A request without maxItems returns up to 100 records.
  • Your key's rate limit and quotas apply to every source.

Next steps