API / Dokumentace

Dokumentace Realitní pes API

Všechno, co potřebujete k napojení dat o realitním trhu: jak se přihlásit, kolik dotazů máte, jak stránkovat výsledky a co znamená každý parametr a každé pole.

Získat token zdarmaSpecifikace OpenAPI

Začínáme

Realitní pes API vrací data o nabídkách nemovitostí z celé České republiky. Stejnou nemovitost nabízenou víckrát slučujeme do jednoho záznamu, takže každý byt nebo dům v datech najdete jen jednou. API je jen pro čtení a vrací JSON.

Adresa API

https://api.realitni-pes.cz

Endpointy

GET /v1/offersHledání nabídek

GET /v1/offers/{offerId}Detail nabídky

GET /v1/meToken, plán a limit

První dotaz

  1. Přihlaste se a v nastavení účtu si vytvořte API token. API je v každém plánu, i v tom zdarma.
  2. Pošlete dotaz s tokenem v hlavičce Authorization. Tenhle najde pět bytů 2+kk v Brně:
curl "https://api.realitni-pes.cz/v1/offers?type=apartment&arrangement=2%2Bkk&address=Brno&limit=5" \
  -H "Authorization: Bearer VÁŠ_TOKEN"

Hotovo. Co dotaz vrátí a jaké další filtry máte k dispozici, najdete v referenci.

Autentizace

Každý dotaz na /v1 potřebuje API token. Token pošlete jedním ze tří způsobů:

ZpůsobKdy ho použít
Authorization: Bearer VÁŠ_TOKENVýchozí způsob. Funguje všude, kde můžete nastavit hlavičku.
X-Api-Key: VÁŠ_TOKENKdyž nástroj hlavičku Authorization používá pro vlastní přihlášení, například konektory Claude.
?token=VÁŠ_TOKENJen když nástroj neumí poslat žádnou hlavičku. Adresa se ukládá do logů, takže takový token raději časem vyměňte.

Když přijde token víckrát, vyhrává X-Api-Key, pak ?token= a nakonec Authorization. Hlavička Authorization je poslední, protože v ní může být přihlášení vašeho nástroje místo našeho tokenu. Zrušení tokenu nebo změna plánu se projeví do 60 sekund. Tokeny spravujete v nastavení účtu.

Limity a plány

Každý plán má měsíční počet dotazů. Počítá se každý dotaz s tokenem a limit sdílejí všechny vaše tokeny.

PlánDotazů měsíčněHistorie
Čmuchal10Pouze aktuální nabídky
Hlídač100Pouze aktuální nabídky
Stopař5003 měsíce
Smečka1 0006 měsíců

50 nabídek na dotaz. Proto je maximum nabídek padesátinásobek dotazů.

Obnova 1. dne v měsíci. Dotazy se počítají za kalendářní měsíc.

Žádné doplatky. Po vyčerpání limitu API odpoví chybou 429, dokud se limit neobnoví.

Naše chyby neplatíte. Dotaz, který skončí chybou na naší straně, se do limitu nepočítá.

Limit se obnovuje o půlnoci UTC prvního dne v měsíci. Kolik vám zbývá, řekne GET /v1/me a každá odpověď nese hlavičky X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset. Víc dotazů nebo delší historii dostanete ve vyšším plánu.

Stránkování

Hledání vrací výsledky po stránkách, výchozí 25 a maximálně 50 nabídek na stránku (parametr limit). Další stránku dostanete tak, že hodnotu pagination.nextCursor pošlete zpátky jako parametr cursor se stejnými filtry. Když je pagination.hasMore rovno false, jste na konci. Kurzor neupravujte, jen ho předejte dál. Každá stránka je jeden dotaz.

API_URL = "https://api.realitni-pes.cz"
import requests

params = {"type": "apartment", "address": "Brno", "limit": 50}
headers = {"Authorization": "Bearer VÁŠ_TOKEN"}
offers = []

while True:
    page = requests.get(f"{API_URL}/v1/offers", params=params, headers=headers).json()
    offers += page["data"]
    if not page["pagination"]["hasMore"]:
        break
    params["cursor"] = page["pagination"]["nextCursor"]

Chyby

Každá chyba je JSON se stejným tvarem. Podle code se rozhodujte v kódu. message anglicky popíše, co je špatně a jak to opravit, takže ho můžete rovnou ukázat uživateli nebo předat AI agentovi. U chyby 400 vyjmenuje details každý chybný parametr a co přijímá. Hodnotu requestId (je i v hlavičce X-Request-Id) nám pošlete, když budete něco hlásit.

{
  "error": {
    "code": "invalid-request",
    "message": "Invalid query parameter: arangement. Fix each one as described in \"details\" and retry; GET /openapi.json documents every accepted parameter.",
    "details": [
      {
        "path": "arangement",
        "message": "Unknown parameter \"arangement\". Remove it, or use one of the accepted parameters (names are case-sensitive): offerType, type, subtype, arrangement, …"
      }
    ]
  },
  "requestId": "8c1e4b7a-2f90-4d3a-9b61-0e5f7c2d8a14"
}
codeHTTPVýznam
unauthorized401Chybí token, nebo je neznámý či zrušený.
forbidden403Token k tomuto dotazu nemá přístup.
plan-limit-exceeded403Dotaz potřebuje vyšší plán, například historická data.
not-found404Nabídka neexistuje, nebo je mimo historii vašeho plánu.
invalid-request400Neplatný nebo neznámý parametr. details řekne, co který parametr přijímá.
payload-too-large413Požadavek na MCP server je příliš velký. Posílejte jen filtry a dávku rozdělte.
quota-exceeded429Došel měsíční limit dotazů. Obnoví se 1. dne dalšího měsíce.
query-timeout504Hledání trvalo déle než 10 sekund. Zužte ho. Do limitu se nepočítá.
internal-error500Chyba na naší straně. Do limitu se nepočítá.

Reference

Všechny endpointy přijímají jen GET a vracejí JSON. Popis vychází přímo ze specifikace OpenAPI, se kterou API běží.

GET/v1/offers

Hledání nabídek

Vrátí deduplikované nabídky podle zadaných filtrů, od poslední změny po nejstarší. Bez includeInactive jen ty, které jsou pořád v nabídce. API přijme jen parametry uvedené níže. Neznámý nebo překlepnutý parametr odmítne chybou 400, která ho pojmenuje, takže překlep nikdy nevrátí nefiltrovaný výsledek.

Parametry

Nabídka
offerTypevýčet

Prodej, pronájem, výměna nebo dražba.

salerentexchangeauction
typevýčet

Typ nemovitosti.

apartmenthousecommercialotherland
subtypevýčet

Podrobnější typ v rámci type, například rodinný dům nebo kancelář.

familyvillacottageholidayplannedfarmhistoricalofficewarehouseproductionshopping_spaceaccommodationrestaurantagriculturalbuildinggarage_fullgarage_spacemobile_homewine_cellarattichousingcommercialmeadowforestfishpondorchardgardenother
arrangementvýčet

Dispozice, například 3+kk.

1+01+11+kk2+02+12+kk3+03+13+kk4+04+14+kk5+05+15+kk6+06+16+kk7+07+17+kk6++other
equipmentvýčet

Vybavení nemovitosti.

fullnonepartial
ownershipvýčet

Vlastnictví: osobní, družstevní, obecní, státní nebo jiné.

privatecommunallocalstateother
propertyStatevýčet

Stav nemovitosti.

very_goodgoodbadin_constructionin_planningnewly_constructeddevelopment_projectbefore_renovationafter_renovationfor_demolition
buildingTypevýčet

Typ stavby.

brickpanelwoodecoskeletonmixassemblestone
Lokalita
districttext

Přesný název okresu nebo městské části, například Praha 5.

neighborhoodtext

Přesný název čtvrti, například Smíchov.

latčíslo

Zeměpisná šířka středu hledání. Posílá se spolu s lng.

lngčíslo

Zeměpisná délka středu hledání. Posílá se spolu s lat.

addresstext

Adresa, kolem které hledat. Na souřadnice ji převedeme za vás. Použijte ji místo lat a lng, ne s nimi.

