For IDX and real-estate website platforms
Map every listing, even the ones without an address
Privacy area maps for listings that can't show an address, map images and geocodes you're allowed to keep, and one contract for all your client sites. Your agents never manage a Google key again.


- Results you can store indefinitely
- One key per client site
- No overage bills, ever
- 99.5% uptime target with credits
Three map problems every IDX platform has
Listings without an address
When a seller withholds the address, InternetAddressDisplayYN arrives as false and you can't drop a pin. The usual choices are no map, or no listing.
Agents and their Google keys
Many IDX products ask each agent to create and pay for a Google Maps key. When a key lapses or a card fails, that agent's map breaks and your support team hears about it.
Coordinates you can't keep
Google's terms allow caching geocoded coordinates for up to 30 days, and not on a non-Google map. Every listing gets looked up again and again.
Privacy area mode, made for the display flags
Send the listing's real coordinates from your server and get back an image of its neighbourhood. The circle always contains the home, but it's drawn around a grid point, so every address in the same grid cell gets the identical image. No pin, and nothing in the image points to the house.
RESO's Data Dictionary has also approved a GeocodeDisplayYN field, for whether a listing's coordinates may be displayed. If your MLS sends it, treat false the same way.
On the search map, keep these listings off the pin layer and let the listing card carry the area image.

# On your server, when a listing comes in from the feed
lat, lng = listing["Latitude"], listing["Longitude"]
if listing["InternetAddressDisplayYN"] is False: # and your MLS lets the listing show without it
snap = 0.01 # about 1 km; use 0.02 in rural areas
lat = round(lat / snap) * snap # the same grid the API snaps to, so the
lng = round(lng / snap) * snap # request never carries the real point
q = f"area={lat:.6f},{lng:.6f}&radius=800&snap={snap}"
else:
q = f"markers={lat},{lng}¢er={lat},{lng}&zoom=15"
image = fetch(f"https://api.mapiron.com/v1/static?{q}&size=640x300&scale=2&key={KEY}")
store(listing["ListingKey"], image) # serve your copy on the listing page, alert emails and flyers
Your MLS decides whether the listing shows at all. Some MLSs require leaving out a listing whose address is withheld; others allow it without the address. RESO defines InternetAddressDisplayYN as whether the seller has allowed the listing address to be displayed on internet sites, and in July 2026 its Data Dictionary workgroup discussed clarifying that false means suppressing the street address or coordinates. That clarification was a discussion, not a ratified change. Privacy area mode is for listings your rules let you show.
Store once, serve forever
On a platform contract, and on every paid plan, you may keep each image and geocode indefinitely, even after you cancel. Fetch a listing's image once when it arrives in the feed, then serve your copy on the listing page, in saved-search emails and on printed flyers. You pay per listing, not per page view, so 40,000 new listings a month cost the same whether your sites get one million views or fifty million. (The OpenStreetMap licence (opens in a new tab) still rules out copying the map data in bulk.)
In a platform contract
- One annual contract, invoiced, with a flat price by number of client sites
- A key for each client site, locked to that site's domain (up to 5,000 keys)
- A keys API to create, rotate and revoke site keys from your own systems, with usage and an optional cap per site, a CSV export and usage webhooks
- Raster and vector tiles for Leaflet, MapLibre and OpenLayers
- Listing images with a pin or a privacy area, for cards, emails and flyers
- Address, city, ZIP and place search, plus reverse geocoding
- Parcel lines: US property boundaries at a point and drawn on maps
- The public school district for every US listing, and attendance zones by grade for 68,382 of 82,889 regular public schools (82.5%), each with its school year (coverage by state; also sold as a data licence)
- Caps with headroom, emails at 80% and 100%, raised the same business day
- 99.5% monthly uptime target with service credits, and a public status page
- No MapIron branding on your clients' maps
- Integration help from the engineer who built the API
What we don't do yet
- Aerial or satellite imagery
- Rooftop accuracy for every US street address (see the questions below)
- SOC 2. We'll answer your security questionnaire in writing.
If one of these blocks you, say so in the form. It moves up the list.
Start a 60-day platform pilot
Free for 60 days on one MLS market or a group of your client sites.
- A 20-minute technical call about your feed, your map stack and your MLS rules.
- Keys for your pilot sites the same day, with help wiring them in.
- A price for the full rollout, in writing, before day 60. If it doesn't fit, you've lost nothing.
Prefer email? sales@mapiron.com
Thanks, . We've got it and will reply from sales@mapiron.com within one business day.
Meanwhile, the API docs and the privacy maps page show the details.
Questions from IDX teams
Does privacy area mode satisfy my MLS's rules?
That depends on your MLS. Some require you to leave a listing out entirely when the seller withholds the address; others allow the listing without its address. Privacy area mode is a way to show location once your rules allow the listing. It doesn't change what your MLS allows, so check with its compliance staff first. We're glad to join that call.
Can someone work out the address from the circle?
No. The circle is drawn around a grid point, not around the home, and every address in the same grid cell gets the identical image. Comparing several images of one listing, or of neighbouring listings, gives nothing away. If you round the coordinates on your server as in the example above, the request never contains the real point either.
What happens if a platform reaches its cap?
Platform contracts are sized with plenty of headroom. We email you at 80% and 100% of any cap and raise it the same business day you ask. We never bill overage: a cap is a backstop, not a meter.
Can we remove the attribution?
There's no MapIron branding on your clients' maps or images. The “© OpenStreetMap contributors” credit has to stay, because the map data's licence requires it.
How much work is switching?
Mostly changing URLs. Leaflet and OpenLayers take a new tile URL, MapLibre GL JS takes a new style URL, and listing images are one URL per listing. Our Leaflet, MapLibre and OpenLayers quickstarts show the code, and we help during the pilot.
What does a platform contract cost?
A flat annual price based on how many client sites you run, with no per-view billing. We agree it in writing before the pilot ends. A single brokerage site can start on the self-serve plans, from $19 a month.
Is OpenStreetMap good enough for US real estate?
For streets, buildings, parks, schools and places, yes. House-number coverage in the US is still incomplete, so a typed street address won't always resolve to the exact home. IDX feeds usually carry coordinates already, so that mostly affects the search box, where cities, ZIP codes, neighbourhoods and streets work well.
Where does it run, and how do you handle security reviews?
In US data centres (DigitalOcean, New York) behind Cloudflare. Accounts support passkeys and authenticator apps. We don't have SOC 2 yet; we'll answer your security questionnaire in writing.
Sources
Read on Nov 5, 2026. MLS rules vary by market; follow the links and your own MLS's rules.
- RESO Data Dictionary: InternetAddressDisplayYN (opens in a new tab)
- RESO product updates (Data Dictionary workgroup notes) (opens in a new tab)
- Google Maps Platform service specific terms (opens in a new tab)
- OSMF Geocoding Guideline (opens in a new tab)
More: privacy-safe listing images · how privacy area maps work · a Google Maps API alternative
RESO is a trademark of the Real Estate Standards Organization; Google Maps is a trademark of Google LLC. MapIron (Wells Software Consulting LLC) isn't affiliated with or endorsed by either.