You choose the context
The category, the listing and the account you are entitled to use.
Market and listings analysis Platform
Index9 is a tool for those who sell on 999.md: category analysis, listing assessment and preparation of posting or reposting actions. The available data and recommendations should be considered together with their source and period.

Index9
The category, the listing and the account you are entitled to use.
You compare the available information about market and visibility.
You review the proposed changes before publication or automation.
Exploring the market and improving the presentation of an offer.
Organising analysis and posting activity.
A starting point for assessing a listings portfolio.
Index9 is a distinct MEGA product from 999.md. The availability of each function is confirmed on the platform; recommendations do not guarantee a sale.
Index9 in detail
Index9 is built on top of 999.md, the largest classifieds marketplace in Moldova, and answers two different questions. First: how much an apartment is worth, compared with what is actually being sold now in the same sector. Second: which direction the market is moving in for each category, day by day.
The data comes from two places, under different regimes. Public listings and statistics are read through the public GraphQL API of 999.md, without authentication, with an identified user agent and 1.5 seconds between requests. Operations on a user's own listings go through the platform's official partner API, with the account key.
The core rule of the valuation engine is written in code as a principle: never a fabricated figure. Below three comparables, it does not return an estimate, but the status "unavailable". Between three and eight, it returns with the label "thin data" and low confidence. An evaluator that always gives a number is more convenient and less useful.
An index with base 100 and limits 0–200, calculated from four normalised components in the interval [-1, +1]: ad volume speed, median price change, demand signal and a macro layer. The formula is explicit in code: 100 + 50 × the average of the four. The overall index is the weighted average by active listing volume of each category.
For real estate, the €/m² median is calculated by segment — category × sector × offer type (sale or rent) — not by a category average that would mix apartments with commercial spaces and sales with rentals. Each figure comes with the number of observations, the 25th and 75th quartiles, dispersion as a percentage of the median, freshness in days and a confidence level.
An ad to be valued is compared with up to 200 comparables from the last 365 days, filtered by category, subcategory, offer type and, optionally, sector. Similarity is calculated on each available variable — area, floor, rooms, condition, location — without invented coefficients per variable: a missing variable on one side does not penalise, it simply does not contribute.
The €/m² series of a segment is Tukey-trimmed: values more than 1.5 × the interquartile range outside the quartiles are removed. A flat listed by mistake at ten times the market price does not move the median.
From the two medians of the same segment — rent €/m²/month and sale price €/m² — the gross annual yield is derived. It is returned only if both medians exist and the result falls within a plausible range; otherwise, null.
The crawler saves not only which ads exist, but which position they appear in in the official listing — the first 100 per category, in two pages of 50. This makes the platform's ordering algorithm visible, and the effect of a republish or a booster, measured, not assumed.
The BNM official rate (public XML, daily at 08:00), Open-Meteo weather for Chisinau (hourly), and ANRE prices for 95 petrol and diesel (weekly, on Mondays). These are inputs to the macro component of the index, not decoration.
Data and operation
From exploration to implementation
It starts from a category and, for real estate, from a specific segment: district, type of offer. An answer on “real estate” in general mixes things that cannot be compared.
The crawler gathers listings every hour, and enrichment populates comparable attributes. Until the segment has at least eight comparables in the recency window, the platform will say “thin data” or “unavailable” — and it is right to say so.
Reposting, promotion and portfolio analysis require the client’s 999.md account API key. Without it, only the market analysis part remains, which does not need an account.
Publishing, deleting, changing the price and spending budget are actions that move money or reputation. What runs on its own and what goes through human approval is decided explicitly at installation, not implicitly.
From the public 999.md GraphQL API — the same queries their site uses, without authentication and without bypassing any protection. Our agent identifies itself by name with a contact address, waits 1.5 seconds between requests and gives up after 20 seconds. For operations on a client’s adverts we use the official partner API, with their key.
Real estate is one of the five categories read every hour; the other 18 categories, every 4 hours. The category index is recalculated at minute 5 of each hour, the daily one at 06:00. Market statistics refer by default to the last 120 days, and comparables for an evaluation to the last 365 — and each result comes with its freshness in days, so it is clear whether the most recent comparable is from a week ago or four months ago.
A single row is written per advert identifier: the reappearance of the same advert updates the row and capture date, rather than creating a duplicate. What remains outside this is the case where the same flat is posted under two distinct identifiers — there we do not deduplicate by content. That is why the €/m² series is Tukey-trimmed (values beyond 1.5 × the interquartile range are cut off) and why the segment dispersion is published next to the median: if dispersion is high, the figure must be read with reserve, and we say that first.
You do not get a number. Below three comparables, the result is “unavailable” with a null estimate. Between three and eight, you get the result marked “thin data”, with a wide interval and low confidence. Above eight, it is a normal result. The thresholds are constant in code, not a communication policy.
100 is neutral. The formula is 100 + 50 × the average of four components, each normalised to [-1, +1], with the result limited to the 0–200 interval. The components are: volume speed (the z-score of adverts per hour versus the 30-day average), median price change, the demand signal and a macro layer. The overall index is the category average, weighted by the volume of active adverts.
Three Moldovan public sources: the official BNM exchange rate taken from their daily XML, weather from Open-Meteo for Chișinău coordinates, every hour, and ANRE prices for 95 petrol and diesel, read weekly on Mondays. It is not decoration: these are numerical inputs into one of the four components of the index.
No. Index9 is a Mega Promoting product built on public APIs and the 999.md partner API. We are not affiliated with the platform and do not speak on its behalf.
No, and no one can. What it does is show where the offer stands relative to its real segment — median €/m² by sector and offer type, with quartiles and dispersion — and how the listing position moves. The pricing and presentation decision remains with the seller.
Illustrative example
A use case, without client data or attributed commercial results.
A seller is requesting an appraisal for a 62 m² apartment, 4th floor, in Botanica sector, for sale.
The latest EUR/MDL rate is read from BNM. From the comparable database, all listings in the same category and subcategory, sale type, Botanica sector, captured in the last 365 days are selected — up to 200, ordered by recency. Each comparable is assigned a similarity score calculated across all common variables: area, floor, rooms, condition. Separately, the segment median €/m² from the last 120 days is read, with the Tukey-trimmed series.
If the segment has at least eight comparables: median €/m², the 25th and 75th quartiles, dispersion as a percentage of the median, the age of the most recent comparable in days and a confidence level derived from these four signals — plus the list of comparables with notable differences marked (area differing by more than 20%, floor differing by more than one, different number of rooms). If it has between three and eight: the same result, marked “thin data”, low confidence. Fewer than three: “unavailable”, no figure.
What is required:The enrichment job must have run on the relevant category, otherwise the comparables base is empty and the response is "unavailable". The valuation reflects the asking prices in adverts, not the transaction prices in contracts — they are two different things, and the latter is not public in Moldova.
Collaboration possibilities
Connecting authorised sources, organising information and reviewing actions by the team, with separate access by role.
We define a pilot around a real process: users, data, integrations, costs and acceptance criteria. Expansion follows after evaluating the result.
We establish the requirements for accessibility, hosting, data protection and interoperability. Any connection to AGE or STISC services requires validation of eligibility, access and approvals.
These are adaptation scenarios, not statements about existing contracts or partnerships. The proposed functions are confirmed within the project scope.
Discuss a pilotAn assistant connected to your business information, in the channels your customers actually write to.
PlatformCronberry brings authoritative sources, conversations and relationships together in one space for research and coordination.
Development & demonstrationsAPI access to AI models through one common interface.
PlatformTell us about your process. Together we decide what is worth building, what we can connect, and how we check the result.