Skip to main content
Glama

Otodom MCP

Search Otodom real-estate listings (otodom.pl)

otodom_search

Search property listings on otodom.pl, Poland's largest real-estate portal: flats, studios, houses, rooms, plots, commercial premises, warehouses, garages and developers' new projects, for sale or for rent. Filter by place (a city, 'city district', town, village or voivodeship, resolved by Otodom's own location search), price, area, rooms, private-owner vs agency listings and primary/secondary market; sort by newest, price or area. Returns one results page (24 by default) with each listing's price, czynsz, price per m², area, rooms, floor, place, seller type and link; pass a listing's slug to otodom_offer for full details. Fetched live from otodom.pl (typically 0.3–1 s via direct fetch; ~5–10 s when it falls back to an unblocker). Result shape: { source, fetchedAt, query, search_url, heading, resolved_location, other_locations?, total_count, page, page_size, total_pages, count, listings: [...], note?, warning? } — the list key is listings; total_count counts matches across all pages (use page for more). Each listing: { id, slug, url, title, kind, price, rent_extra, price_per_m2, currency, price_on_request, area_m2, plot_area_m2, rooms, floor, location, street, district, city, region, location_id, seller_type, agency_name, features, is_promoted, date_created, image, photos_count, description, development? }. Prices are numbers in PLN: for rentals price is the monthly rent, and rent_extra is the monthly administrative fee (czynsz) paid on top (stated on sales too); price is null with price_on_request true when the advertiser hides it. floor is 'ground', '1'…'10', '10+', 'basement' or 'attic'. kind is 'new_development' for a developer's project (its units' ranges in development), else 'listing'; seller_type is private | agency | developer. resolved_location says which place was searched — check it; other_locations lists other matches for the name (pass one's id as location). An empty match answers count: 0 with a note saying why and what to change — that is a successful result, not an error.

Input Schema

NameRequiredDescriptionDefault
pageNoResults page, 1-based. Default 1.
sortNoOrder: 'relevance' (Otodom's default, promoted listings first), 'newest', 'oldest', 'price_asc', 'price_desc', 'area_asc', 'area_desc'.
typeYesProperty type: 'flat' = mieszkanie, 'studio' = kawalerka (one-room flat), 'house' = dom, 'room' = pokój (rent only), 'plot' = działka (land), 'commercial' = lokal użytkowy (office, shop, premises), 'warehouse' = hala/magazyn, 'garage' = garaż/miejsce parkingowe, 'new_development' = a developer's project (inwestycja; sale only).
limitNoListings per page; rounded up to a size Otodom serves (24, 36, 48 or 72). Default 24.
marketNoSales only: 'primary' = new-build from a developer (rynek pierwotny), 'secondary' = resale (rynek wtórny). Omit for both.
area_maxNoMaximum area in m² (the plot's area for type 'plot').
area_minNoMinimum area in m² (the plot's area for type 'plot').
locationNoWhere, in Polish spelling as the site uses it: a city ('Warszawa', 'Kraków'), 'city district' ('Warszawa Mokotów', 'Gdańsk Wrzeszcz'), a town or village ('Zakopane'), or a voivodeship ('mazowieckie'). English names ('Warsaw') are not recognised. Also accepts an Otodom location id (slug path) from a previous result's `location_id`/`resolved_location.id`, e.g. 'mazowieckie/warszawa/warszawa/warszawa/mokotow'. Omit to search all of Poland.
no_cacheNoForce a fresh fetch and bypass this server's result cache (5 min). Default false.
price_maxNoMaximum price in PLN (the monthly rent when transaction is 'rent').
price_minNoMinimum price in PLN (the monthly rent when transaction is 'rent').
rooms_maxNoMaximum number of rooms — types 'flat' and 'house' only (min = max for exactly N). Otodom's filter stops at '6 or more', so any bound of 6+ means 6 or more.
rooms_minNoMinimum number of rooms — types 'flat' and 'house' only.
owner_typeNo'private' = only listings posted by private owners (bez pośredników), 'agency' = only agencies and developers (sales only — Otodom has no agency-only filter for rentals), 'all' (default).
transactionYes'sale' = na sprzedaż (buying), 'rent' = na wynajem (renting; prices are monthly).

Output Schema

NameRequiredDescriptionDefault
noteNo
pageYes
countYes
queryYes
sourceYes
headingNo
warningNo
listingsYes
fetchedAtYes
page_sizeNo
search_urlYes
total_countNo
total_pagesNo
other_locationsNo
resolved_locationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses live fetching with fallback timing, a 5-minute result cache bypassable via no_cache, pagination limits, empty-result behavior, price semantics including rent_extra and hidden prices, and the meanings of floor, kind, and seller_type.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is front-loaded with purpose and filter coverage, then returns to output shape and edge cases. It is long, but the length is mostly justified by the tool's complexity; some result-field enumeration overlaps with the existing output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 15 parameters, output schema, lack of annotations, and sibling tool, the description is complete enough to call correctly. It covers pagination, location resolution, empty matches as success, caching, seller types, price interpretation, and the handoff to otodom_offer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage and already documents all 15 parameters in detail, including Polish location spelling, enum meanings, and rooms behavior. The description reinforces filter categories but adds little parameter-specific meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: search property listings on otodom.pl. It enumerates property types, sale vs rent, and explicitly distinguishes itself from otodom_offer by saying to pass a listing's slug there for full details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the sibling tool for full listing details and explains how to handle empty results, resolved locations, and pagination. It lacks explicit 'when not to use' guidance, but the search-vs-detail split with otodom_offer is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources