Free · OpenStreetMap · Cambodia

Address lookup for Cambodia, built in Phnom Penh.

Forward and reverse geocoding on open data, with official commune and district codes attached. Khmer and Latin. 25,000 requests a day, free.

Read the docs

Sign in with Google and your key works in under a minute. No cloud project, no approval, no waiting.

Three reasons to use this one

~110ms

Close to you

Median reverse lookup, measured from Phnom Penh. Two to five times quicker than what we were using before.

25,000/day

A free tier you can build on

Every day, not once. Most free geocoding gives you a fixed pot of requests and then throttles you to a crawl for good.

91%

Official codes, not just names

Results carry the government province, district and commune codes, resolved from the coordinate against the official boundary layer for 91% of the points we tested — a different measurement from the OpenStreetMap address coverage below. If you have to reconcile addresses against a ministry’s records or a bank’s, that is the difference between usable and not.

The third one is the point. The first two any provider could copy by renting a server nearby; the Cambodian administrative hierarchy, Khmer name matching and the local coverage work cannot be copied without doing it here.

Built for Khmer, specifically

Names match the way Khmer actually works

ខេត្ត, ក្រុង, ស្រុក, ខណ្ឌ, សង្កាត់, ឃុំ, ភូមិ — the administrative word in front of a place name is not part of the name. We strip it before matching, so សៀមរាប and ក្រុងសៀមរាប resolve to the same district instead of looking like two places.

Romanisation is a guess, so we do not rely on it

One source writes Daun Penh, another Doun Penh, and both are reasonable. Matching runs on Khmer script first, where both sides agree exactly, and falls back to a tolerant Latin match only inside a district already established.

Why this exists

Cambodia has no free, locally-run geocoding API. The usual answer is a global provider that wants a Cloud project and an international card before the first request — a barrier that has nothing to do with price, and that a student in Phnom Penh simply cannot clear.

We built this for our own product first. Opening it costs us little and gives Khmer developers something that did not exist.

What you get

  • Reverse geocoding: coordinates to a structured address.
  • Forward search: place names in Khmer or Latin script.
  • Commune, district and province from the official hierarchy.
  • A refusal with a reset time when you hit a limit — never a silently truncated answer.

See what comes back

Real answers from this service, for real places. Switch script to see the same address in Khmer and Latin.

GET /reverse?lat=11.5691&lon=104.9212

ហាងថ្នាំជក់រ៉ូលីង, ផ្លូវ ១៣៦, សង្កាត់ផ្សារថ្មីទី ២, ខណ្ឌដូនពេញ, រាជធានីភ្នំពេញ, ព្រះរាជាណាចក្រ​កម្ពុជា

Commune
120202ផ្សារថ្មីទី ២
District
1202
Province
12
Postcode
120202

Address from OpenStreetMap. Codes from the official 2025 administrative list, matched to the commune boundary the coordinate falls inside.

Or search for it

The same place, typed in each script. What matters is not that both return something — it is that both return the same OpenStreetMap object, so the id is shown alongside.

ខ្មែរអង្គរវត្ត

អង្គរវត្ត, ប្រាសាទអង្គរវត្ត ស្ពានហាល, ក្រុងសៀមរាប, សៀមរាប, ខេត្តសៀមរាប, 171253, ព្រះរាជាណាចក្រកម្ពុជា

ENAngkor Wat

Angkor Wat, West Entrance Causeway;Wat Spean Harl (Ancient Bridge), Siem Reap, 171253, Cambodia

Same objectway/1113380295
ខ្មែរផ្សារធំថ្មី

ផ្សារធំថ្មី, វិថី ខេមរៈភូមិន្ធ (១៣០), សង្កាត់ផ្សារថ្មីទី ១, ខណ្ឌដូនពេញ, រាជធានីភ្នំពេញ, 120201, ព្រះរាជាណាចក្រកម្ពុជា

ENCentral Market Phnom Penh

Central Market, Khemarak Phoumin Avenue (Street 130), Sangkat Phsar Thmey Ti Muoy, Khan Daun Penh, Phnom Penh, 120201, Cambodia

Same objectway/377373297
ខ្មែរបាត់ដំបង

ខេត្តបាត់ដំបង, ព្រះរាជាណាចក្រកម្ពុជា

ENBattambang

Battambang, Cambodia

Same objectrelation/6608542
ខ្មែរសៀមរាប

ក្រុងសៀមរាប, សៀមរាប, ខេត្តសៀមរាប, 123456, ព្រះរាជាណាចក្រកម្ពុជា

ENSiem Reap

Siem Reap, 123456, Cambodia

Same objectnode/257838557

One request

curl "https://geo.checkinme.app/reverse?\
lat=11.5691&lon=104.9212&format=jsonv2" \
  -H "X-Api-Key: geo_..."
{
  "display_name": "Samdech Sangkhak Neayok Souk (Street 136),
                   Sangkat Phsar Thmey Ti Pir, Khan Daun Penh,
                   Phnom Penh, 120202, Cambodia",
  "address": {
    "road": "Samdech Sangkhak Neayok Souk (Street 136)",
    "village": "Sangkat Phsar Thmey Ti Pir",
    "commune": "Phsar Thmei Ti Pir",
    "district": "Khan Daun Penh",
    "province": "Phnom Penh",
    "postcode": "120202",
    "country_code": "kh"
  },
  "official": {
    "commune_code": "120202",
    "district_code": "1202",
    "province_code": "12",
    "confirmed": true
  },
  "licence": "Data © OpenStreetMap contributors, ODbL 1.0"
}

What it does not know yet

Worth knowing before you build on it. Administrative boundaries in Cambodia are mapped well. Streets and villages — the part a person recognises as their address — often are not. Measured across 200,000 real lookups:

District99.1%
Postcode57.3%
Commune51.3%
Road47.5%
Village26.8%

This is a gap in OpenStreetMap, not a bug in the service, and the honest fix is mapping. If an address comes back wrong, correct it in OSM and everyone’s answer improves, ours included.

Free tier, in full

  • 25,000 requests per day
  • 10 requests per second sustained, burst 30
  • Up to 5 keys, one per project
  • Attribution required — it is the licence

Compare all plans