DEV Community

Cover image for Report a listing price sample with its currency and denominator intact
Tim Zinin
Tim Zinin

Posted on

Report a listing price sample with its currency and denominator intact

An average asking price can look precise while mixing rental listings, sale listings and several currencies. The problem is not solved by adding more decimal places. The report needs a declared market slice, a native currency and the sample counts that actually contributed to each statistic.

Real Estate Price Index collects bounded samples from supported city sources and returns city-level asking-price observations. These are listing prices, not completed-sale valuations or appraisals. A useful dashboard keeps that distinction in its title and export schema.

Make the collection scope inspectable

This is the installed public input example. It requests bounded samples for two cities and does not claim that the sources are currently available or representative. No fresh listing collection was performed for this article.

{
  "cities": [
    "tbilisi",
    "vienna"
  ],
  "max_items_per_city": 20,
  "max_pages_per_city": 1,
  "max_concurrency": 2
}
Enter fullscreen mode Exit fullscreen mode

Each city has a source, native currency and default market slice. Vienna uses apartments for sale, while the current Tbilisi slice includes property and deal types more broadly. A comparison that omits those differences can mislead even if each arithmetic result is correct. Keep source_portal, deal_type and property_type with the numbers.

Separate currency filtering from conversion

The installed aggregation requires a listing to declare the city's exact native currency. Missing currency and explicit mismatches are excluded instead of inferred. currency_filtered_rows and currency_missing_rows explain the exclusions. A row with an attractive price and unknown unit should not sneak into the denominator.

The Actor does not convert currencies. If you later present cities in a common unit, save the rate source, timestamp and conversion policy separately, and retain the original native figures. Do not apply the current rate silently to a historical observation and then describe the resulting difference as a change in the property market.

Use the right denominator for area statistics

At least five native-currency prices are needed for a city index. Smaller samples keep statistics unavailable rather than returning a confident median from too little data. Price per square meter has its own sample because some listings do not publish usable area.

Export sample_size and sample_size_price_per_sqm as different columns. A median asking price based on twenty listings and a per-area median based on five listings are not the same measurement. Missing area cannot be replaced with zero, and the median price divided by median area is not automatically the median of listing-level price-per-area observations.

Distinguish bounded collection from a broken scan

A source-confirmed complete scan is required for a paid index. A sufficiently large but partial scan remains free source_partial evidence; an undersized one is insufficient_sample. Preserve these reasons and the final summary's missing and partial cities in your report.

The source sample is bounded by item and page settings. Completeness of the configured scan does not mean that every listing in the city was observed. Keep the collection limits with the snapshot, especially when comparing successive reports. A changed item cap or portal mix can change the sample without any underlying price movement. For an acceptance fixture, test missing and mismatched currencies, too few valid prices and missing areas before using the result in a city comparison.

Price and verification scope

FREE-tier event prices read on 24 October 2026 are $0.005 for apify-actor-start and $0.01 for result-found. Start-event count can depend on allocated memory; other account tiers have their own rates. Check the listing's current billable unit and the platform's run spending limit before executing an example. Input row or result caps are separate from Max total charge. A free diagnostic does not necessarily remove the platform start charge.

This article is pinned to public latest build 0.1.2 (fnqaxC4zVnvbPqqtc) at the recorded read time. Source, input and pricing were read from Apify; no new cloud build or run was started. The supplied example and any synthetic local checks do not establish current source facts, cloud delivery or customer outcomes.

Inspect the Actor's current contract and pricing.

AI-assisted writing. Source contracts and verification limits are documented above.

Top comments (0)