Get Property Snapshot data with one API
The Property Enrichment API normalizes and resolves real-estate records as clean JSON.
4 active endpoints, on 0, 2 and 5 credit tiers.
- POST/enrich-property/v1/snapshot
- POST/enrich-property/v1/resolve
- POST/enrich-property/v1/batch
- POST/enrich-property/v1/coverage
What Property Snapshot endpoints does ReefAPI ship?
4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Property Snapshot API
3 of 4 endpoints, ready to run
address OR listing_url → one normalized property snapshot.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the Property Snapshot API works
Property Snapshot is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 185 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
What each country can return, and what it cannot
This engine covers three countries and each is backed by different sources, so the same request shape returns a different amount of data depending on where the property sits. Valuation is the field that varies most: it is populated in the US and structurally absent in the UK and Japan. Anything outside these three is rejected outright rather than returned empty.
| Country | Accepted input | valuation | History |
|---|---|---|---|
| US | Address search, or a zillow.com, redfin.com or realtor.com listing URL | Populated. A measured snapshot returned valuation.source 'zillow:zestimate' with value 375000 USD | sold_history entries plus a rent estimate, 2212 USD on that same record |
| GB | Address search, or a rightmove.co.uk listing URL | Always null. The object is still present and carries a note saying there is no UK equivalent of a Zestimate | Land Registry sold prices are the only price evidence |
| JP | A suumo.jp listing URL works anywhere, address search only in tokyo, kanagawa, osaka, kyoto | Always null | Not available |
| Anything else | Rejected before any lookup runs | n/a | n/a |
A French address returns ok:false with error code MARKET_UNAVAILABLE and detail.unsupported_country 'FR'. A Japanese address outside the four supported prefectures returns MARKET_UNAVAILABLE with detail.unsupported_region true. Neither is a silent empty result. The coverage action returns this whole map with no network calls, so you can check support before spending a request.
What people build with Property Snapshot
The jobs this data is most often used for.
endpoints
credits per call
Proptech tools call resolve to turn a messy address into a canonical property.
CRM enrichment attaches listing data to a real-estate lead.
Data pipelines use batch and coverage to normalize a property feed at scale.
What Property Snapshot data costs
The cheapest call here is 0 credits, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 185 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/enrich-property/v1/snapshot \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"listing_url":"https://www.zillow.com/homedetails/x/117892026_zpid/"}'import requests
r = requests.post(
"https://api.reefapi.com/enrich-property/v1/snapshot",
headers={"x-api-key": REEF_KEY},
json={
"listing_url": "https://www.zillow.com/homedetails/x/117892026_zpid/"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Property Snapshot.
Get a free key →I got ok:true but status 'unknown' and an empty facts object. What happened?▾
That is the no-match response. The engine scores every candidate listing against your address and only accepts one above 0.55. A measured lookup on '1444 Fairmont St NW #4, Washington, DC 20009' considered 41 candidates, scored the best at 0.0 with reasons street-number-mismatch, unit-mismatch and postcode-mismatch, and returned status 'unknown', price.list null, sold_history empty and facts {}. It also sets match.low_confidence true and adds a note telling you to call resolve. Read match.confidence before you read any other field.
When should I call resolve instead of snapshot?▾
Call resolve when the address is ambiguous, when the property may be an apartment unit, or after a snapshot came back low confidence. It returns up to 25 ranked candidates, each with source_id, listing_url, match_confidence, match_reasons, list_price, beds, baths, status and coordinates, so you can pick the exact one. A measured resolve on '137 Mellison Road, Tooting, London, SW17' returned 10 candidates whose best score was 0.5 with reasons street-name-partial and outcode, which is under the 0.55 bar snapshot enforces, so snapshot would have refused that same address.
How much better is a listing URL than an address?▾
Considerably. URL mode reads the host and the id straight out of the link, so match.mode comes back 'url' with confidence 0.99 and reasons ['url-host+id'], and candidates_considered is 0 because no search ran. Address mode has to run an area search and score the results, which is where mismatches appear. If your users can paste a link, take the link.
I have a Zillow link. Should I use enrich-url instead?▾
No, that engine will not route it for you. A measured classify on a zillow.com/homedetails URL returned entity_type 'product' from JSON-LD, platform null and a recommended card pointing at the generic web-extract scraper, because real estate hosts are not in that engine's platform table. The same URL through snapshot here returned match confidence 0.99, status sold, beds 1, baths 1, area 600 sqft, year_built 1907 and 15 photos. Property links belong on this engine.
Why is the list price the same number as the valuation on a sold property?▾
On a sold record both fields describe the same transaction. A measured snapshot returned status 'sold' with price.list 375000 USD, valuation 375000 from zillow:zestimate, a rent estimate of 2212, and price_per_area 625.0 per sqft with source 'derived', which is the price divided by the 600 sqft area. Also note that a sold_history entry can carry a null date while its price is present, so do not assume every history row is dateable.
Is every fact in the response equally reliable?▾
No, and the shape tells you. Each entry under facts is an object with value, source and confidence rather than a bare value, and the confidences differ inside one record: a measured UK snapshot returned beds at 0.9, baths at 0.85, property_type at 0.8 and tenure at 0.8. Country-specific fields only appear where they exist, which is why tenure shows up on a UK record and not on a US one.
How many properties can one batch call take?▾
Ten. Eleven items returns ok:false with INVALID_PARAM and the message 'max 10 items per batch (got 11)'. Batch runs each item in standard mode and reports per-item ok or error, so one unmatched address does not fail the whole call.
What is the Property Snapshot API?▾
Property Snapshot API is a ReefAPI endpoint group for property snapshot It returns live JSON through POST requests under /enrich-property/v1.
Is the Property Snapshot API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Property Snapshot calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Property Snapshot login or account?▾
No login to Property Snapshot is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Property Snapshot data?▾
The page example is captured from a live snapshot call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Property Snapshot API use?▾
Property Snapshot actions currently cost 1-5 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Property Snapshot from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call enrich-property actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Property Snapshot API a Property Snapshot scraper?▾
It is the managed alternative to a DIY Property Snapshot scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same property snapshot back as clean JSON.
11 Real Estate APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Property Snapshot, you are one call away from the rest of the category — no second contract, no second integration.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 184 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts.