DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
APIs

How to Scrape Sreality Listings with an API (Unofficial Endpoints, Filters, Pagination and Legal Limits)

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Short answer: developers have successfully requested Sreality listing data through endpoints documented by community projects, but the evidence does not establish a supported, public read API from Seznam. Treat the endpoints as undocumented observations, verify they still work, and obtain permission before storing, republishing or monetizing listings, descriptions or photographs.

What “Sreality API” means in practice

A GitHub guide describes https://www.sreality.cz/api/v1 as an unofficial REST API. Its examples use a filter endpoint and a search endpoint:

  • GET https://www.sreality.cz/api/v1/estates/filter_page?lang=cs for reference values.
  • GET https://www.sreality.cz/api/v1/estates/search for listing searches.

A separate Scrapy project reports using https://www.sreality.cz/api/cs/v2/estates and collecting identifiers, descriptions, prices, coordinates, images and company details. That corroborates that implementations have existed; it does not prove that the path is supported, permanent or approved for your use.

Seznam’s terms effective 8 April 2026 describe account-related and selected import interfaces, but the located terms do not document a public read API for arbitrary listing collection. Before deployment, ask Seznam which interface and use case are authorized.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check permission before writing a crawler

Sreality’s own site states: “Jakékoliv užití obsahu internetového serveru www.sreality.cz, včetně převzetí, šíření či dalšího zpřístupňování inzerátů a fotografií, je bez souhlasu Seznam.cz, a.s. zakázáno.” In English, use of content—including taking over, distributing or making listings and photographs available—is prohibited without Seznam.cz consent.

That restriction is separate from whether an HTTP request technically succeeds. Decide what you will do with the response before collecting it:

  • Private research: document your purpose, minimize retained fields and set a deletion schedule.
  • Internal product: obtain written permission covering collection, storage, refresh frequency and user access.
  • Public portal, resale or aggregation: do not proceed on the assumption that an endpoint grants rights. The terms also restrict an intermediary from merely reselling, displaying other parties’ listings or aggregating them in one place in the stated intermediary context.

Recheck the current terms, robots and endpoint behavior immediately before launch. A successful response is not authorization.

Discover filter and category values

The community guide’s filter request is intended to expose reference values. Start with a simple request and inspect the JSON rather than hard-coding labels:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://www.sreality.cz/api/v1/estates/filter_page" 
  --data-urlencode "lang=cs"

Use the returned identifiers for region, property category and transaction category. The guide describes categories covering flats, houses, land, commercial property and other types, and transaction values for sale and rent. Exact identifiers and response shapes can change, so log the response schema and fail safely when a value disappears.

Build a search request

The documented search pattern accepts region, property category, transaction category, page size, offset and language. A representative request is:

curl -G "https://www.sreality.cz/api/v1/estates/search" 
  --data-urlencode "region=YOUR_REGION_ID" 
  --data-urlencode "category=YOUR_CATEGORY_ID" 
  --data-urlencode "category_main_cb=YOUR_TRANSACTION_ID" 
  --data-urlencode "limit=50" 
  --data-urlencode "offset=0" 
  --data-urlencode "lang=cs"

Parameter names and category fields in community examples are not a contract. Confirm them against the current response and the project version you are following. If the service returns a validation error, remove one optional parameter at a time and compare the request with the guide’s current example.

Python example with bounded pagination

import time
import requests

BASE = "https://www.sreality.cz/api/v1/estates/search"
params = {
    "region": "YOUR_REGION_ID",
    "category": "YOUR_CATEGORY_ID",
    "category_main_cb": "YOUR_TRANSACTION_ID",
    "limit": 50,
    "lang": "cs",
}

session = requests.Session()
offset = 0
while True:
    params["offset"] = offset
    response = session.get(BASE, params=params, timeout=30)
    response.raise_for_status()
    payload = response.json()
    items = payload.get("_embedded", {}).get("estates", [])
    if not items:
        break

    for item in items:
        # Store only fields your permission covers.
        print(item.get("hash_id"), item.get("name"), item.get("price"))

    offset += len(items)
    if len(items) < params["limit"]:
        break
    time.sleep(0.5)  # A delay suggested by one community guide, not a policy.

Node.js example

const endpoint = 'https://www.sreality.cz/api/v1/estates/search';
const params = new URLSearchParams({
  region: 'YOUR_REGION_ID',
  category: 'YOUR_CATEGORY_ID',
  category_main_cb: 'YOUR_TRANSACTION_ID',
  limit: '50',
  offset: '0',
  lang: 'cs'
});

const res = await fetch(`${endpoint}?${params}`);
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json();
console.log(data);

Pagination, limits and large collections