radiusMetersčíslo

Poloměr hledání kolem středu v metrech. Bez něj hledáme do 2 000 m.

Cena, plocha a podlaží
priceMin, priceMaxčíslo

Cena v Kč od a do, včetně obou mezí. U pronájmu měsíční nájem.

livingAreaMin, livingAreaMaxčíslo

Užitná plocha v m² od a do, včetně obou mezí.

landAreaMin, landAreaMaxčíslo

Plocha pozemku v m² od a do, včetně obou mezí.

floorMin, floorMaxčíslo

Podlaží od a do, včetně obou mezí. 0 je přízemí.

floorCountMin, floorCountMaxčíslo

Počet podlaží budovy od a do, včetně obou mezí.

Historie a stránkování
includeInactivetrue / falsevýchozí false

Přidá i nabídky, které už z trhu zmizely. Vyžaduje plán s historií, a jak daleko do minulosti vidíte, určuje plán.

limitcelé číslovýchozí 25nejvýše 50

Počet nabídek na stránku.

cursortext

Hodnota pagination.nextCursor z předchozí stránky.

Příklad dotazu

curl "https://api.realitni-pes.cz/v1/offers?type=apartment&arrangement=2%2Bkk&address=Brno&limit=5" \
  -H "Authorization: Bearer VÁŠ_TOKEN"

Příklad odpovědi

{
  "data": [
    {
      "id": "9d41f7c0b2e8a3115c77de42",
      "firstSeenAt": "2026-09-02T07:14:20.104Z",
      "lastChangedAt": "2026-09-16T11:48:03.771Z",
      "isLive": true,
      "location": {
        "lat": 49.199,
        "lng": 16.623
      },
      "title": "Prodej bytu 2+kk 48 m²",
      "city": "Brno",
      "neighborhood": "Zábrdovice",
      "type": "apartment",
      "offerType": "sale",
      "arrangement": "2+kk",
      "priceTotal": 4690000,
      "livingArea": 48,
      "floor": 3,
      "balcony": true,
      "elevator": true
    }
  ],
  "pagination": {
    "limit": 5,
    "count": 5,
    "hasMore": true,
    "nextCursor": "eyJ0IjoiMjAyNi0wOS0xNiJ9"
  }
}

Odpovědi

200

Stránka nabídek.

400

Neplatný nebo neznámý parametr. Pole details vyjmenuje každý z nich.

401

Chybí token, nebo je neznámý či zrušený.

403

Dotaz vyžaduje vyšší plán, například kvůli historickým datům.

429

Vyčerpaný měsíční limit dotazů.

504

Hledání běželo déle než 10 sekund a bylo zastaveno. Zpráva poradí, jak ho zúžit. Do limitu se nepočítá.

GET/v1/offers/{offerId}

Detail nabídky

Všechno o jedné nemovitosti: všechny inzeráty, ze kterých je složená, a vývoj ceny v čase.

Parametry

offerIdtextpovinný

Hodnota id z výsledku hledání.

Příklad dotazu

curl "https://api.realitni-pes.cz/v1/offers/9d41f7c0b2e8a3115c77de42" \
  -H "Authorization: Bearer VÁŠ_TOKEN"

Příklad odpovědi

{
  "id": "9d41f7c0b2e8a3115c77de42",
  "firstSeenAt": "2026-09-02T07:14:20.104Z",
  "lastChangedAt": "2026-09-16T11:48:03.771Z",
  "isLive": true,
  "location": {
    "lat": 49.199,
    "lng": 16.623
  },
  "title": "Prodej bytu 2+kk 48 m²",
  "city": "Brno",
  "neighborhood": "Zábrdovice",
  "type": "apartment",
  "offerType": "sale",
  "arrangement": "2+kk",
  "priceTotal": 4690000,
  "livingArea": 48,
  "floor": 3,
  "balcony": true,
  "elevator": true,
  "portalLinks": [
    {
      "offerId": "a17c",
      "siteId": "site-a",
      "url": "https://…",
      "isLive": true,
      "firstSeenAt": "2026-09-02T07:14:20.104Z"
    },
    {
      "offerId": "b52e",
      "siteId": "site-b",
      "url": "https://…",
      "isLive": true,
      "firstSeenAt": "2026-09-04T16:02:51.337Z"
    }
  ],
  "priceHistory": [
    {
      "offerId": "a17c",
      "siteId": "site-a",
      "points": [
        {
          "at": "2026-09-02T07:14:20.104Z",
          "priceTotal": 4890000
        },
        {
          "at": "2026-09-16T11:48:03.771Z",
          "priceTotal": 4690000
        }
      ]
    }
  ]
}

