> For the complete documentation index, see [llms.txt](https://documentation.rcore.cz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.rcore.cz/paid-resources/rcore_housing/features/marketplace-and-listings.md).

# Marketplace & Listings

`/marketplace` and the marketplace NPCs let players browse, list, and trade properties.

## 🧍 Marketplace NPCs

Marketplace NPCs spawn at the locations in `Config.MarketPlace.Locations`. Interacting with an NPC opens the same marketplace UI as `/marketplace`, just anchored to that NPC's location.

## 🪧 Creating a Listing

A property owner can list their property from `/housing` → property → **List**:

1. Pick a listing type (sale / rent).
2. Set the price (validated against `MarketPlace.Validation.MinPrice` and `MaxPrice`).
3. Add an optional description (capped at `MaxDescriptionLength`, default 500 chars).
4. Optionally upload a thumbnail and up to `MaxGalleryImages` gallery images.
5. Confirm - the listing appears on the marketplace and a sale sign appears at the property (see [Sale Signs](/paid-resources/rcore_housing/features/sale-signs.md)).

Real estate agencies list company-owned properties the same way - see [Real Estate Business](/paid-resources/rcore_housing/features/real-estate-business.md).

## 🖼️ Images

When `Config.MarketPlace.ImageService.Enable = true`, agents can upload images that are served to the gallery UI. With `RequireThumbnail = true`, a thumbnail is mandatory.

All image and metadata fields are optional by default - players who don't want to upload anything just see a stock thumbnail.

## ❤️ Favourites

Players can favourite listings from the marketplace. Favourites are stored in `rcore_housing_marketplace_favorites` and persist between sessions.

## ⚡ Instant Sell

```lua
Config.MarketPlace.InstantSell = {
    Enable     = true,
    Percentage = 50,
}
```

Instant sell pays the player `Percentage` % of the listed price and re-lists the property under the "city" owner at full price. When someone buys it back, the resale money is voided.

Use this when you want a quick exit option for players who don't want to wait for a buyer.

## ✅ Validation

| Rule                       | Default       |
| -------------------------- | ------------- |
| Minimum price              | `1000`        |
| Maximum price              | `100,000,000` |
| Maximum description length | `500` chars   |
| Phone number required      | `false`       |
| Images required            | `false`       |

Tighten these in [marketplace configuration](/paid-resources/rcore_housing/configuration/marketplace.md).
