Kwadrat PL Telegram
Telegram bot for renting in Poland

Rent an apartment in Poland — let your home find you

Kwadrat PL gathers fresh listings from OLX, Otodom and Morizon into one Telegram bot. Subscribe to a search and new flats and rooms land right in your chat, before everyone else.

Open the bot in Telegram No sign-up · 5 languages · inside Telegram
FreeListings direct, no agenciesRefreshed ~5 minAI breakdown + anti-scam

Why Kwadrat PL

Search 3 portals at once

Flats, rooms and short stays from OLX, Otodom and Morizon. The same listing across sites is merged — no duplicates in your feed.

Instant alerts

Subscribe to your search and matching homes reach your chat within minutes. Quiet hours at night and pause with /off.

Fair price & anti-scam

A below/above district-market badge from our own data, plus a warning on suspiciously cheap listings — a classic scam bait.

AI listing breakdown

One button: translate the listing into your language, summarise the essentials and score the scam risk from the text.

Move-in calculator

How much cash you need upfront: rent, czynsz, utilities, deposit and agent fee — all counted at once, no surprises.

Renter guides

How to get your deposit back (with a ready demand letter), contract red flags, a viewing checklist and ready Polish messages to the owner.

📍 Warsaw location score

Enter an address or tap a point on the map — we'll show how liveable it is: an overall 0–100 score with a breakdown for transit, infrastructure, schools and greenery, plus the nearest places and distances.

🚇 Transit🛒 Infrastructure🏫 Schools & kindergartens🌳 Green areas
📍 Check an address for free
Warsaw location score: 0–100 with a category breakdown

How it works

  1. 1

    Open the bot

    Tap the button and launch Kwadrat PL in Telegram — the app opens right inside your chat.

  2. 2

    Set up a search

    Pick a city, rental type, price and filters. Results update instantly.

  3. 3

    Get new ones first

    Subscribe and fresh listings arrive in your chat before others snap them up.

How it looks

Search, fair-price check and the full move-in cost — all inside Telegram.

Kwadrat PL home screen: searching rentals across 8 cities in Poland
List of flats for rent with photo, price and a below-market badge
Warsaw listings map: prices and clusters on a vector map
Warsaw location score: 0–100 with a category breakdown

iPhone home-screen widget

How many matching flats and the latest prices — right on your screen, without opening Telegram. Via the free Scriptable app, no App Store payments and no developer account.

Kwadrat PL widget on an iPhone home screen: number of matching flats and rental prices

How to install

  1. Install the free Scriptable app from the App Store.
  2. Message our bot the /widget command — it sends your personal token.
  3. In Scriptable tap “+”, clear the contents and paste the widget code (button below).
  4. Put your token on the TOKEN line, replacing PASTE_TOKEN_HERE.
  5. Tap ▶ at the bottom — a widget preview appears.
  6. On the home screen: long-press → “+” → Scriptable → pick a size → add. Then long-press the widget → “Edit Widget” → in the Script field choose this script.
Show widget code
// ===========================================================================
// Kwadrat PL — widget for Scriptable (iOS). A real home-screen widget without
// the App Store or an Apple Developer account. Fetches data from our server with
// your personal widget token (the /widget command in @KwadratPLBot).
//
// Install:
//   1. Get the free Scriptable app from the App Store.
//   2. New script → paste this whole file.
//   3. Put your token into TOKEN below (get it with /widget in the bot).
//   4. Home screen → Scriptable widget (small or medium) → this script.
// Supports small, medium and the lock screen. Tap opens the Mini App.
// ===========================================================================

const TOKEN = "PASTE_TOKEN_HERE";
const STATE_URL = "https://kwadratpl-46-224-220-94.sslip.io/api/widget/state";

// ── брендовые цвета ──
const BG = new Color("#17212b");
const ACCENT = new Color("#3aaee0");
const WHITE = new Color("#e7edf3");
const MUTED = new Color("#93a4b4");

function zl(n) {
  if (!n && n !== 0) return "";
  return String(n).replace(/\B(?=(\d{3})+(?!\d))/g, " ") + " zł";
}

async function fetchState() {
  const req = new Request(STATE_URL);
  req.headers = { Authorization: "Bearer " + TOKEN };
  req.timeoutInterval = 12;
  return await req.loadJSON();
}