Odpovědi

200

Nabídka.

400

Endpoint nepřijímá žádné query parametry.

401

Chybí token, nebo je neznámý či zrušený.

404

Nabídka neexistuje, nebo je starší, než kam sahá historie vašeho plánu.

429

Vyčerpaný měsíční limit dotazů.

GET/v1/me

Token, plán a limit

K jakému plánu token patří a kolik dotazů vám tento měsíc zbývá.

Příklad dotazu

curl "https://api.realitni-pes.cz/v1/me" \
  -H "Authorization: Bearer VÁŠ_TOKEN"

Příklad odpovědi

{
  "token": {
    "id": "66f1c2a9e4b0d3a1c8f7e210",
    "prefix": "rp_live_4f8a"
  },
  "plan": {
    "id": "proV2",
    "name": "Stopař",
    "requestsPerMonth": 500,
    "historyMonths": 3
  },
  "usage": {
    "month": "2026-09",
    "requestsUsed": 42,
    "requestsRemaining": 458,
    "resetsAt": "2026-10-01T00:00:00.000Z"
  }
}

Odpovědi

200

Stav tokenu a limitu.

400

Endpoint nepřijímá žádné query parametry.

401

Chybí token, nebo je neznámý či zrušený.

GET/healthbez tokenu

Stav služby

Kontrola, že API běží. Nepotřebuje token a do limitu se nepočítá.

Příklad dotazu

curl "https://api.realitni-pes.cz/health"

Příklad odpovědi

{
  "status": "ok"
}

Odpovědi

200

Služba běží.

503

Některá z databází je nedostupná.

Pole nabídky

Každá nabídka v data i detail z GET /v1/offers/{offerId} mají stejná pole. Detail má navíc portalLinks a priceHistory. Pole označená „vždy“ má každá nabídka. Ostatní v odpovědi chybí, když je žádný inzerát neuvedl. Pole typu true / false jsou vždy true nebo false, nikdy text jako „Ano“.

idtextvždy

Stálé id nabídky. Použijte ho v GET /v1/offers/{offerId}.

firstSeenAtdatum a časvždy

Kdy se nemovitost poprvé objevila v nabídce.

lastChangedAtdatum a časvždy

Kdy se naposledy změnil kterýkoli z jejích inzerátů. Podle toho jsou seřazené výsledky hledání.

isLivetrue / falsevždy

Jestli ji aspoň jeden inzerát pořád nabízí. Hodnotu false vrací jen hledání s includeInactive a detail.

locationobjektvždymůže být null

Souřadnice { "lat", "lng" }, nebo null, když polohu žádný inzerát neuvedl.

titletext

Titulek inzerátu, česky.

descriptiontext

Celý text inzerátu, česky.

citytext

Obec, například Praha nebo Brno.

streettext

Ulice bez čísla popisného.

regiontext

Kraj, například Moravskoslezský.

neighborhoodtext

Část obce nebo čtvrť, například Praha 3 nebo Vinohrady.

districttext

Okres, například Hlavní město Praha nebo Brno-město.

postalCodetext

PSČ, obvykle s mezerou, například 708 00.

addresstext

Adresa, jak byla zveřejněná, například Bořivojova, Praha 3. Přesnost se liší inzerát od inzerátu.

unitNumbertext

Číslo bytu nebo jednotky, pokud ho inzerát uvádí. To je vzácné.

typevýčet

Typ nemovitosti.

apartmenthousecommercialotherland
subtypevýčet

