For agents
Top Villas Realty publishes homes for sale, community guides and market reports. Use the public search options to check current geographic coverage and supported property types.
Search without using the browser controls
- Read search options to discover cities, ZIP codes, property types and community IDs.
- Fetch a search URL with the filters below.
- Follow pagination links and fetch individual listings for current details. Cite their canonical browser URLs.
Every endpoint uses GET and needs no account or API key. JSON and Markdown always contain the anonymous public view, even when cookies are present. Member-only intelligence and report sections are available through the website after sign-in.
Each search page contains up to 24 listings, sorted newest first unless a sort is supplied. Searches return homes currently for sale. Sold properties remain accessible through their listing pages when publicly available.
Examples
Four or more bedrooms in Kissimmee, up to USD 750,000, cheapest first:
Search ZIP 34747: Browser or Markdown.
Search parameters
- bounds: Location; formats below. Omit to search all current coverage.
- minPrice, maxPrice: USD; inclusive. Omit a limit to leave it open.
- maxPriceExclusive: 1 makes maxPrice exclusive; requires maxPrice. Default 0.
- minBedrooms, maxBedrooms: Inclusive integer bedroom counts.
- minBathrooms, maxBathrooms: Inclusive integer bathroom counts.
- propertyType: Use an exact value returned by search options.
- sort: newest, price-asc, price-desc, bedrooms-asc, bedrooms-desc, bathrooms-asc, bathrooms-desc, price-updated. Default newest.
- newConstruction: 1 for new construction, 0 to exclude it; omit for either.
- specialConditions: any, or comma-separated values: foreclosures, short-sale, auction, probate-sale, government-owned. Omit for all listings.
- activity: listed-N or price-reduced-N, where N is 1–365 days.
- page: Positive integer, starting at 1.
Do not invent unsupported filters or silently substitute a wider location. Reject or clarify requirements that cannot be represented. Invalid or unsupported filters return HTTP 400. The legacy addedWithin=N parameter is also accepted as listed-N.
Locations
- address~city~postalCode: address~KISSIMMEE~ or address~~34747. City and ZIP may also be combined.
- area~ID: A community/area ID from search options; includes its descendants.
- areas~ID~ID: Union of multiple area IDs; includes their descendants.
- geo~north~east~south~west: Bounding box in decimal degrees, optionally followed by ~label. A box is approximate, not a precise place boundary.
Use exact city, ZIP and property-type values from search options, including city capitalization. URL-encode query values, especially spaces and property types. Preserve empty city or ZIP segments in address bounds. Latitude must be between -90 and 90; longitude between -180 and 180. North must exceed south, and east must exceed west.
JSON interfaces
- /api/public/search: appliedFilters, pagination, properties, links, retrievedAt and source attribution.
- /api/public/search/options: areas with IDs, parent IDs and browser search URLs; cities, ZIP codes, propertyTypes, sorts and parameter names.
- /api/public/listings/{propertyId}: property details and photos, canonical links, available source timestamps and source attribution. Use propertyId from search results.
Follow pagination.nextUrl and pagination.previousUrl for JSON pages. links.html and links.markdown lead to the equivalent browser and Markdown searches. Each listing supplies url, markdownUrl and jsonUrl. An empty first page is HTTP 200; a missing area, listing or later page is HTTP 404. An essential service outage returns HTTP 503 with Retry-After instead of an empty result set. Unsupported HTTP methods return HTTP 405.
Markdown pages
Request a public page with Accept: text/markdown, or append .md to its path. The homepage is /index.md. Keep query parameters after the .md suffix. Responses use Content-Type: text/markdown; charset=utf-8 and Vary: Accept.
Supported pages: published community/editorial pages, search results, listing details and nearby sales, the market-report archive, public report sections, and this guide. Ordinary page requests return HTML. Account pages, draft previews, forms and downloads are outside this interface.
Units, dates and freshness
Listing prices are USD. JSON fields named livingAreaSquareMetres and lotAreaSquareMetres contain square metres; formatted property-detail rows label their own units. Nearby-sale distances are miles. Dates retain their supplied ISO format and timezone when present. retrievedAt is the response-generation time, not the time the listing changed or the source was last synced. modifiedAt and dataLastSyncedAt identify those separate timestamps when available. Reads use the website's existing data caches, so retrieval does not force a source refresh.
Listings can be sold, withdrawn or changed after a response. Retrieve the current listing before describing availability or quoting a price. Missing values mean unavailable information, not zero. Rental projections and nightly-rate indices are estimates or comparative measures; an index of 100 is the baseline, not a dollar price.
Discovery: llms.txt.