Methodology and Motivation


Before the establishment of Numbeo in April 2009, no internet database was available for free personal use that allowed users to easily compare the cost of living across the world with structured data, indices and advanced tools.

Another cost of living reports that existed before Numbeo had hidden or expensive data behind their research, with limited city coverage. They relied on manually collected data, which process of gathering is inherently prone to errors, and without insights into reliability and accuracy. Factors such as seasonal price fluctuations (i.e. cheaper fruits and vegetables during the summer), varying prices at different stores and restaurants, different pricing for similar items within the same store, temporary goods shortages, and the possibility of human error during data collection posed challenges to scaling up such research.

Pre-2009 free reports provided only indices, and that is insufficient for personal estimates due to variations in individual lifestyles, including family size, dining preferences (home or restaurants), housing choices (area, buy or rent), transportation modes, and potential tobacco and alcohol consumption, to name some of them.

Just before the Great Recession (World Economic Crysis of 2007-2009), the founder of Numbeo noticed the impact of the real estate bubble on people's relocation decisions and believed that the world needed more tools to analyze it.

Consequently, Numbeo was established in 2009 to provide comprehensive information on consumer prices, allowing individuals to estimate their own expenses. It employs crowdsourcing to gather respectable data and provides a platform for diverse systematic research on its vast dataset.



Data Collection and Processing Techniques

Numbeo's data collection process involves a combination of user-generated input and manually gathered information from reputable sources such as supermarket and taxi company websites, and governmental institutions. The manually collected data from each source are entered twice yearly and given a weight that is three times higher than user-generated input to improve the reliability of the data.

Numbeo performs both automatic and semi-automatic filters (algorithms) to reduce noise in the collected data.

Numbeo restricts entries from specific IP addresses that are identified as spammers, including public proxies and Tor nodes.

Some of our automatic filters use a combination of user behavior and previous data for the specific city/country to identify the likelihood of a certain input being spam. Currently, Numbeo uses more than 30 sophisticated filters to ensure data accuracy and integrity. The efficacy of each filter is enhanced as more inputs are included.

Numbeo's advanced filters are designed to eliminate bias in the algorithm development process. For instance, one filter examines previously discarded data (classified as spam) and reintegrates it into the calculation if it finds that a significant subset of this data is statistically relevant. Another algorithm used to identify irregular spam data works as follows: if a single item in a city has a high number of data classified as spam, and those data have a relatively small standard deviation from users who are not classified as spammers, it suggests that these data are probably misclassified, and the algorithm corrects the classification accordingly. These filters are crucial to ensure data accuracy and objectivity.

Numbeo's filtering and algorithmic technology is complex and proprietary, which limits our ability to discuss other methods in detail. In summary, Numbeo utilizes heuristic technology to maintain data quality, and regularly removes statistically improbable or incorrect data using existing data as a benchmark.

Numbeo archives the values of its old data for historical purposes. By default, data older than 12 months is removed, but for popular cities, this time frame can be reduced to 3 months. If fresh data are not available, Numbeo may use data up to 18 months old, but only if our indicators suggest that inflation is low in that country.

Numbeo collects and uses feedback from users to improve the methodology and data quality.

Aggregating Data for a Country

To compile data for a country, we utilize all the entries (from all cities) to calculate average data for that country. It should be noted that this is different process than from calculating aggregated data for all cities in the country. Therefore, in calculating country-level data, we weigh each city by the number of contributors. As there are usually more inputs for a country than for a city, the aggregate data shown at a country level generally consists of more data points.

Calculating Indices

You can find the definitions of the indices used in the cost of living section of the website by clicking on the Cost of living indices explanation link.

Numbeo's Cost of Living Index is calculated based on our estimated average expenses for a four-person family in a specific city. Please note that the weights used in our calculation may change over time. Currently, the weights used are as follows:

MariaDB [livingcost]> select name, category, cpi_factor as cost_of_living_factor, rent_factor from item where cpi_factor > 0 or rent_factor > 0 order by category, relative_id;
| name                                                                     | category            | cost_of_living_factor | rent_factor |
| 1 Pair of Jeans (Levis 501 Or Similar)                                   | Clothing And Shoes  |                  0.35 |           0 |
| 1 Summer Dress in a Chain Store (Zara, H&M, ...)                         | Clothing And Shoes  |                  0.35 |           0 |
| 1 Pair of Nike Running Shoes (Mid-Range)                                 | Clothing And Shoes  |                  0.35 |           0 |
| 1 Pair of Men Leather Business Shoes                                     | Clothing And Shoes  |                  0.35 |           0 |
| Milk (regular), (1 liter)                                                | Markets             |                    25 |           0 |
| Loaf of Fresh White Bread (500g)                                         | Markets             |                    31 |           0 |
| Rice (white), (1kg)                                                      | Markets             |                    14 |           0 |
| Eggs (regular) (12)                                                      | Markets             |                    20 |           0 |
| Local Cheese (1kg)                                                       | Markets             |                    12 |           0 |
| Chicken Breasts (Boneless, Skinless), (1kg)                              | Markets             |                    15 |           0 |
| Beef Round (1kg) (or Equivalent Back Leg Red Meat)                       | Markets             |                    15 |           0 |
| Apples (1kg)                                                             | Markets             |                    31 |           0 |
| Banana (1kg)                                                             | Markets             |                    25 |           0 |
| Oranges (1kg)                                                            | Markets             |                    30 |           0 |
| Tomato (1kg)                                                             | Markets             |                    22 |           0 |
| Potato (1kg)                                                             | Markets             |                    24 |           0 |
| Onion (1kg)                                                              | Markets             |                    10 |           0 |
| Lettuce (1 head)                                                         | Markets             |                    18 |           0 |
| Water (1.5 liter bottle)                                                 | Markets             |                    30 |           0 |
| Bottle of Wine (Mid-Range)                                               | Markets             |                     4 |           0 |
| Domestic Beer (0.5 liter bottle)                                         | Markets             |                     6 |           0 |
| Imported Beer (0.33 liter bottle)                                        | Markets             |                     6 |           0 |
| Cigarettes 20 Pack (Marlboro)                                            | Markets             |                    15 |           0 |
| Apartment (1 bedroom) in City Centre                                     | Rent Per Month      |                     0 |        0.25 |
| Apartment (1 bedroom) Outside of Centre                                  | Rent Per Month      |                     0 |        0.25 |
| Apartment (3 bedrooms) in City Centre                                    | Rent Per Month      |                     0 |        0.25 |
| Apartment (3 bedrooms) Outside of Centre                                 | Rent Per Month      |                     0 |        0.25 |
| Meal, Inexpensive Restaurant                                             | Restaurants         |                    16 |           0 |
| Meal for 2 People, Mid-range Restaurant, Three-course                    | Restaurants         |                   3.5 |           0 |
| McMeal at McDonalds (or Equivalent Combo Meal)                           | Restaurants         |                     6 |           0 |
| Domestic Beer (0.5 liter draught)                                        | Restaurants         |                     5 |           0 |
| Imported Beer (0.33 liter bottle)                                        | Restaurants         |                     5 |           0 |
| Cappuccino (regular)                                                     | Restaurants         |                    15 |           0 |
| Coke/Pepsi (0.33 liter bottle)                                           | Restaurants         |                     6 |           0 |
| Water (0.33 liter bottle)                                                | Restaurants         |                     6 |           0 |
| Fitness Club, Monthly Fee for 1 Adult                                    | Sports And Leisure  |                   2.3 |           0 |
| Tennis Court Rent (1 Hour on Weekend)                                    | Sports And Leisure  |                     3 |           0 |
| Cinema, International Release, 1 Seat                                    | Sports And Leisure  |                     6 |           0 |
| One-way Ticket (Local Transport)                                         | Transportation      |                    20 |           0 |
| Monthly Pass (Regular Price)                                             | Transportation      |                   1.5 |           0 |
| Taxi Start (Normal Tariff)                                               | Transportation      |                     5 |           0 |
| Taxi 1km (Normal Tariff)                                                 | Transportation      |                    20 |           0 |
| Taxi 1hour Waiting (Normal Tariff)                                       | Transportation      |                   0.7 |           0 |
| Gasoline (1 liter)                                                       | Transportation      |                    60 |           0 |
| Volkswagen Golf 1.4 90 KW Trendline (Or Equivalent New Car)              | Transportation      |                0.0035 |           0 |
| Toyota Corolla 1.6l 97kW Comfort (Or Equivalent New Car)                 | Transportation      |                0.0035 |           0 |
| Basic (Electricity, Heating, Cooling, Water, Garbage) for 85m2 Apartment | Utilities (Monthly) |                     1 |           0 |
| 1 min. of Prepaid Mobile Tariff Local (No Discounts or Plans)            | Utilities (Monthly) |                   320 |           0 |
| Internet (60 Mbps or More, Unlimited Data, Cable/ADSL)                   | Utilities (Monthly) |                     1 |           0 |