function header(w, s) {
  const row = w.addStack();
  row.centerAlignContent();
  const t = row.addText("KWADRAT");
  t.textColor = ACCENT;
  t.font = Font.heavySystemFont(13);
  row.addSpacer();
  const c = row.addText(String(s.matchingListings));
  c.textColor = WHITE;
  c.font = Font.heavySystemFont(17);
}

function build(s) {
  const w = new ListWidget();
  w.backgroundColor = BG;
  w.setPadding(14, 14, 14, 14);
  const fam = config.widgetFamily ? config.widgetFamily : "medium";

  if (!s) {
    const t = w.addText("KWADRAT");
    t.textColor = ACCENT; t.font = Font.heavySystemFont(14);
    w.addSpacer(6);
    const e = w.addText("No connection or invalid token. Refresh /widget in the bot.");
    e.textColor = MUTED; e.font = Font.systemFont(11);
    e.lineLimit = 3;
    return w;
  }

  header(w, s);
  w.addSpacer(2);
  const sub = w.addText("matching · " + s.newMatching + " new today");
  sub.textColor = MUTED; sub.font = Font.systemFont(10);

  if (fam !== "small") {
    w.addSpacer(9);
    const all = s.topListings ? s.topListings : [];
    const list = all.slice(0, fam === "large" ? 6 : 3);
    if (list.length === 0) {
      const e = w.addText("Нет matching объявлений. Настройте подписку в боте.");
      e.textColor = MUTED; e.font = Font.systemFont(11); e.lineLimit = 2;
    }
    list.forEach(function (l) {
      const row = w.addStack();
      row.centerAlignContent();
      const p = row.addText(zl(l.price));
      p.textColor = WHITE; p.font = Font.mediumSystemFont(12);
      row.addSpacer();
      const place = l.district ? l.district : (l.city ? l.city : "");
      const d = row.addText(place);
      d.textColor = MUTED; d.font = Font.systemFont(12);
      w.addSpacer(4);
    });
  }

  w.addSpacer();
  const ts = s.lastUpdatedAt ? s.lastUpdatedAt : "";
  const upd = ts.replace("T", " ").slice(11, 16);
  const foot = w.addText(upd ? "updated " + upd : "Kwadrat PL");
  foot.textColor = MUTED; foot.font = Font.systemFont(9);

  let tapUrl = "https://t.me/KwadratPLBot";
  if (s.botUrl) tapUrl = s.botUrl;
  if (s.openUrl) tapUrl = s.openUrl;
  w.url = tapUrl;
  w.refreshAfterDate = new Date(Date.now() + 15 * 60 * 1000);
  return w;
}

let state = null;
try { state = await fetchState(); } catch (e) { state = null; }
const widget = build(state);

if (config.runsInWidget) {
  Script.setWidget(widget);
} else {
  await widget.presentMedium();
}
Script.complete();

How to use it

  • Tapping the widget opens the app.
  • The widget refreshes on iOS's schedule (roughly every 15–30 minutes) — a limit of all widgets, not just ours.
  • Fresh flats still arrive instantly as a normal bot notification.

Cities in Poland

Flats and rooms for rent in 8 cities across Poland:

FAQ

Is it free?
Yes, fully. Search, alerts, guides and the calculator — no fees and no sign-up.
Where do listings come from?
We gather public listings from OLX, Otodom and Morizon and refresh them every few minutes. The same offer across sites is merged.
What is the AI breakdown?
A button on each listing: it translates the text into your language, writes a short summary and scores the scam risk from the description.
Which languages are supported?
English, Polish, Ukrainian, Belarusian and Russian. You switch the language right inside the app.
How do I know the price is fair?
The bot computes the median price per m² by district and home type from its own data and shows how far a listing sits below or above the market. The median needs a sample of at least 6 listings; when a district has too little data, the city-wide median is used. Figures refresh with every database update.
Do I need to install an app?
No. Kwadrat PL runs inside Telegram as a Mini App — nothing to install.
Is there an iPhone widget?
Yes. Via the free Scriptable app you can add a home-screen widget showing the number of matching flats and the latest prices — no App Store payments. Step-by-step guide above.

May your home find you!

Open Kwadrat PL and subscribe to your search — the right place will come to you.

Open the bot in Telegram