APAC Open Marketing Database
Version 2026-10-12. Free, no sign-up. Each file has a SHA-256 checksum, and older versions stay available at the same kind of address.
Version 2026-10-12 · free · no sign-up · CC BY 4.0
| File | Contents | Size | SHA-256 |
|---|---|---|---|
| Main database (SQLite) | 22 tables: countries, population, regions, spending, markets | 17 MB | 96f2f150cf58eef0a94f8cf94e8605b5d966e75f0ef1e7a83dc487c0ec5d8a6d |
| Main database (CSV) | Same tables as CSV | 12 MB | e42950f9fc273887ebd1e8f6fde9a1faca20232e327bf6e91490c29507bfb3b6 |
| Cities (SQLite) | 2 tables for 11,422 cities | 21 MB | 0311a3f6f215efa026d669673c546e4830c4e9af6456ba2468ae059a7ea7262a |
| Cities (CSV) | Same tables as CSV | 15 MB | b978b72d886cf4b2cb7acfac518df8636c6b6f2916ed6c84539e958ef001b0ab |
Start here after downloading.
SELECT name_ja, median_age, internet_users_pct, hh_cons_pc_ppp
FROM v_country_latest_wide
WHERE is_core = 1
ORDER BY median_age;SQLSELECT a.name_ja, a.pop_15_34 AS y2025, b.pop_15_34 AS y2035,
ROUND(100.0 * (b.pop_15_34 - a.pop_15_34) / a.pop_15_34, 1) AS change_pct
FROM v_youth_market a
JOIN v_youth_market b ON a.iso3 = b.iso3 AND a.year = 2025 AND b.year = 2035
ORDER BY change_pct DESC;SQLimport sqlite3, pandas as pd, numpy as np
con = sqlite3.connect("aomd_2026-10-12.sqlite")
x = pd.read_sql("SELECT iso3, value AS money FROM country_latest WHERE indicator='hh_cons_pc_ppp'", con)
y = pd.read_sql("""SELECT iso3, value AS online FROM v_category_latest_total
WHERE measure='online_buy_pct'""", con).groupby("iso3").online.mean()
d = x.set_index("iso3").join(y, how="inner").dropna()
slope, intercept = np.polyfit(np.log(d.money), d.online, 1)
print(f"x2 money -> +{slope*np.log(2):.1f} pt online ({len(d)} countries)")PythonSELECT indicator, source_a, source_b, pairs, median_ratio_a_over_b, verdict
FROM source_agreement
ORDER BY ABS(median_ratio_a_over_b - 1) DESC;SQL