{
  "schema_version": 1,
  "line": {
    "id": "pnr",
    "code": "PNR",
    "name": "Philippine National Railways",
    "operator": "Philippine National Railways (PNR)",
    "status": "partial",
    "color": "#e8541f"
  },
  "provenance": {
    "generated_on": "2026-10-13",
    "fares_effective_from": null,
    "source_url": "https://www.facebook.com/officialpnrpage",
    "source_note": "PNR's own fare matrices and timetables, posted on its official Facebook page. Each fare table names its own post and effective date.",
    "verified_on": "2026-10-13",
    "verified_note": "Every cell of the three matrices transcribed by hand from PNR's images and checked for symmetry and for rising with distance. The Naga-Lupi Viejo matrix of 5 September 2026 agrees with the 2024 Naga-Sipocot matrix on every shared cell, and PNR's 5 September 2026 Naga-Iriga matrix agrees with the 2024 Naga-Legazpi one, so both are current.",
    "confidence": "operator-published matrices, transcribed and structurally validated"
  },
  "features": {
    "live": false,
    "crowd": false,
    "rider_reports": false,
    "start_ride": false,
    "arrival_alerts": false
  },
  "products": {
    "fare": {
      "label": "Ticket",
      "storage": "tables"
    }
  },
  "modifiers": [
    {
      "id": "concession_student_senior_pwd",
      "label": "Student / Senior Citizen / PWD",
      "type": "percentage",
      "value": -20,
      "requires_user_selection": true,
      "requires": "a valid ID shown at the ticket window",
      "effective_from": null,
      "effective_until": null,
      "stacks": false,
      "last_confirmed": "2026-10-13",
      "source_url": "https://www.facebook.com/photo/?fbid=796309332625416&set=pcb.796309485958734",
      "note": "PNR: 'maaari kayong mag-avail ng 20% discount, ipakita lamang ang inyong ID sa ticket tellers' (21 July 2024). The September 2026 discounted matrices are regular x 0.8 in every cell checked."
    }
  ],
  "stations": [
    {
      "id": "pnr_governor_pascual",
      "slug": "governor-pascual",
      "ordinal": 1,
      "name": "Governor Pascual",
      "full_name": "Governor Pascual",
      "former_names": [],
      "lat": 14.670028,
      "lng": 120.972833,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/6709327266",
      "coordinates_verified_delta_m": 36
    },
    {
      "id": "pnr_caloocan",
      "slug": "caloocan",
      "ordinal": 2,
      "name": "Caloocan",
      "full_name": "Caloocan",
      "former_names": [],
      "lat": 14.656944,
      "lng": 120.973611,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/6008944345",
      "coordinates_verified_delta_m": 29
    },
    {
      "id": "pnr_10th_avenue",
      "slug": "10th-avenue",
      "ordinal": 3,
      "name": "10th Avenue",
      "full_name": "10th Avenue",
      "former_names": [],
      "lat": 14.651597,
      "lng": 120.974869,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/5534998608",
      "coordinates_verified_delta_m": 30
    },
    {
      "id": "pnr_5th_avenue",
      "slug": "5th-avenue",
      "ordinal": 4,
      "name": "5th Avenue",
      "full_name": "5th Avenue",
      "former_names": [],
      "lat": 14.644444,
      "lng": 120.976111,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/2620038861",
      "coordinates_verified_delta_m": 26
    },
    {
      "id": "pnr_solis",
      "slug": "solis",
      "ordinal": 5,
      "name": "Solis",
      "full_name": "Solis",
      "former_names": [],
      "lat": 14.62715,
      "lng": 120.975583,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/5524105757",
      "coordinates_verified_delta_m": 28
    },
    {
      "id": "pnr_tutuban",
      "slug": "tutuban",
      "ordinal": 6,
      "name": "Tutuban",
      "full_name": "Tutuban",
      "former_names": [],
      "lat": 14.6114,
      "lng": 120.9732,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #1 'Tutuban'",
      "coordinates_verified_delta_m": 21
    },
    {
      "id": "pnr_blumentritt",
      "slug": "blumentritt",
      "ordinal": 7,
      "name": "Blumentritt",
      "full_name": "Blumentritt",
      "former_names": [],
      "lat": 14.622592,
      "lng": 120.984783,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/5191404475",
      "coordinates_verified_delta_m": 142
    },
    {
      "id": "pnr_laon_laan",
      "slug": "laon-laan",
      "ordinal": 8,
      "name": "Laon Laan",
      "full_name": "Laon Laan",
      "former_names": [],
      "lat": 14.616792,
      "lng": 120.992647,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #3 'Laon Laan'",
      "coordinates_verified_delta_m": 6
    },
    {
      "id": "pnr_espana",
      "slug": "espana",
      "ordinal": 9,
      "name": "España",
      "full_name": "España",
      "former_names": [],
      "lat": 14.612211,
      "lng": 120.996894,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/800677088",
      "coordinates_verified_delta_m": 7
    },
    {
      "id": "pnr_santa_mesa",
      "slug": "santa-mesa",
      "ordinal": 10,
      "name": "Santa Mesa",
      "full_name": "Santa Mesa",
      "former_names": [],
      "lat": 14.600761,
      "lng": 121.010347,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/4476756499",
      "coordinates_verified_delta_m": 1
    },
    {
      "id": "pnr_pandacan",
      "slug": "pandacan",
      "ordinal": 11,
      "name": "Pandacan",
      "full_name": "Pandacan",
      "former_names": [],
      "lat": 14.5902,
      "lng": 121.008533,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #6 'Pandacan'",
      "coordinates_verified_delta_m": 27
    },
    {
      "id": "pnr_paco",
      "slug": "paco",
      "ordinal": 12,
      "name": "Paco",
      "full_name": "Paco",
      "former_names": [],
      "lat": 14.579167,
      "lng": 120.999167,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #7 'Paco'",
      "coordinates_verified_delta_m": 11
    },
    {
      "id": "pnr_san_andres",
      "slug": "san-andres",
      "ordinal": 13,
      "name": "San Andres",
      "full_name": "San Andres",
      "former_names": [],
      "lat": 14.572944,
      "lng": 120.999625,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/4476714413",
      "coordinates_verified_delta_m": 24
    },
    {
      "id": "pnr_vito_cruz",
      "slug": "vito-cruz",
      "ordinal": 14,
      "name": "Vito Cruz",
      "full_name": "Vito Cruz",
      "former_names": [],
      "lat": 14.5671,
      "lng": 121.002817,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #9 'Vito Cruz'",
      "coordinates_verified_delta_m": 11
    },
    {
      "id": "pnr_dela_rosa",
      "slug": "dela-rosa",
      "ordinal": 15,
      "name": "Dela Rosa",
      "full_name": "Dela Rosa",
      "former_names": [],
      "lat": 14.556206,
      "lng": 121.008683,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/653015348",
      "coordinates_verified_delta_m": 3
    },
    {
      "id": "pnr_pasay_road",
      "slug": "pasay-road",
      "ordinal": 16,
      "name": "Pasay Road",
      "full_name": "Pasay Road",
      "former_names": [],
      "lat": 14.549633,
      "lng": 121.012283,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #11 'Pasay Road'",
      "coordinates_verified_delta_m": 11
    },
    {
      "id": "pnr_edsa",
      "slug": "edsa",
      "ordinal": 17,
      "name": "EDSA",
      "full_name": "EDSA",
      "former_names": [],
      "lat": 14.541758,
      "lng": 121.016497,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #12 'EDSA'",
      "coordinates_verified_delta_m": 14
    },
    {
      "id": "pnr_nichols",
      "slug": "nichols",
      "ordinal": 18,
      "name": "Nichols",
      "full_name": "Nichols",
      "former_names": [],
      "lat": 14.5239,
      "lng": 121.026139,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #13 'Nichols'",
      "coordinates_verified_delta_m": 41
    },
    {
      "id": "pnr_fti",
      "slug": "fti",
      "ordinal": 19,
      "name": "FTI",
      "full_name": "FTI",
      "former_names": [],
      "lat": 14.5068,
      "lng": 121.035364,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #14 'FTI'",
      "coordinates_verified_delta_m": 47
    },
    {
      "id": "pnr_bicutan",
      "slug": "bicutan",
      "ordinal": 20,
      "name": "Bicutan",
      "full_name": "Bicutan",
      "former_names": [],
      "lat": 14.487483,
      "lng": 121.045711,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #15 'Bicutan'",
      "coordinates_verified_delta_m": 64
    },
    {
      "id": "pnr_sucat",
      "slug": "sucat",
      "ordinal": 21,
      "name": "Sucat",
      "full_name": "Sucat",
      "former_names": [],
      "lat": 14.452139,
      "lng": 121.050933,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/4476244487",
      "coordinates_verified_delta_m": 21
    },
    {
      "id": "pnr_alabang",
      "slug": "alabang",
      "ordinal": 22,
      "name": "Alabang",
      "full_name": "Alabang",
      "former_names": [],
      "lat": 14.419572,
      "lng": 121.047675,
      "coordinates_source": "wikipedia",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_muntinlupa",
      "slug": "muntinlupa",
      "ordinal": 23,
      "name": "Muntinlupa",
      "full_name": "Muntinlupa",
      "former_names": [],
      "lat": 14.38951,
      "lng": 121.0475,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/799749806",
      "coordinates_verified_delta_m": 2
    },
    {
      "id": "pnr_san_pedro",
      "slug": "san-pedro",
      "ordinal": 24,
      "name": "San Pedro",
      "full_name": "San Pedro",
      "former_names": [],
      "lat": 14.361667,
      "lng": 121.055278,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #19 'San Pedro'",
      "coordinates_verified_delta_m": 11
    },
    {
      "id": "pnr_pacita_main_gate",
      "slug": "pacita-main-gate",
      "ordinal": 25,
      "name": "Pacita Main Gate",
      "full_name": "Pacita Main Gate",
      "former_names": [],
      "lat": 14.346944,
      "lng": 121.063611,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #20 'Pacita Main Gate'",
      "coordinates_verified_delta_m": 3
    },
    {
      "id": "pnr_golden_city_1",
      "slug": "golden-city-1",
      "ordinal": 26,
      "name": "Golden City 1",
      "full_name": "Golden City 1",
      "former_names": [],
      "lat": 14.33684,
      "lng": 121.075,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #21 'Golden City 1'",
      "coordinates_verified_delta_m": 13
    },
    {
      "id": "pnr_binan",
      "slug": "binan",
      "ordinal": 27,
      "name": "Biñan",
      "full_name": "Biñan",
      "former_names": [],
      "lat": 14.3314,
      "lng": 121.081181,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #22 'Biñan'",
      "coordinates_verified_delta_m": 37
    },
    {
      "id": "pnr_santa_rosa",
      "slug": "santa-rosa",
      "ordinal": 28,
      "name": "Santa Rosa",
      "full_name": "Santa Rosa",
      "former_names": [],
      "lat": 14.3061,
      "lng": 121.1098,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #23 'Sta. Rosa'",
      "coordinates_verified_delta_m": 2
    },
    {
      "id": "pnr_cabuyao",
      "slug": "cabuyao",
      "ordinal": 29,
      "name": "Cabuyao",
      "full_name": "Cabuyao",
      "former_names": [],
      "lat": 14.28,
      "lng": 121.1262,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/2960407927",
      "coordinates_verified_delta_m": 13
    },
    {
      "id": "pnr_mamatid",
      "slug": "mamatid",
      "ordinal": 30,
      "name": "Mamatid",
      "full_name": "Mamatid",
      "former_names": [],
      "lat": 14.2323,
      "lng": 121.1456,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/293633779",
      "coordinates_verified_delta_m": 3
    },
    {
      "id": "pnr_calamba",
      "slug": "calamba",
      "ordinal": 31,
      "name": "Calamba",
      "full_name": "Calamba",
      "former_names": [],
      "lat": 14.20695,
      "lng": 121.158078,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "closed_on": "2025-12-15",
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "legacy2017:data/raw/network.raw.json lines.pnr #26 'Calamba'",
      "coordinates_verified_delta_m": 3
    },
    {
      "id": "pnr_halang_dos",
      "slug": "halang-dos",
      "ordinal": 32,
      "name": "Halang Dos",
      "full_name": "Halang Dos",
      "former_names": [],
      "lat": 14.1954,
      "lng": 121.1608,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/13373860037",
      "coordinates_verified_delta_m": 28
    },
    {
      "id": "pnr_pansol",
      "slug": "pansol",
      "ordinal": 33,
      "name": "Pansol",
      "full_name": "Pansol",
      "former_names": [],
      "lat": 14.1785,
      "lng": 121.1838,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/12915010449",
      "coordinates_verified_delta_m": 18
    },
    {
      "id": "pnr_masili",
      "slug": "masili",
      "ordinal": 34,
      "name": "Masili",
      "full_name": "Masili",
      "former_names": [],
      "lat": 14.178889,
      "lng": 121.200833,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/12915010448",
      "coordinates_verified_delta_m": 23
    },
    {
      "id": "pnr_los_banos",
      "slug": "los-banos",
      "ordinal": 35,
      "name": "Los Baños",
      "full_name": "Los Baños",
      "former_names": [],
      "lat": 14.178056,
      "lng": 121.221389,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/12915368713",
      "coordinates_verified_delta_m": 37
    },
    {
      "id": "pnr_college",
      "slug": "college",
      "ordinal": 36,
      "name": "College",
      "full_name": "College",
      "former_names": [],
      "lat": 14.181667,
      "lng": 121.24,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/12919658422",
      "coordinates_verified_delta_m": 35
    },
    {
      "id": "pnr_irri",
      "slug": "irri",
      "ordinal": 37,
      "name": "IRRI",
      "full_name": "IRRI",
      "former_names": [],
      "lat": 14.1677,
      "lng": 121.25421,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/7029085834",
      "coordinates_verified_delta_m": 3
    },
    {
      "id": "pnr_san_pablo",
      "slug": "san-pablo",
      "ordinal": 38,
      "name": "San Pablo",
      "full_name": "San Pablo",
      "former_names": [],
      "lat": 14.0687,
      "lng": 121.3212,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/11328777533",
      "coordinates_verified_delta_m": 10
    },
    {
      "id": "pnr_tiaong",
      "slug": "tiaong",
      "ordinal": 39,
      "name": "Tiaong (Lalig)",
      "full_name": "Tiaong (Lalig)",
      "former_names": [],
      "lat": 13.981249,
      "lng": 121.327277,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_candelaria",
      "slug": "candelaria",
      "ordinal": 40,
      "name": "Candelaria",
      "full_name": "Candelaria",
      "former_names": [],
      "lat": 13.925698,
      "lng": 121.42527,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_lutucan",
      "slug": "lutucan",
      "ordinal": 41,
      "name": "Lutucan",
      "full_name": "Lutucan",
      "former_names": [],
      "lat": 13.91814,
      "lng": 121.49041,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the barangay Lutucan I (Sariaya) place node (node/9522805337, 1320 m off the track), projected onto the nearest 'PNR South Main Line' rail way/29419566."
    },
    {
      "id": "pnr_sariaya",
      "slug": "sariaya",
      "ordinal": 42,
      "name": "Sariaya",
      "full_name": "Sariaya",
      "former_names": [],
      "lat": 13.912,
      "lng": 121.54372,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the barangay Bucal (Sariaya) place node; Wikipedia lists Sariaya station in Bucal (node/9522805350, 88 m off the track), projected onto the nearest 'PNR South Main Line' rail way/149835443."
    },
    {
      "id": "pnr_lucena",
      "slug": "lucena",
      "ordinal": 43,
      "name": "Lucena",
      "full_name": "Lucena",
      "former_names": [],
      "lat": 13.926964,
      "lng": 121.613072,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/11328817170",
      "coordinates_verified_delta_m": 43
    },
    {
      "id": "pnr_pagbilao",
      "slug": "pagbilao",
      "ordinal": 44,
      "name": "Pagbilao",
      "full_name": "Pagbilao",
      "former_names": [],
      "lat": 13.96937,
      "lng": 121.68899,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Pagbilao town place node (node/198505234, 372 m off the track), projected onto the nearest 'PNR South Main Line' rail way/902151355."
    },
    {
      "id": "pnr_malicboy",
      "slug": "malicboy",
      "ordinal": 45,
      "name": "Malicboy",
      "full_name": "Malicboy",
      "former_names": [],
      "lat": 13.98488,
      "lng": 121.78151,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Kanluran Malicboy (Pagbilao) place node (node/5502979701, 2213 m off the track), projected onto the nearest 'PNR South Main Line' rail way/820304752."
    },
    {
      "id": "pnr_padre_burgos",
      "slug": "padre-burgos",
      "ordinal": 46,
      "name": "Padre Burgos",
      "full_name": "Padre Burgos",
      "former_names": [],
      "lat": 13.92206,
      "lng": 121.813484,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_agdangan",
      "slug": "agdangan",
      "ordinal": 47,
      "name": "Agdangan",
      "full_name": "Agdangan",
      "former_names": [],
      "lat": 13.8774,
      "lng": 121.9175,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/5557797596",
      "coordinates_verified_delta_m": 101
    },
    {
      "id": "pnr_atimonan",
      "slug": "atimonan",
      "ordinal": 48,
      "name": "Atimonan",
      "full_name": "Atimonan",
      "former_names": [],
      "lat": 13.93393,
      "lng": 122.0012,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the barangay Inalig (Atimonan) place node; Wikipedia lists Atimonan station at Inalig (node/9215396292, 24 m off the track), projected onto the nearest 'PNR South Main Line' rail way/200255603."
    },
    {
      "id": "pnr_plaridel",
      "slug": "plaridel",
      "ordinal": 49,
      "name": "Plaridel",
      "full_name": "Plaridel",
      "former_names": [],
      "lat": 13.955683,
      "lng": 122.018158,
      "coordinates_source": "wikipedia",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_gumaca",
      "slug": "gumaca",
      "ordinal": 50,
      "name": "Gumaca",
      "full_name": "Gumaca",
      "former_names": [],
      "lat": 13.9203,
      "lng": 122.10289,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/2492914220",
      "coordinates_verified_delta_m": 2
    },
    {
      "id": "pnr_lopez",
      "slug": "lopez",
      "ordinal": 51,
      "name": "Lopez",
      "full_name": "Lopez",
      "former_names": [],
      "lat": 13.88524,
      "lng": 122.25725,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Lopez town place node (node/29941170, 516 m off the track), projected onto the nearest 'PNR South Main Line' rail way/5150616."
    },
    {
      "id": "pnr_hondagua",
      "slug": "hondagua",
      "ordinal": 52,
      "name": "Hondagua",
      "full_name": "Hondagua",
      "former_names": [],
      "lat": 13.943529,
      "lng": 122.24368,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "PRIMARY IS OSM, NOT WIKIPEDIA (deliberate). The Wikipedia infobox point (13.88773,122.25767, copied to OSM node/5555541585) is ~0.3 km from Lopez poblacion and ~6 km from the OSM building tagged 'PNR Hondagua station' (way/1185162768) at Hondagua on Hondagua Bay. The Wikipedia point is probably Lopez station."
    },
    {
      "id": "pnr_calauag",
      "slug": "calauag",
      "ordinal": 53,
      "name": "Calauag",
      "full_name": "Calauag",
      "former_names": [],
      "lat": 13.9556,
      "lng": 122.29624,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Santa Maria neighbourhood (Calauag) place node; Wikipedia lists Calauag station at Santa Maria (node/8937583085, 13 m off the track), projected onto the nearest 'PNR South Main Line' rail way/680817450."
    },
    {
      "id": "pnr_aloneros",
      "slug": "aloneros",
      "ordinal": 54,
      "name": "Aloneros",
      "full_name": "Aloneros",
      "former_names": [],
      "lat": 13.99232,
      "lng": 122.36765,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Aloneros (Guinayangan) place node (node/5503603671, 200 m off the track), projected onto the nearest 'PNR South Main Line' rail way/313338438."
    },
    {
      "id": "pnr_tagkawayan",
      "slug": "tagkawayan",
      "ordinal": 55,
      "name": "Tagkawayan",
      "full_name": "Tagkawayan",
      "former_names": [],
      "lat": 13.9623,
      "lng": 122.5399,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/2192241744",
      "coordinates_verified_delta_m": 10
    },
    {
      "id": "pnr_del_gallego",
      "slug": "del-gallego",
      "ordinal": 56,
      "name": "Del Gallego",
      "full_name": "Del Gallego",
      "former_names": [],
      "lat": 13.923711,
      "lng": 122.596008,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_ragay",
      "slug": "ragay",
      "ordinal": 57,
      "name": "Ragay",
      "full_name": "Ragay",
      "former_names": [],
      "lat": 13.81519,
      "lng": 122.76762,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/613257819",
      "coordinates_verified_delta_m": 2
    },
    {
      "id": "pnr_lupi_viejo",
      "slug": "lupi-viejo",
      "ordinal": 58,
      "name": "Lupi Viejo",
      "full_name": "Lupi Viejo",
      "former_names": [],
      "lat": 13.7883,
      "lng": 122.90754,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/613160872",
      "coordinates_verified_delta_m": 1
    },
    {
      "id": "pnr_lupi_nuevo",
      "slug": "lupi-nuevo",
      "ordinal": 59,
      "name": "Lupi Nuevo/Tapi",
      "full_name": "Lupi Nuevo/Tapi",
      "former_names": [],
      "lat": 13.784163,
      "lng": 122.92531,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_malaguico",
      "slug": "malaguico",
      "ordinal": 60,
      "name": "Malaguico",
      "full_name": "Malaguico",
      "former_names": [],
      "lat": 13.784569,
      "lng": 122.947949,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_azucena",
      "slug": "azucena",
      "ordinal": 61,
      "name": "Azucena",
      "full_name": "Azucena",
      "former_names": [],
      "lat": 13.774268,
      "lng": 122.961236,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_sipocot",
      "slug": "sipocot",
      "ordinal": 62,
      "name": "Sipocot",
      "full_name": "Sipocot",
      "former_names": [],
      "lat": 13.76901,
      "lng": 122.9776,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/613313670",
      "coordinates_verified_delta_m": 5
    },
    {
      "id": "pnr_awayan",
      "slug": "awayan",
      "ordinal": 63,
      "name": "Awayan",
      "full_name": "Awayan",
      "former_names": [],
      "lat": 13.743563,
      "lng": 122.998806,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_mantalisay",
      "slug": "mantalisay",
      "ordinal": 64,
      "name": "Mantalisay",
      "full_name": "Mantalisay",
      "former_names": [],
      "lat": 13.73251,
      "lng": 123.02146,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Mantalisay (Libmanan) place node (node/5822266278, 315 m off the track), projected onto the nearest 'PNR South Main Line' rail way/430540771."
    },
    {
      "id": "pnr_camambugan",
      "slug": "camambugan",
      "ordinal": 65,
      "name": "Camambugan",
      "full_name": "Camambugan",
      "former_names": [],
      "lat": 13.71404,
      "lng": 123.04059,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Camambugan (Libmanan) place node (node/5822266280, 122 m off the track), projected onto the nearest 'PNR South Main Line' rail way/430540771."
    },
    {
      "id": "pnr_libmanan",
      "slug": "libmanan",
      "ordinal": 66,
      "name": "Libmanan",
      "full_name": "Libmanan",
      "former_names": [],
      "lat": 13.69367,
      "lng": 123.05788,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/615036279",
      "coordinates_verified_delta_m": 6
    },
    {
      "id": "pnr_rongos",
      "slug": "rongos",
      "ordinal": 67,
      "name": "Rongos",
      "full_name": "Rongos",
      "former_names": [],
      "lat": 13.663862,
      "lng": 123.057048,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_malansad",
      "slug": "malansad",
      "ordinal": 68,
      "name": "Malansad",
      "full_name": "Malansad",
      "former_names": [],
      "lat": 13.64898,
      "lng": 123.06052,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Malansad Viejo (Libmanan) place node (node/5822371678, 735 m off the track), projected onto the nearest 'PNR South Main Line' rail way/176649703."
    },
    {
      "id": "pnr_mambulo",
      "slug": "mambulo",
      "ordinal": 69,
      "name": "Mambulo",
      "full_name": "Mambulo",
      "former_names": [],
      "lat": 13.616599,
      "lng": 123.068123,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_pamplona",
      "slug": "pamplona",
      "ordinal": 70,
      "name": "Pamplona",
      "full_name": "Pamplona",
      "former_names": [],
      "lat": 13.59211,
      "lng": 123.0804,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/615646646",
      "coordinates_verified_delta_m": 2
    },
    {
      "id": "pnr_borabod",
      "slug": "borabod",
      "ordinal": 71,
      "name": "Borabod",
      "full_name": "Borabod",
      "former_names": [],
      "lat": 13.591359,
      "lng": 123.103805,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_sampaloc",
      "slug": "sampaloc",
      "ordinal": 72,
      "name": "Sampaloc",
      "full_name": "Sampaloc",
      "former_names": [],
      "lat": 13.59791,
      "lng": 123.13093,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Sampaloc (Gainza) place node (node/14245180130, 388 m off the track), projected onto the nearest 'PNR South Main Line' rail way/616059096."
    },
    {
      "id": "pnr_naga",
      "slug": "naga",
      "ordinal": 73,
      "name": "Naga",
      "full_name": "Naga",
      "former_names": [],
      "lat": 13.619564,
      "lng": 123.1859,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/23662289",
      "coordinates_verified_delta_m": 6
    },
    {
      "id": "pnr_pili",
      "slug": "pili",
      "ordinal": 74,
      "name": "Pili",
      "full_name": "Pili",
      "former_names": [],
      "lat": 13.55516,
      "lng": 123.27215,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/789706166",
      "coordinates_verified_delta_m": 1
    },
    {
      "id": "pnr_baao",
      "slug": "baao",
      "ordinal": 75,
      "name": "Baao",
      "full_name": "Baao",
      "former_names": [],
      "lat": 13.45632,
      "lng": 123.36814,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/11266734466",
      "coordinates_verified_delta_m": 1
    },
    {
      "id": "pnr_iriga",
      "slug": "iriga",
      "ordinal": 76,
      "name": "Iriga",
      "full_name": "Iriga",
      "former_names": [],
      "lat": 13.419514,
      "lng": 123.40963,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": []
    },
    {
      "id": "pnr_lourdes",
      "slug": "lourdes",
      "ordinal": 77,
      "name": "Lourdes (Old)",
      "full_name": "Lourdes (Old)",
      "former_names": [],
      "lat": 13.38575,
      "lng": 123.3874,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Lourdes Elementary School, Santiago Young, Nabua (no OSM place node for barangay Lourdes Old found) -- LOW CONFIDENCE (way/882043033, 77 m off the track), projected onto the nearest 'PNR South Main Line' rail way/617620987."
    },
    {
      "id": "pnr_bato",
      "slug": "bato",
      "ordinal": 78,
      "name": "Bato",
      "full_name": "Bato",
      "former_names": [],
      "lat": 13.35709,
      "lng": 123.36568,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Bato town place node (node/198513584, 223 m off the track), projected onto the nearest 'PNR South Main Line' rail way/617620987."
    },
    {
      "id": "pnr_matacon",
      "slug": "matacon",
      "ordinal": 79,
      "name": "Matacon",
      "full_name": "Matacon",
      "former_names": [],
      "lat": 13.3256,
      "lng": 123.4335,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Matacon (Polangui) place node (node/3067638887, 32 m off the track), projected onto the nearest 'PNR South Main Line' rail way/396906387."
    },
    {
      "id": "pnr_polangui",
      "slug": "polangui",
      "ordinal": 80,
      "name": "Polangui",
      "full_name": "Polangui",
      "former_names": [],
      "lat": 13.28997,
      "lng": 123.49194,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:node/7539940065",
      "coordinates_verified_delta_m": 5
    },
    {
      "id": "pnr_oas",
      "slug": "oas",
      "ordinal": 81,
      "name": "Oas",
      "full_name": "Oas",
      "former_names": [],
      "lat": 13.25967,
      "lng": 123.50147,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Oas town place node (node/198491061, 325 m off the track), projected onto the nearest 'PNR South Main Line' rail way/661371429."
    },
    {
      "id": "pnr_ligao",
      "slug": "ligao",
      "ordinal": 82,
      "name": "Ligao",
      "full_name": "Ligao",
      "former_names": [],
      "lat": 13.242503,
      "lng": 123.541156,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/291856718",
      "coordinates_verified_delta_m": 6
    },
    {
      "id": "pnr_travesia",
      "slug": "travesia",
      "ordinal": 83,
      "name": "Travesia",
      "full_name": "Travesia",
      "former_names": [],
      "lat": 13.190072,
      "lng": 123.615342,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/789743721",
      "coordinates_verified_delta_m": 4
    },
    {
      "id": "pnr_daraga",
      "slug": "daraga",
      "ordinal": 84,
      "name": "Daraga",
      "full_name": "Daraga",
      "former_names": [],
      "lat": 13.150772,
      "lng": 123.715978,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/789711128",
      "coordinates_verified_delta_m": 3
    },
    {
      "id": "pnr_bagtang",
      "slug": "bagtang",
      "ordinal": 85,
      "name": "Bagtang",
      "full_name": "Bagtang",
      "former_names": [],
      "lat": 13.14939,
      "lng": 123.72529,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Bagtang Road, Daraga (no OSM place node for Bagtang found) -- LOW CONFIDENCE (way/145640876, 126 m off the track), projected onto the nearest 'PNR South Main Line' rail way/229354580. Not on Wikipedia's station list."
    },
    {
      "id": "pnr_washington_drive",
      "slug": "washington-drive",
      "ordinal": 86,
      "name": "Washington Drive",
      "full_name": "Washington Drive",
      "former_names": [],
      "lat": 13.14446,
      "lng": 123.73457,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Kawit-East Washington Drive (Legazpi) place node (node/3923654629, 4 m off the track), projected onto the nearest 'PNR South Main Line' rail way/229354580."
    },
    {
      "id": "pnr_kapantawan",
      "slug": "kapantawan",
      "ordinal": 87,
      "name": "Kapantawan",
      "full_name": "Kapantawan",
      "former_names": [],
      "lat": 13.14633,
      "lng": 123.74893,
      "coordinates_source": "osm",
      "coordinates_verified": false,
      "interchanges": [],
      "coordinates_note": "APPROXIMATE: no station node in Wikipedia/Wikidata/OSM. Point is the Kapantawan (Legazpi) place node (node/3923668131, 88 m off the track), projected onto the nearest 'PNR South Main Line' rail way/229354580. Not on Wikipedia's station list."
    },
    {
      "id": "pnr_legazpi",
      "slug": "legazpi",
      "ordinal": 88,
      "name": "Legazpi",
      "full_name": "Legazpi",
      "former_names": [],
      "lat": 13.151539,
      "lng": 123.752031,
      "coordinates_source": "wikipedia",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-10-13",
      "coordinates_verified_against": "osm:way/229354572",
      "coordinates_verified_delta_m": 33
    }
  ],
  "sections": [
    {
      "id": "metro_north",
      "service": "Metro North Commuter",
      "from": "pnr_governor_pascual",
      "to": "pnr_tutuban",
      "status": "suspended",
      "since": "2024-03-28",
      "reason": "Closed so the North-South Commuter Railway can be built. PNR is targeting late 2028 to early 2029.",
      "source_url": "https://www.pna.gov.ph/articles/1220375"
    },
    {
      "id": "metro_south",
      "service": "Metro South Commuter",
      "from": "pnr_tutuban",
      "to": "pnr_alabang",
      "status": "suspended",
      "since": "2024-03-28",
      "reason": "Closed so the North-South Commuter Railway can be built. PNR is targeting late 2028 to early 2029. Substitute buses run Tutuban to Alabang.",
      "source_url": "https://www.pna.gov.ph/articles/1220375"
    },
    {
      "id": "metro_south_laguna",
      "service": "Metro South Commuter",
      "from": "pnr_alabang",
      "to": "pnr_calamba",
      "status": "suspended",
      "since": "2023-07-02",
      "reason": "Closed for North-South Commuter Railway construction. Calamba station itself closed on 15 December 2025; trains from Lucena now end at Halang Dos.",
      "source_url": "https://www.spot.ph/newsfeatures/mobility/103812/pnr-lines-alabang-calamba-and-malabon-to-close-for-nscr-project-a5229-20230220"
    },
    {
      "id": "ipc",
      "service": "Inter Provincial Commuter",
      "from": "pnr_halang_dos",
      "to": "pnr_lucena",
      "status": "operational",
      "source_url": "https://www.facebook.com/officialpnrpage"
    },
    {
      "id": "south_main",
      "service": "South Main Line",
      "from": "pnr_lucena",
      "to": "pnr_lupi_viejo",
      "status": "suspended",
      "since": "2012-10-26",
      "reason": "No passenger trains since the Bicol Express was suspended after a derailment in 2012.",
      "source_url": "https://en.wikipedia.org/wiki/PNR_South_Main_Line"
    },
    {
      "id": "bct_lupi",
      "service": "Bicol Commuter Train",
      "from": "pnr_lupi_viejo",
      "to": "pnr_naga",
      "status": "operational",
      "source_url": "https://www.facebook.com/officialpnrpage"
    },
    {
      "id": "bct_legazpi",
      "service": "Bicol Commuter Train",
      "from": "pnr_naga",
      "to": "pnr_legazpi",
      "status": "suspended",
      "since": "2025-11-10",
      "reason": "Suspended after Typhoon Uwan damaged a bridge in Guinobatan, Albay.",
      "source_url": "https://en.wikipedia.org/wiki/Philippine_National_Railways"
    }
  ],
  "fare_tables": [
    {
      "id": "ipc",
      "service": "Inter Provincial Commuter",
      "effective_from": "2025-07-14",
      "source_url": "https://www.facebook.com/officialpnrpage/posts/pfbid0efoFdELYc2m4Z19N7fn7gXP5msh4qNB5bz8m62Bg8rgCWjvciGSjeT3hTsAL44NRl",
      "source_note": "PNR public announcement of 11 July 2025, 'Lucena - Calamba Regular Fare Matrix' image. The post text gives the range as P15-P105 regular and P12-P84 discounted.",
      "stations": [
        "pnr_calamba",
        "pnr_halang_dos",
        "pnr_pansol",
        "pnr_masili",
        "pnr_los_banos",
        "pnr_college",
        "pnr_irri",
        "pnr_san_pablo",
        "pnr_tiaong",
        "pnr_candelaria",
        "pnr_lutucan",
        "pnr_sariaya",
        "pnr_lucena"
      ],
      "matrix": [
        [
          0,
          null,
          20,
          20,
          20,
          20,
          25,
          55,
          70,
          80,
          90,
          95,
          105
        ],
        [
          null,
          0,
          null,
          null,
          null,
          null,
          null,
          null,
          null,
          null,
          null,
          null,
          null
        ],
        [
          20,
          null,
          0,
          20,
          20,
          20,
          25,
          45,
          60,
          70,
          80,
          85,
          95
        ],
        [
          20,
          null,
          20,
          0,
          20,
          20,
          20,
          45,
          60,
          70,
          80,
          85,
          95
        ],
        [
          20,
          null,
          20,
          20,
          0,
          20,
          20,
          40,
          55,
          65,
          75,
          80,
          90
        ],
        [
          20,
          null,
          20,
          20,
          20,
          0,
          20,
          35,
          50,
          60,
          70,
          75,
          85
        ],
        [
          25,
          null,
          25,
          20,
          20,
          20,
          0,
          35,
          50,
          60,
          70,
          75,
          85
        ],
        [
          55,
          null,
          45,
          45,
          40,
          35,
          35,
          0,
          15,
          25,
          35,
          40,
          50
        ],
        [
          70,
          null,
          60,
          60,
          55,
          50,
          50,
          15,
          0,
          15,
          25,
          30,
          40
        ],
        [
          80,
          null,
          70,
          70,
          65,
          60,
          60,
          25,
          15,
          0,
          15,
          15,
          25
        ],
        [
          90,
          null,
          80,
          80,
          75,
          70,
          70,
          35,
          25,
          15,
          0,
          15,
          15
        ],
        [
          95,
          null,
          85,
          85,
          80,
          75,
          75,
          40,
          30,
          15,
          15,
          0,
          15
        ],
        [
          105,
          null,
          95,
          95,
          90,
          85,
          85,
          50,
          40,
          25,
          15,
          15,
          0
        ]
      ],
      "unpublished": [
        {
          "station_id": "pnr_halang_dos",
          "reason": "Halang Dos replaced Calamba station on 16 December 2025. PNR's notice says operations moved there but publishes no fare for it."
        }
      ]
    },
    {
      "id": "bct_lupi",
      "service": "Bicol Commuter Train",
      "effective_from": "2025-11-05",
      "source_url": "https://www.facebook.com/photo/?fbid=1371742845082059&set=pcb.1371742888415388",
      "source_note": "'Naga - Lupi Viejo Regular Fare Matrix', in PNR's Peñafrancia Festival advisory of 5 September 2026. The route opened 5 November 2025 at P15-P75 regular, P12-P60 discounted (PNR post of that date). Every cell it shares with the 21 July 2024 Naga-Sipocot matrix is identical. The discounted matrix in the same post (photo 1371742838415393) is regular x 0.8 in every cell.",
      "stations": [
        "pnr_lupi_viejo",
        "pnr_lupi_nuevo",
        "pnr_malaguico",
        "pnr_azucena",
        "pnr_sipocot",
        "pnr_awayan",
        "pnr_mantalisay",
        "pnr_camambugan",
        "pnr_libmanan",
        "pnr_rongos",
        "pnr_malansad",
        "pnr_mambulo",
        "pnr_pamplona",
        "pnr_borabod",
        "pnr_sampaloc",
        "pnr_naga"
      ],
      "matrix": [
        [
          0,
          15,
          15,
          15,
          15,
          25,
          30,
          30,
          35,
          40,
          45,
          50,
          55,
          60,
          65,
          75
        ],
        [
          15,
          0,
          15,
          15,
          15,
          20,
          25,
          25,
          35,
          40,
          40,
          45,
          50,
          55,
          60,
          70
        ],
        [
          15,
          15,
          0,
          15,
          15,
          15,
          15,
          20,
          25,
          30,
          35,
          40,
          45,
          45,
          50,
          60
        ],
        [
          15,
          15,
          15,
          0,
          15,
          15,
          15,
          20,
          25,
          30,
          35,
          35,
          40,
          45,
          50,
          60
        ],
        [
          15,
          15,
          15,
          15,
          0,
          15,
          15,
          15,
          20,
          25,
          30,
          35,
          40,
          45,
          50,
          60
        ],
        [
          25,
          20,
          15,
          15,
          15,
          0,
          15,
          15,
          15,
          20,
          25,
          30,
          35,
          40,
          45,
          55
        ],
        [
          30,
          25,
          15,
          15,
          15,
          15,
          0,
          15,
          15,
          15,
          20,
          25,
          30,
          35,
          40,
          50
        ],
        [
          30,
          25,
          20,
          20,
          15,
          15,
          15,
          0,
          15,
          15,
          15,
          20,
          25,
          30,
          35,
          45
        ],
        [
          35,
          35,
          25,
          25,
          20,
          15,
          15,
          15,
          0,
          15,
          15,
          15,
          20,
          25,
          30,
          40
        ],
        [
          40,
          40,
          30,
          30,
          25,
          20,
          15,
          15,
          15,
          0,
          15,
          15,
          15,
          20,
          25,
          35
        ],
        [
          45,
          40,
          35,
          35,
          30,
          25,
          20,
          15,
          15,
          15,
          0,
          15,
          15,
          15,
          20,
          30
        ],
        [
          50,
          45,
          40,
          35,
          35,
          30,
          25,
          20,
          15,
          15,
          15,
          0,
          15,
          15,
          15,
          25
        ],
        [
          55,
          50,
          45,
          40,
          40,
          35,
          30,
          25,
          20,
          15,
          15,
          15,
          0,
          15,
          15,
          20
        ],
        [
          60,
          55,
          45,
          45,
          45,
          40,
          35,
          30,
          25,
          20,
          15,
          15,
          15,
          0,
          15,
          15
        ],
        [
          65,
          60,
          50,
          50,
          50,
          45,
          40,
          35,
          30,
          25,
          20,
          15,
          15,
          15,
          0,
          15
        ],
        [
          75,
          70,
          60,
          60,
          60,
          55,
          50,
          45,
          40,
          35,
          30,
          25,
          20,
          15,
          15,
          0
        ]
      ]
    },
    {
      "id": "bct_legazpi",
      "service": "Bicol Commuter Train",
      "effective_from": "2024-07-21",
      "source_url": "https://www.facebook.com/photo/?fbid=796309332625416&set=pcb.796309485958734",
      "source_note": "'Regular Fare Matrix (Naga - Legazpi)', PNR announcement of 21 July 2024. Still current: the 'Naga - Iriga Regular Fare Matrix' PNR posted on 5 September 2026 (photo 1371742851748725) repeats its six Naga-Iriga cells exactly.",
      "stations": [
        "pnr_naga",
        "pnr_pili",
        "pnr_baao",
        "pnr_iriga",
        "pnr_lourdes",
        "pnr_bato",
        "pnr_matacon",
        "pnr_polangui",
        "pnr_oas",
        "pnr_ligao",
        "pnr_travesia",
        "pnr_daraga",
        "pnr_bagtang",
        "pnr_washington_drive",
        "pnr_kapantawan",
        "pnr_legazpi"
      ],
      "matrix": [
        [
          0,
          20,
          45,
          55,
          60,
          65,
          80,
          90,
          95,
          105,
          120,
          145,
          150,
          150,
          155,
          155
        ],
        [
          20,
          0,
          25,
          35,
          40,
          50,
          60,
          75,
          80,
          85,
          100,
          130,
          130,
          130,
          135,
          135
        ],
        [
          45,
          25,
          0,
          15,
          20,
          25,
          40,
          50,
          55,
          65,
          80,
          105,
          105,
          110,
          110,
          115
        ],
        [
          55,
          35,
          15,
          0,
          15,
          15,
          30,
          40,
          45,
          55,
          70,
          95,
          95,
          100,
          100,
          100
        ],
        [
          60,
          40,
          20,
          15,
          0,
          15,
          20,
          35,
          40,
          45,
          65,
          90,
          90,
          95,
          95,
          95
        ],
        [
          65,
          50,
          25,
          15,
          15,
          0,
          15,
          30,
          35,
          40,
          55,
          80,
          85,
          85,
          90,
          90
        ],
        [
          80,
          60,
          40,
          30,
          20,
          15,
          0,
          15,
          20,
          25,
          45,
          70,
          70,
          75,
          75,
          75
        ],
        [
          90,
          75,
          50,
          40,
          35,
          30,
          15,
          0,
          15,
          15,
          30,
          55,
          60,
          60,
          65,
          65
        ],
        [
          95,
          80,
          55,
          45,
          40,
          35,
          20,
          15,
          0,
          15,
          25,
          50,
          55,
          55,
          60,
          60
        ],
        [
          105,
          85,
          65,
          55,
          45,
          40,
          25,
          15,
          15,
          0,
          20,
          45,
          45,
          50,
          50,
          50
        ],
        [
          120,
          100,
          80,
          70,
          65,
          55,
          45,
          30,
          25,
          20,
          0,
          30,
          30,
          35,
          35,
          35
        ],
        [
          145,
          130,
          105,
          95,
          90,
          80,
          70,
          55,
          50,
          45,
          30,
          0,
          15,
          15,
          15,
          15
        ],
        [
          150,
          130,
          105,
          95,
          90,
          85,
          70,
          60,
          55,
          45,
          30,
          15,
          0,
          15,
          15,
          15
        ],
        [
          150,
          130,
          110,
          100,
          95,
          85,
          75,
          60,
          55,
          50,
          35,
          15,
          15,
          0,
          15,
          15
        ],
        [
          155,
          135,
          110,
          100,
          95,
          90,
          75,
          65,
          60,
          50,
          35,
          15,
          15,
          15,
          0,
          15
        ],
        [
          155,
          135,
          115,
          100,
          95,
          90,
          75,
          65,
          60,
          50,
          35,
          15,
          15,
          15,
          15,
          0
        ]
      ]
    }
  ]
}
