Tropical Listings MLS — IDX Feed Documentation
Live Caribbean & Latin America real estate data for your website or app. Apply, get approved, and start syncing listings today.
Quick Start
1) Apply for IDX access 2) Get your API key on approval 3) Call the feed — that's it.
https://tropicallistingsmls.com/functions/idxFeed?api_key=YOUR_API_KEY&country=DO&status=active&limit=50
Approved partner? Open your personalized setup guide with your API key pre-filled: /IDXSetup?client_id=YOUR_CLIENT_ID
Pass your API key as a query parameter on every request. Keys are issued per partner after approval and are visible in the IDX Partner Portal.
https://tropicallistingsmls.com/functions/idxFeed?api_key=YOUR_API_KEY
Note: Keep your API key confidential — do not commit it to version control or expose it in public client-side code; proxy requests through your server instead.
Every listing carries full image data in three formats, so you can consume whichever fits your platform:
PhotosPlain array of direct image URLs, in display order — the simplest way to render a gallery.PrimaryPhotoURLThe hero image link — ready for listing cards, map pins, and thumbnails.MediaRESO-style objects (MediaKey, MediaURL, MediaObjectURL, Order, MimeType) for standard IDX platforms.PhotoCountNumber of photos — useful for badges ("12 Photos") before loading the gallery.All image links are direct, hot-linkable URLs (no auth needed to load the images themselves). VirtualTourURL, VideoURL and FloorPlanURL are included when the listing has them.
Tropical Listings MLS produces a room-by-room cinematic walk-through for every listing, so your site can offer an immersive tour even when the listing member never supplied one. Each tour is 90 seconds or less, is built only from photos that cleared our photo compliance review, and becomes available once the listing has been live for 48 hours.
VirtualTourURLAbsolute https link — either our generated walk-through or a member-supplied tour that passed verification. Empty when no tour exists yet.Tour rulesTours are branding-free by policy: no logo, watermark, phone number, email or agent name inside the walk-through. Member tours with contact information only in the closing seconds are trimmed before publishing.{
"ListingId": "DR1234567",
"VirtualTourURL": "https://tropicallistingsmls.com/VirtualTour/vt_9f2c...",
"Media": [ { "MediaCategory": "Photo", "MediaURL": "https://.../01.jpg" } ]
}
# Display side-by-side with your gallery — no key needed to play the tour:
# <iframe src="${VirtualTourURL}" allow="autoplay; fullscreen"></iframe>The tour link is public and shareable so it can travel to portals and social channels; it carries listing facts only, never the listing member's contact details.
{
"feed": {
"name": "Tropical Listings MLS — IDX Feed",
"version": "1.0",
"feedType": "public",
"attribution": "Data provided by Tropical Listings MLS...",
"disclaimer": "IDX information is provided exclusively for
consumers' personal, non-commercial use..."
},
"pagination": {
"total": 1284, "limit": 50, "offset": 0,
"returned": 50, "has_more": true, "next_offset": 50
},
"listings": [
{
"ListingKey": "6a8...",
"ListingId": "DR1234567",
"StandardStatus": "active",
"ListPrice": 485000,
"Currency": "USD",
"PropertyType": "condo",
"PropertyClass": "condo_apartment",
"Country": "DO", "StateOrProvince": "La Altagracia",
"Municipality": "Higüey", "City": "Punta Cana",
"BedroomsTotal": 3, "BathroomsFull": 2,
"LivingArea": 1450,
"PrimaryPhotoURL": "https://.../hero.jpg",
"PhotoCount": 12,
"Photos": ["https://.../01.jpg", "https://.../02.jpg", "..."],
"Media": [
{ "MediaKey": "...-photo-0", "MediaURL": "https://.../01.jpg",
"MediaObjectURL": "https://.../01.jpg", "Order": 1,
"MediaCategory": "Photo", "MimeType": "image/jpeg" }
],
"VirtualTourURL": "https://...",
"VideoURL": "https://...",
"OpenHouses": [ { "date": "2026-10-04", ... } ]
}
]
}Listings use a RESO-inspired schema (ListingId, ListPrice, Media, StandardStatus, …) including tropical-specific fields like OceanView, Beachfront, DistanceToBeachKM and TitleStatus.
The standards layer on top of the IDX feed: an OData V4 service exposing listings as the RESO Property resource (Data Dictionary 2.0 StandardNames plus tropical extensions), with standard $filter / $orderby / $select / $count / $top / $skip, @odata.nextLink paging, delta links for incremental replication, bilingual (EN/ES) Localizations on every listing, and a developer sandbox that needs no credentials. One API key and one license agreement cover all markets.
# 1. Schema — OData $metadata (EDM XML, no key required) curl "https://tropicallistingsmls.com/functions/resoOdataFeed/$metadata" # 2. Developer sandbox — fictional sample listings, NO API key required curl "https://tropicallistingsmls.com/functions/resoOdataFeed/Property?mode=sandbox" # 3. Initial replication pull — everything, ascending by ModificationTimestamp curl "https://tropicallistingsmls.com/functions/resoOdataFeed/Property?api_key=YOUR_API_KEY&$top=500&$orderby=ModificationTimestamp%20asc" # 4. Incremental sync — only what changed since your last pull curl "https://tropicallistingsmls.com/functions/resoOdataFeed/Property?api_key=YOUR_API_KEY&$filter=ModificationTimestamp%20gt%20'2026-10-01T00:00:00Z'&$orderby=ModificationTimestamp%20asc" # Follow @odata.nextLink for the next page; the last page carries @odata.deltaLink # (the incremental query for your next sync). Bilingual content ships in # Localizations (en/es) on every listing.
Replication: pull the full set once with $orderby=ModificationTimestamp asc (following @odata.nextLink), then use the last page's @odata.deltaLink — or $filter=ModificationTimestamp gt '<last synced>' — to fetch only changes. Field names, types and lookups are all in $metadata, so standard OData client libraries work out of the box.
