# Landing Public API (HTTP GET)

Read-only access to Landing's furnished-apartment catalog over plain HTTP GET —
the same capabilities as our MCP server (https://web-4810-b78acbb9-lr3etkub.onporter.run/mcp/public), for agents that
can't speak MCP. No auth. JSON responses. CORS open. Machine-readable spec:
https://web-4810-b78acbb9-lr3etkub.onporter.run/api/public/openapi.json

Dates are YYYY-MM-DD. Errors return `{"error": {"code", "message"}}` (400 bad
input, 404 unknown home/market).

Agent guide (llms.txt): https://www.hellolanding.com/llms.txt —
a walkthrough of both transports (MCP + this GET API) with example flows.

Full tool catalog — every MCP tool with description, schema, and example
call: https://web-4810-b78acbb9-lr3etkub.onporter.run/api/public/tools (markdown) · https://web-4810-b78acbb9-lr3etkub.onporter.run/api/public/tools.json
(JSON — a GET mirror of the MCP `tools/list` response).

## Endpoints

- `GET /api/public/markets?state=` — List the Landing markets currently accepting bookings (one row per market).
- `GET /api/public/market-filters?market=` — Returns all available filter options for a given market — bedroom counts, amenities, price range, bathroom options, neighborhoods, and sort orders.
- `GET /api/public/search?market=&check_in=&check_out=&bedrooms=&max_price=` — Search Landing's published furnished apartments in a given market.
- `GET /api/public/homes/:slug` — Fetch a single Landing home by its slug — property details, amenities, photos, **flex pricing**, **the full availability calendar**, and a pre-filled `reservation_link` so the agent doesn't have to probe dates with `check_availability` or assemble booking URLs by hand.
- `GET /api/public/homes/:slug/flex-options` — Return the flex (open-ended) commitment tiers a given home accepts, so the agent doesn't suggest a `committed_nights` value the home will reject.
- `GET /api/public/homes/:slug/availability?check_in=&check_out=&committed_nights=` — Check whether a specific Landing home is bookable for the requested dates, and return the structured reason if not. Considers third-party reservations, the home's minimum nightly stay, and member-applied availability blocks.
- `GET /api/public/homes/:slug/quote?check_in=&check_out=` — Real, date-specific anonymous quote for a home. Mirrors what an unauthenticated visitor sees in checkout: monthly rent after seasonal adjustments and length-of-stay discounts, the first-month charge, ongoing monthly cost, and an estimated total.
- `GET /api/public/homes/:slug/offers?check_in=&check_out=` — Every bookable pricing offer for one home at a single move-in date, in one call — priced through the same live pricing engine as `get_quote` (checkout-grade, not an estimate), each carrying any active special offer/discount already applied (see `deal_applied`).
- `GET /api/public/homes/:slug/total-cost?check_in=&check_out=` — Verified all-in cost for a stay at a Landing home — the same live pricing engine as get_quote, summarized as a single bottom-line total for the full stay length rather than a line-item checkout breakdown.
- `GET /api/public/homes/:slug/neighborhood` — Neighborhood context for a home: description, market/city, and the same walk/transit/bike score shown on hellolanding.com.
- `GET /api/public/homes/:slug/reviews?page=&per_page=` — All guest reviews for a home's building, paginated — use this when the guest wants to read more than the handful get_home previews.
- `GET /api/public/compare?slugs=` — Side-by-side comparison of 2-4 Landing homes — price, size, amenities, ratings, and availability in one call, instead of stitching together multiple get_home calls yourself.
- `GET /api/public/deals?market=` — Currently discounted homes in a market, surfaced most-vacant-first.
- `GET /api/public/market-stats?market=` — Market-level stats for a Landing market: average monthly rent by bedroom count, total published inventory, and the neighborhoods with the most availability. Useful for cross-market comparisons ("is Austin or Dallas cheaper for a 1BR?") without paging through search_apartments results.
- `GET /api/public/policies-faq?q=` — Grounded, conservative answers to the most common Landing policy questions (deposits, pets, parking, cancellation, qualification, LandingFlex, utilities, move-in). Use this instead of guessing at policy specifics — where an exact number (deposit amount, cancellation window) depends on the home/market/reservation, the answer says so explicitly and points to get_quote, checkout, or Landing support rather than inventing a figure.
- `GET /api/public/status` — health check

## Typical flow

1. `GET /api/public/markets` → pick a market slug
2. `GET /api/public/search?market=<slug>&check_in=YYYY-MM-DD&check_out=YYYY-MM-DD` → pick a home slug
   e.g. https://web-4810-b78acbb9-lr3etkub.onporter.run/api/public/search?market=birmingham&check_in=2026-09-01&check_out=2026-12-01
3. `GET /api/public/homes/<slug>/quote?check_in=YYYY-MM-DD&check_out=YYYY-MM-DD` → price it