Podrobnější typ, například rodinný dům (family) nebo kancelář (office).

familyvillacottageholidayplannedfarmhistoricalofficewarehouseproductionshopping_spaceaccommodationrestaurantagriculturalbuildinggarage_fullgarage_spacemobile_homewine_cellarattichousingcommercialmeadowforestfishpondorchardgardenother
offerTypevýčet

Prodej, pronájem, výměna nebo dražba.

salerentexchangeauction
arrangementvýčet

Dispozice: 2+kk jsou dva pokoje s kuchyňským koutem, 3+1 tři pokoje a samostatná kuchyně.

1+01+11+kk2+02+12+kk3+03+13+kk4+04+14+kk5+05+15+kk6+06+16+kk7+07+17+kk6++other
propertyStatevýčet

Stav nemovitosti.

very_goodgoodbadin_constructionin_planningnewly_constructeddevelopment_projectbefore_renovationafter_renovationfor_demolition
ownershipvýčet

Vlastnictví: private (osobní), communal (družstevní), local (obecní), state (státní) nebo other.

privatecommunallocalstateother
buildingTypevýčet

Typ stavby.

brickpanelwoodecoskeletonmixassemblestone
priceTotalčíslo

Cena v Kč. U prodeje celková, u pronájmu měsíční.

livingAreačíslo

Užitná plocha v m².

landAreačíslo

Plocha pozemku v m².

floorčíslo

Podlaží, ve kterém jednotka je. 0 je přízemí, záporné číslo je pod zemí.

floorCountčíslo

Počet podlaží budovy.

equipmentvýčet

Vybavení nemovitosti.

fullnonepartial
gardentrue / false

Jestli má zahradu.

gardenAreačíslo

Plocha zahrady v m².

storagetrue / false

Jestli má sklep nebo komoru.

storageAreačíslo

Plocha sklepa nebo komory v m².

balconytrue / false

Jestli má balkon.

balconyAreačíslo

Plocha balkonu v m².

loggiatrue / false

Jestli má lodžii.

loggiaAreačíslo

Plocha lodžie v m².

terracetrue / false

Jestli má terasu.

terraceAreačíslo

Plocha terasy v m².

garagetrue / false

Jestli má garáž.

garageAreačíslo

Plocha garáže v m².

energyClasstext

Energetická třída, jak byla zveřejněná. Obvykle písmeno A až G, někdy s českým popisem.

heatingSourcetext

Zdroj vytápění. Známé hodnoty: gas, electric, solid, solid-fuel, combined, heat-pump a other.

heatingTypetext

Způsob vytápění. Známé hodnoty: communal (ústřední) a local (lokální).

seweragetext

Odpad. Známé hodnoty: communal (veřejná kanalizace) a septic-tank (jímka).

elevatortrue / false

Jestli má výtah.

parkingtrue / false

Jestli má parkování.

barrierFreetrue / false

Jestli má bezbariérový přístup.

swimmingPooltrue / false

Jestli má bazén.

housePositiontext

Poloha domu vůči sousedním. Známé hodnoty: free_standing (samostatný), terraced (řadový) a semi_detached (dvojdům).

portalLinksseznam (objekt)jen v detailu

Všechny inzeráty, ze kterých je nemovitost složená. U každého offerId, siteId, url, isLive a firstSeenAt.

priceHistoryseznam (objekt)jen v detailu

Vývoj ceny, jedna řada za každý zdroj, od nejstaršího bodu. Zdroje se v ceně často liší, proto řady neslučujeme.

Používáte AI asistenta?

Nemusíte psát kód. Připojte asistenta na náš MCP server a ptejte se na realitní trh vlastními slovy. Používá stejný token i stejný limit dotazů.

Připojit MCP

Realitní pes

Hlídání nemovitostíInvestiční kalkulačkaCeníkČasté dotazySledované serverySledované nemovitostiSrovnání realitních hlídacích psůAPI pro realitní dataMCP server pro realitní data
Zpracování osobních údajů

 • 

Obchodní podmínky

 • 

© 2026 Realitní pes s.r.o., IČO 23785489

Powered by Apify web scraping and automation