The guide reports a maximum offset of 10,000 and recommends splitting large jobs by region and, when needed, category. Attribute both points to that community guide: they are not confirmed service guarantees. A robust collector should:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Page with a modest limit and advance by the number of records actually returned.
  2. Stop on an empty page or a short page, while recording the final offset.
  3. Partition by region and category before approaching the reported offset ceiling.
  4. Keep a checkpoint so a failure resumes without replaying the entire collection.
  5. Use exponential backoff for transient 429, 502, 503 or network errors; do not turn retries into a high-rate loop.

The same guide suggests a 0.5-second delay and retry handling. Those are repository-specific implementation notes, not safe-request limits or permission to scrape. Start slower, monitor responses and stop when the service signals overload.

Understand the returned listing object

The guide’s sample response shows these kinds of fields:

Group Examples shown in the sample How to use safely
Identity Listing ID and name Use the ID as a deduplication key; do not assume it is permanent.
Price and classification Price, property category, transaction type Preserve currency and any “from” or fee wording returned.
Location Locality, region and district identifiers, coordinates Coordinates can be sensitive; apply access controls and precision reduction where appropriate.
Agency and premises Company, agency or premise fields Expect missing or changed fields between records.
Proximity Nearby-place or distance fields Store units and source context with the value.
Media Image flags and image URLs Do not copy or republish photographs without consent.

These are fields visible in one sample, not a guarantee that every current response contains them. Parse defensively with nullable fields, preserve the raw response only when your authorization permits it, and record retrieval time and endpoint version for auditability.

Reliability and operational safeguards

  • Schema drift: validate required keys, quarantine unexpected payloads and alert on a sharp drop in item counts.
  • Endpoint changes: keep the base URL configurable; do not bury paths in many modules.
  • Duplicates: deduplicate by the listing identifier plus source, then handle identifier reuse as a separate review case.
  • Stale records: mark records inactive after an authorized refresh indicates removal; never infer deletion from one timeout.
  • Privacy: restrict coordinates, contact details and descriptions to staff who need them, and encrypt authorized exports.
  • Load: schedule jobs, cap concurrency and honor explicit blocks or error responses.

Common failures and fixes

404 or an HTML page instead of JSON

The undocumented path may have moved, or a redirect may require a different URL. Inspect the final URL and Content-Type, compare with the current community implementation, and stop rather than scraping the HTML fallback blindly.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

400 or empty results

Check that region, category and transaction identifiers came from the filter response and that lang, limit and offset are valid. Test one filter at a time and log the complete query without credentials.

429, 403 or repeated timeouts

Reduce concurrency, increase the delay, honor Retry-After when present and stop the job if blocking continues. Do not rotate identities to evade controls; seek an authorized interface.

Fields disappear or change type

Treat the response as unversioned. Use nullable parsing, retain a schema version in your own database and quarantine records that fail validation for manual review.

Offset returns overlapping or missing records

Listings can change while you page. Partition smaller queries, checkpoint each partition and deduplicate by identifier. For reproducible analytics, store retrieval timestamps and report that the source is a moving index.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If your deliverable is a screenshot or PDF of an authorized page—not a substitute for permission to copy Sreality content—ScreenshotNeo provides a single HTTP request. It accepts consent banners before capture and removes more than 60 known consent platforms, newsletter popups and chat widgets; each step can be disabled. Bot checks, blank pages, timeouts, failed loads and cache hits are not billed, and responses identify the page verdict and billing status in headers. Its MCP server lets Claude, Cursor and other MCP clients call take_screenshot, get_page_info and capture_pdf.

See the ScreenshotNeo API documentation for all options, including full-page and selector captures, device and retina settings, PDF controls, custom headers and cookies, waits, blocking rules, caching, signed links, asynchronous webhooks and bulk capture.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

There is a free allowance of 1,000 shots per month with no card. Paid plans start at $5 for 3,000 shots; every feature is on every plan. Create a free ScreenshotNeo account.

Decision checklist before deployment

  • Have you confirmed that your intended collection and downstream use are authorized by Seznam?
  • Are you using the current documented interface available to your account, rather than relying on an old community path?
  • Can you delete listings, descriptions, coordinates and photos on request or at the end of the approved period?
  • Do your rate limits, checkpoints and retries prevent avoidable load?
  • Does your parser tolerate missing fields and endpoint changes?
  • Have you separated internal analysis from any public display or redistribution?

Frequently Asked Questions

Does Sreality provide an official public read API for arbitrary searches?

The sources reviewed do not establish one. Community projects document working endpoints, while Seznam’s located terms describe selected account and import interfaces rather than a general public read API.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Can I republish photos returned by an endpoint?

Not without the required consent. Sreality’s site expressly conditions taking over, distributing or otherwise making listings and photographs available on Seznam.cz consent.

Is the 10,000 offset a guaranteed limit?

No. It is a limit reported by one community guide and should be rechecked against current behavior.

What should I do if I need authorized bulk data?

Contact Seznam, explain the fields, volume, retention and display purpose, and use the interface or agreement they approve.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Read next

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.