In most property markets the currency is a formatting detail. In Argentina it is the first thing you have to get right, because sale prices are quoted in US dollars, rents and building expenses in pesos, and an average taken across the two is a number with no referent.
Why one market has two currencies
Argentina has lived with high inflation for a long time, and the market adapted by pricing durable assets in dollars while keeping recurring payments in pesos. So on the same portal, in the same neighbourhood, a sale listing is quoted in USD and a rental in ARS — and the building expenses attached to that rental, which can be a large share of the real monthly cost, are in pesos too.
The fields that carry it
| Field | What it holds |
|---|---|
price_amount | The asking figure, as published. An offer, never a transaction price. |
price_currency | USD or ARS. The field that makes the amount meaningful. |
price_formatted | Zonaprop's own rendering, kept so the parse can be checked. |
expenses_amount | Monthly building expenses, usually in pesos. |
expenses_currency | Its own currency, because it frequently differs from the price's. |
expenses_reported | Whether expenses were stated at all. |
A listing advertised for both sale and rent carries every operation, so the same property can appear with a dollar sale price and a peso rent — which is the clearest possible demonstration of why one normalised price column would be wrong.
Why the Actor does not convert
Because a conversion is an assumption, and in Argentina it is a contested one. The country has had several simultaneous exchange rates, so “the” rate does not exist as a single number — a converted figure would silently embed whichever one the scraper's author happened to pick, on whichever day the code ran.
Expenses are the other half of a rental's cost
For rentals, expenses_amount is not a footnote. Building expenses in Buenos Aires can be a substantial fraction of the rent, so a rental dataset that ignores them ranks apartments by a cost nobody actually pays.
Use expenses_reported to separate “expenses are zero” from “expenses were not stated”. They are very different things, and treating an unstated figure as zero biases every total downward.
Analysis that survives the currency split
- Filter to one currency before aggregating. Report the row count you dropped, so the reader knows the denominator.
- Compare like with like. Dollar sale prices against dollar sale prices, in the same neighbourhood, same property type, similar area.
- Price per square metre is the comparable unit, not the headline price — and it needs
total_area_m2, which is why area matters as much as price. - If you must convert, publish the rate and its date next to the result. That single sentence is the difference between an analysis and an artefact.
Tracking prices over time
A dollar-quoted series and a peso-quoted series behave completely differently over a year in Argentina: the peso one moves with inflation, the dollar one with the market. Keep them apart and both are informative; merge them and neither is.
Use posting_id as the join key across snapshots, and remember that any one search is truncated — the coverage ceiling means a series built from one broad search is tracking the promoted listings, not the market.



