One offer with its full price history, investment and developer. Use it to see how a flat's asking price changed. Needs offer_id and investment_slug (both come from deweloperuch_get_investment; investment_slug also from deweloperuch_search_investments): offer_id alone is not enough. investment_url and developer_url are the investment's and developer's pages on deweloperuch.pl: give them to the user as links. price_flags (as of today; prices from offer and restored events, a withdrawal ends the price in effect; an archived offer is judged up to the day it was withdrawn): lowest_price_30d and lowest_price_90d are the lowest price in effect over the last 30 and 90 days, including one set before the window; price_changes is the number of price changes; largest_drop_pct and largest_rise_pct are the largest single drop and rise as a % of the previous price; suspicious_reduction=true when the latest drop came within 30 days after a rise and the new price is not below the lowest of the 30 days before it (a 'promotion' after a price increase). These are developers' asking prices, not transaction prices. Two kinds of prices must not be mixed: developers' asking prices (deweloperuch_search_investments, deweloperuch_get_investment, deweloperuch_get_offer, deweloperuch_get_market_statistics), RCN transaction prices (deweloperuch_estimate_property_value, deweloperuch_get_transaction_statistics, deweloperuch_rank_locations, deweloperuch_get_building) — what flats actually sold for, from the Real Estate Price Register. deweloperuch.pl is a free community project queried politely (one request at a time, results cached): if a result is an error starting with STOP, stop using the deweloperuch_* tools, retry nothing, look for no workaround and tell the user that market data is temporarily unavailable. Result shape: { offer_id, name, status ('active' | 'archived'), price? (PLN, asking), currency?, area_m2?, price_per_m2?, price_change_since_start? (PLN; negative = cheaper), price_change_since_start_pct?, creation_date?, last_event_date?, last_change_date?, investment_slug, investment_name, investment_url?, city, city_slug, developer: { developer_slug, name, website?, description? }, developer_url?, price_history: [{ date?, kind ('offer' | 'archived' | 'restored'), price? }], price_flags: { lowest_price_30d?, lowest_price_90d?, price_changes, largest_drop_pct?, largest_rise_pct?, suspicious_reduction }, source } — the list key is price_history, oldest first. A flag with no basis (no drop yet) is omitted.