Skip to content

Cities & Municipalities

Philippine cities and municipalities (municities).

GET /v1/municities

Filtering by province is always required.

Returns a paginated JSON envelope by default, or an unpaginated GeoJSON FeatureCollection for that province when format=geojson.

By default the list is geographic so address forms and cascade UIs match how people think about place:

scopeDefaultWhat is included
geographicYesComponent cities & municipalities and HUC/ICC cities hosted in that province (e.g. Cebu City, Lapu-Lapu, Mandaue under province=Cebu)
adminNoOnly LGUs whose admin PSGC parent is the province — excludes highly urbanized cities that are region peers
Terminal window
# Default — geographic (includes hosted HUCs)
curl -H "Authorization: Bearer <token>" \
"https://api.gis.ph/v1/municities?province=Cebu"
# Explicit geographic
curl -H "Authorization: Bearer <token>" \
"https://api.gis.ph/v1/municities?province=Cebu&scope=geographic"
# Strict admin hierarchy (no Cebu City / Lapu-Lapu / Mandaue)
curl -H "Authorization: Bearer <token>" \
"https://api.gis.ph/v1/municities?province=Cebu&scope=admin"

Useful response fields:

FieldDescription
p_codeAdmin parent province code (null for region-level HUC/ICC)
host_province_codeGeographic host province (for HUCs: e.g. Cebu)
city_classHUC, ICC, or omitted/null for component cities
ParameterTypeRequiredDescription
provincestringYesExact (case-insensitive) province name. Required for geojson.
scopegeographic | adminNoMembership model. Default: geographic.
namestringNoStarts-with search for city/municipality name.
pageintegerNoPage number (default: 1). JSON only.
limitintegerNoItems per page (default: 10, max: 100). JSON only.
formatjson | geojsonNoResponse shape. Default json.
outputjson | geojsonNoDeprecated alias of format.
geometrysimple | medium | detailedNoFor json: omit = no geometry. For geojson: defaults to simple.
Terminal window
curl -H "Authorization: Bearer <token>" \
"https://api.gis.ph/v1/municities?province=Bohol&name=Al&limit=2"
{
"data": [
{
"id": 1595,
"name": "Alburquerque",
"type": "Municipal",
"code": "0701201000",
"p_code": "0701200000",
"host_province_code": "0701200000",
"city_class": null,
"province_name": "Bohol",
"scope": "geographic"
}
],
"meta": {
"total": 2,
"page": 1,
"limit": 2,
"totalPages": 1,
"links": {
"self": "https://api.gis.ph/v1/municities?province=Bohol&name=Al&limit=2",
"next": null,
"prev": null
}
},
"error": null
}

Example — GeoJSON map layer (one province)

Section titled “Example — GeoJSON map layer (one province)”
Terminal window
curl -H "Authorization: Bearer <token>" \
"https://api.gis.ph/v1/municities?province=Bohol&format=geojson"
  • Body: FeatureCollection of all matching municities for the active scope
  • Header: Content-Type: application/geo+json
  • Not paginated
  • Missing province400

GET /v1/municities/search

Cross-province text search for autocomplete. JSON only (no format=geojson in v1).

ParameterTypeRequiredDescription
qstringYesSearch query (minimum 2 characters).
limitintegerNoMax results to return (default: 20).
Terminal window
curl -H "Authorization: Bearer <token>" \
"https://api.gis.ph/v1/municities/search?q=Tagbilaran"
{
"data": [
{
"id": 729,
"name": "City of Tagbilaran",
"type": "City",
"code": "0701244000",
"host_province_code": "0701200000",
"province_name": "Bohol"
}
],
"error": null
}

GET /v1/municities/{id}

Returns detailed information about a single city or municipality. {id} is the PSGC code (not the internal serial row id). Prefer the 10-digit form (e.g. 0730600000 for City of Cebu).

ParameterTypeRequiredDescription
idstringYesCity/municipality PSGC code (digits only), e.g. 0701201000 or 0730600000.
ParameterTypeRequiredDescription
formatjson | geojsonNoDefault json. geojson → bare Feature.
geometrysimple | medium | detailed | trueNoBoundary level, or legacy true for nested barangay GeoJSON on JSON responses. For format=geojson, defaults to simple.
Terminal window
curl -H "Authorization: Bearer <token>" \
"https://api.gis.ph/v1/municities/0701201000?format=geojson"
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [ ... ]
},
"properties": {
"id": 1595,
"name": "Alburquerque",
"type": "Municipal",
"code": "0701201000",
"host_province_code": "0701200000",
"province_name": "Bohol"
}
}
Terminal window
curl -H "Authorization: Bearer <token>" \
"https://api.gis.ph/v1/municities/0701201000?geometry=true"

POST /v1/municities/search

Accepts a list of PSGC municity codes and returns matching cities/municipalities. Supports both JSON and GeoJSON output formats.

FieldTypeRequiredDescription
codesstring[]YesList of PSGC city/municipality codes (1–100 items).
geometrystringNoGeometry level to include: simple (default), medium, or detailed.
formatstringNoOutput format: json or geojson.
outputstringNoDeprecated alias of format.
Terminal window
curl -X POST \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"codes":["0730600000","0702219000"],"geometry":"simple","format":"geojson"}' \
"https://api.gis.ph/v1/municities/search"
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": { "type": "MultiPolygon", "coordinates": [ ... ] },
"properties": {
"id": 1595,
"name": "Alburquerque",
"code": "0701201000",
"province_name": "Bohol"
}
}
]
}

Example Response (JSON, Legacy fallback when format omitted)

Section titled “Example Response (JSON, Legacy fallback when format omitted)”
[
{
"id": 1595,
"name": "Alburquerque",
"code": "0701201000",
"province_name": "Bohol"
}
]