The following formula has been used to calculate Local Purchasing Power:

      Local_Puchasing_Power_Index = (Average_Disposable_Salary(This_City) / BasketConsumerPlusRent(This_City)) / (Average_Disposable_Salary(New_York) / BasketConsumerPlusRent(New_York))
      BasketConsumerPlusRent(City) = sum_of (Price_in_the_city * (cost_of_living_factor + rent_factor))


Numbeo utilizes multiple currency feeds, including the European Central Bank feed, to update its internal currency exchange rates almost every hour. For each user input, Numbeo stores the value in EUR, USD, and the currency of the input, using the current exchange rate. When calculating averages, Numbeo chooses currency to use based on currency stability and the predominant currency in the country, in order to minimize errors in cross-currency comparisons.

To display historical data, Numbeo uses monthly historical exchange rates to calculate data based on the mid-month currency exchange rate. If end-users choose a custom display currency for showing historical data in a given year, the mid-year currency exchange rate is used to calculate the displayed data.


Numbeo collects data with included sales taxes like GST and VAT. When it comes to average salary data, it collects the value after income taxes. These figures are utilized directly to estimate local purchasing power.

Data Archiving Policy

Numbeo utilizes an adaptive archive policy for its data.

If an item has had more than 153 contributors in the past 3 months, we archive data that is more than 3 months old.
If an item has had more than 123 contributors in the past 6 months, we archive data that is more than 6 months old.
There are additional waterfall rules in place.

In most cases, we use data that is no more than 12 months old. However, In instances where we have a low number of contributors, we may utilize older data to present information, as it is preferable to provide even data that is 24 months old than to have no data at all. Other sections on the website that utilize the same data set follow the same data archiving policy.

It is important to note that some other sections of the website may utilize different data archiving policies. We regularly move old data to archives several times per month, which can be accessed through our API.

Cartographic Policy

Our cartographic policy is of portraying the world from a de facto point of view; that is, to portray to the best of our judgment the current reality. It's important to note that some of our partners may have different cartographic policies, and these differences may be reflected in the software used on our website.

Data Privacy

We collect and process personal information from our users, such as email addresses, in order to provide them with a personalized experience and to improve our services. We also collect non-personal information such as IP addresses and browser types, which are used for statistical purposes and to help diagnose problems with our servers.

We store all personal information on secure servers and take reasonable precautions to protect it from unauthorized access, disclosure, alteration, or destruction. We do not sell or rent personal information to third parties, and we only share it with third-party service providers who need the information to perform services on our behalf and who are bound by confidentiality agreements.

We may also disclose personal information if we are required to do so by law or in response to a court order or other legal process.

We provide users with the ability to update or delete their personal information, and we honor all requests to do so. We also provide users with the ability to opt out of receiving promotional communications from us.

Overall, Numbeo is committed to protecting the privacy of our users and complying with all applicable privacy laws and regulations. We regularly review and update our privacy policies and practices to ensure that we are providing the highest level of privacy protection possible.

More details about our privacy policy can be found here.

More Information

If you need more information, please Contact Us.