PSGC Regions API Documentation

Core entry points to enumerate regions and traverse downward to provinces, cities, municipalities, sub‑municipalities (where available) and barangays. Use region code values in URLs (stable identifiers) rather than names.

GET https://psgc.cloud/api/regions

List regions

Optional future params: q (search), pagination (if dataset grows).
GET https://psgc.cloud/api/regions/{code}

Show a single region

GET https://psgc.cloud/api/regions/{code}/provinces

Nested provinces

GET https://psgc.cloud/api/regions/{code}/cities

All cities in region (direct)

GET https://psgc.cloud/api/regions/{code}/municipalities

All municipalities in region (direct)

GET https://psgc.cloud/api/regions/{code}/cities-municipalities

Combined cities & municipalities

GET https://psgc.cloud/api/regions/{code}/sub-municipalities

Sub-municipality layer (if supported)

GET https://psgc.cloud/api/regions/{code}/barangays

Flattened barangays in region

Code Samples

List Regions

curl -s https://api.example.com/regions
fetch('https://api.example.com/regions')
  .then(r => r.json())
  .then(console.log)
axios.get('https://api.example.com/regions')
  .then(r => console.log(r.data))
<?php
$client = new \GuzzleHttp\Client(['base_uri' => 'https://api.example.com']);
$res = $client->get('/regions');
$body = json_decode($res->getBody(), true);
print_r($body);

Show Region

curl -s https://api.example.com/regions/0200000000
fetch('https://api.example.com/regions/0200000000')
  .then(r => r.json())
  .then(console.log)
axios.get('https://api.example.com/regions/0200000000')
  .then(r => console.log(r.data))
<?php
$client = new \GuzzleHttp\Client(['base_uri' => 'https://api.example.com']);
$res = $client->get('/regions/0200000000');
$body = json_decode($res->getBody(), true);
print_r($body);

Region Provinces

curl -s https://api.example.com/regions/0200000000/provinces
fetch('https://api.example.com/regions/0200000000/provinces')
  .then(r => r.json())
  .then(console.log)
axios.get('https://api.example.com/regions/0200000000/provinces')
  .then(r => console.log(r.data))
<?php
$client = new \GuzzleHttp\Client(['base_uri' => 'https://api.example.com']);
$res = $client->get('/regions/0200000000/provinces');
$body = json_decode($res->getBody(), true);
print_r($body);

Region Cities+Municipalities

curl -s https://api.example.com/regions/0200000000/cities-municipalities
fetch('https://api.example.com/regions/0200000000/cities-municipalities')
  .then(r => r.json())
  .then(console.log)
axios.get('https://api.example.com/regions/0200000000/cities-municipalities')
  .then(r => console.log(r.data))
<?php
$client = new \GuzzleHttp\Client(['base_uri' => 'https://api.example.com']);
$res = $client->get('/regions/0200000000/cities-municipalities');
$body = json_decode($res->getBody(), true);
print_r($body);