{
  "schema_version": 1,
  "line": {
    "id": "lrt1",
    "code": "LRT-1",
    "name": "LRT Line 1",
    "operator": "Light Rail Manila Corporation (LRMC)",
    "status": "operational",
    "color": "#fdb913"
  },
  "provenance": {
    "generated_on": "2026-10-13",
    "fares_effective_from": "2025-04-02",
    "source_url": "https://lrmc.ph/2025/02/18/new-lrt-1-fares-effective-2-april-2025/",
    "source_note": "Checked against the operator's own published fare matrix; see verified_note.",
    "verified_on": "2026-09-18",
    "verified_note": "48 cells checked cell-by-cell against LRMC's published Stored Value fare matrix (effective 2 April 2025); 0 mismatches. Base fare structure P16.25 boarding + P1.47/km confirmed on the same page. Note the official matrix prints P16 on the diagonal (tap in and out at one station); this dataset stores 0 there and the engine rejects same-station journeys.",
    "confidence": "operator-confirmed (published matrix), spot-verified plus structural validation"
  },
  "validation": {
    "pairs": "300/300",
    "monotonic_along_line": true,
    "single_journey_rule": {
      "rule": "single_journey = ceil(beep / 5) * 5",
      "held_for": "300/300 pairs"
    }
  },
  "products": {
    "beep": {
      "label": "Stored Value (beep)",
      "storage": "matrix"
    },
    "single_journey": {
      "label": "Single Journey Ticket",
      "storage": "derived",
      "from": "beep",
      "rule": "ceil(x/5)*5"
    }
  },
  "modifiers": [
    {
      "id": "concession_student_senior_pwd",
      "label": "Student / Senior Citizen / PWD",
      "type": "percentage",
      "value": -50,
      "requires_user_selection": true,
      "requires": "white beep card (P30 one-time, valid one year, renewable)",
      "effective_from": "2025-09-20",
      "effective_until": null,
      "applies_to_lines": [
        "lrt1",
        "lrt2",
        "mrt3"
      ],
      "source_url": "https://tribune.net.ph/2025/09/20/marcos-launches-50-discount-beep-cards-for-students-on-lrt-mrt",
      "note": "The white beep card applying an automatic 50% was launched 20 September 2025 and covers LRT-1, LRT-2 and MRT-3 alike. An earlier draft of this data carried it on LRT-1 only and dated it to the April 2025 fare hike; both were wrong.",
      "stacks": false,
      "stacking_note": "Does not compound with dotr_50_discount_2026. The March 2026 announcements state that concession holders 'will still be entitled to their respective 50% discounts' — they keep half price rather than dropping to a quarter, and no operator publishes a 75% fare. The engine applies the single deepest discount.",
      "last_confirmed": "2026-09-20"
    }
  ],
  "stations": [
    {
      "id": "lrt1_fernando_poe_jr",
      "slug": "fernando-poe-jr",
      "ordinal": 1,
      "name": "Fernando Poe Jr.",
      "full_name": "Fernando Poe Jr.",
      "former_names": [
        "Roosevelt"
      ],
      "lat": 14.657546,
      "lng": 121.021191,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Fernando Poe Jr. station",
      "coordinates_verified_delta_m": 6
    },
    {
      "id": "lrt1_balintawak",
      "slug": "balintawak",
      "ordinal": 2,
      "name": "Balintawak",
      "full_name": "Balintawak",
      "former_names": [],
      "lat": 14.657352,
      "lng": 121.003167,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Balintawak station",
      "coordinates_verified_delta_m": 85
    },
    {
      "id": "lrt1_monumento",
      "slug": "monumento",
      "ordinal": 3,
      "name": "Monumento",
      "full_name": "Monumento",
      "former_names": [],
      "lat": 14.654367,
      "lng": 120.983894,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Monumento station",
      "coordinates_verified_delta_m": 30
    },
    {
      "id": "lrt1_5th_avenue",
      "slug": "5th-avenue",
      "ordinal": 4,
      "name": "5th Avenue",
      "full_name": "5th Avenue",
      "former_names": [],
      "lat": 14.64442,
      "lng": 120.983583,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:5th Avenue station (LRT)",
      "coordinates_verified_delta_m": 6
    },
    {
      "id": "lrt1_r_papa",
      "slug": "r-papa",
      "ordinal": 5,
      "name": "R. Papa",
      "full_name": "R. Papa",
      "former_names": [],
      "lat": 14.635923,
      "lng": 120.982299,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:R. Papa station",
      "coordinates_verified_delta_m": 18
    },
    {
      "id": "lrt1_abad_santos",
      "slug": "abad-santos",
      "ordinal": 6,
      "name": "Abad Santos",
      "full_name": "Abad Santos",
      "former_names": [],
      "lat": 14.630827,
      "lng": 120.981131,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Abad Santos station",
      "coordinates_verified_delta_m": 38
    },
    {
      "id": "lrt1_blumentritt",
      "slug": "blumentritt",
      "ordinal": 7,
      "name": "Blumentritt",
      "full_name": "Blumentritt",
      "former_names": [],
      "lat": 14.622746,
      "lng": 120.983535,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Blumentritt station (LRT)",
      "coordinates_verified_delta_m": 70
    },
    {
      "id": "lrt1_tayuman",
      "slug": "tayuman",
      "ordinal": 8,
      "name": "Tayuman",
      "full_name": "Tayuman",
      "former_names": [],
      "lat": 14.616644,
      "lng": 120.9829,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Tayuman station (LRT)",
      "coordinates_verified_delta_m": 23
    },
    {
      "id": "lrt1_bambang",
      "slug": "bambang",
      "ordinal": 9,
      "name": "Bambang",
      "full_name": "Bambang",
      "former_names": [],
      "lat": 14.611241,
      "lng": 120.982555,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Bambang station",
      "coordinates_verified_delta_m": 16
    },
    {
      "id": "lrt1_d_jose",
      "slug": "d-jose",
      "ordinal": 10,
      "name": "D. Jose",
      "full_name": "Doroteo Jose",
      "former_names": [],
      "lat": 14.605308,
      "lng": 120.982031,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [
        {
          "station_id": "lrt2_recto",
          "line_id": "lrt2",
          "walk_minutes": 5,
          "walk_note": "Elevated covered walkway directly between the two concourses; the shortest of the three transfers. Published ranges 3-5 and 5-10 minutes.",
          "walk_source_url": "https://3d-universal.com/en/blogs/how-to-transfer-between-mrt-and-lrt-lines.html"
        }
      ],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Doroteo Jose station",
      "coordinates_verified_delta_m": 19
    },
    {
      "id": "lrt1_carriedo",
      "slug": "carriedo",
      "ordinal": 11,
      "name": "Carriedo",
      "full_name": "Carriedo",
      "former_names": [],
      "lat": 14.598944,
      "lng": 120.981314,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Carriedo station",
      "coordinates_verified_delta_m": 8
    },
    {
      "id": "lrt1_central",
      "slug": "central",
      "ordinal": 12,
      "name": "Central",
      "full_name": "Central Terminal",
      "former_names": [],
      "lat": 14.592711,
      "lng": 120.981627,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Central Terminal (LRT)",
      "coordinates_verified_delta_m": 21
    },
    {
      "id": "lrt1_un_avenue",
      "slug": "un-avenue",
      "ordinal": 13,
      "name": "UN Avenue",
      "full_name": "United Nations Avenue",
      "former_names": [],
      "lat": 14.582503,
      "lng": 120.984661,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:United Nations station (LRT)",
      "coordinates_verified_delta_m": 1
    },
    {
      "id": "lrt1_pedro_gil",
      "slug": "pedro-gil",
      "ordinal": 14,
      "name": "Pedro Gil",
      "full_name": "Pedro Gil",
      "former_names": [],
      "lat": 14.576321,
      "lng": 120.988188,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Pedro Gil station",
      "coordinates_verified_delta_m": 40
    },
    {
      "id": "lrt1_quirino",
      "slug": "quirino",
      "ordinal": 15,
      "name": "Quirino",
      "full_name": "Quirino",
      "former_names": [],
      "lat": 14.570344,
      "lng": 120.991583,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Quirino station (LRT)",
      "coordinates_verified_delta_m": 17
    },
    {
      "id": "lrt1_vito_cruz",
      "slug": "vito-cruz",
      "ordinal": 16,
      "name": "Vito Cruz",
      "full_name": "Vito Cruz",
      "former_names": [],
      "lat": 14.563368,
      "lng": 120.994802,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Vito Cruz station (LRT)",
      "coordinates_verified_delta_m": 18
    },
    {
      "id": "lrt1_gil_puyat",
      "slug": "gil-puyat",
      "ordinal": 17,
      "name": "Gil Puyat",
      "full_name": "Gil Puyat (Buendia)",
      "former_names": [],
      "lat": 14.554163,
      "lng": 120.997167,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Gil Puyat station",
      "coordinates_verified_delta_m": 4
    },
    {
      "id": "lrt1_libertad",
      "slug": "libertad",
      "ordinal": 18,
      "name": "Libertad",
      "full_name": "Libertad",
      "former_names": [],
      "lat": 14.547663,
      "lng": 120.99861,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Libertad station",
      "coordinates_verified_delta_m": 14
    },
    {
      "id": "lrt1_edsa",
      "slug": "edsa",
      "ordinal": 19,
      "name": "EDSA",
      "full_name": "EDSA",
      "former_names": [],
      "lat": 14.538575,
      "lng": 121.000637,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [
        {
          "station_id": "mrt3_taft_avenue",
          "line_id": "mrt3",
          "walk_minutes": 7,
          "walk_note": "Covered pedestrian walkway at street level across EDSA; published range 5-7 minutes. Slower in heavy rain.",
          "walk_source_url": "https://3d-universal.com/en/blogs/how-to-transfer-between-mrt-and-lrt-lines.html"
        }
      ],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:EDSA station (LRT)",
      "coordinates_verified_delta_m": 28
    },
    {
      "id": "lrt1_baclaran",
      "slug": "baclaran",
      "ordinal": 20,
      "name": "Baclaran",
      "full_name": "Baclaran",
      "former_names": [],
      "lat": 14.534286,
      "lng": 120.998341,
      "coordinates_source": "legacy-app-2017",
      "coordinates_verified": true,
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "line-geometry",
      "coordinates_note": "Wikipedia's Baclaran station article gives 14.538825, 121.00068, which is 564m from this value and 28m from EDSA station, the stop before it. From there it is 1264m to Redemptorist-Aseana, the stop after, while EDSA to Redemptorist-Aseana direct is 1240m: an intermediate station cannot be further from its neighbour than its neighbours are from each other. The value kept here sits 537m from EDSA and 732m from Redemptorist-Aseana, which is a station between the two. Wikipedia is the outlier, not this."
    },
    {
      "id": "lrt1_redemptorist_aseana",
      "slug": "redemptorist-aseana",
      "ordinal": 21,
      "name": "Redemptorist-Aseana",
      "full_name": "Redemptorist-Aseana",
      "former_names": [],
      "lat": 14.53028,
      "lng": 120.99294,
      "coordinates_source": "wikipedia-2026",
      "coordinates_verified": true,
      "opened_on": "2024-11-16",
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Redemptorist–Aseana station",
      "coordinates_verified_delta_m": 0
    },
    {
      "id": "lrt1_mia_road",
      "slug": "mia-road",
      "ordinal": 22,
      "name": "MIA Road",
      "full_name": "MIA Road",
      "former_names": [],
      "lat": 14.51843,
      "lng": 120.99299,
      "coordinates_source": "wikipedia-2026",
      "coordinates_verified": true,
      "opened_on": "2024-11-16",
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:MIA Road station",
      "coordinates_verified_delta_m": 0
    },
    {
      "id": "lrt1_pitx",
      "slug": "pitx",
      "ordinal": 23,
      "name": "PITX",
      "full_name": "PITX",
      "former_names": [],
      "lat": 14.50848,
      "lng": 120.99128,
      "coordinates_source": "wikipedia-2026",
      "coordinates_verified": true,
      "opened_on": "2024-11-16",
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:PITX station",
      "coordinates_verified_delta_m": 0
    },
    {
      "id": "lrt1_ninoy_aquino_avenue",
      "slug": "ninoy-aquino-avenue",
      "ordinal": 24,
      "name": "Ninoy Aquino Avenue",
      "full_name": "Ninoy Aquino Avenue",
      "former_names": [],
      "lat": 14.49864,
      "lng": 120.99436,
      "coordinates_source": "wikipedia-2026",
      "coordinates_verified": true,
      "opened_on": "2024-11-16",
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Ninoy Aquino Avenue station",
      "coordinates_verified_delta_m": 0
    },
    {
      "id": "lrt1_dr_santos",
      "slug": "dr-santos",
      "ordinal": 25,
      "name": "Dr. Santos",
      "full_name": "Dr. Santos",
      "former_names": [
        "Sucat"
      ],
      "lat": 14.4853,
      "lng": 120.98956,
      "coordinates_source": "wikipedia-2026",
      "coordinates_verified": true,
      "opened_on": "2024-11-16",
      "interchanges": [],
      "coordinates_verified_on": "2026-09-20",
      "coordinates_verified_against": "wikipedia:Dr. Santos station",
      "coordinates_verified_delta_m": 0
    }
  ],
  "fares": {
    "model": "matrix",
    "currency": "PHP",
    "product": "beep",
    "station_order": [
      "Fernando Poe Jr.",
      "Balintawak",
      "Monumento",
      "5th Avenue",
      "R. Papa",
      "Abad Santos",
      "Blumentritt",
      "Tayuman",
      "Bambang",
      "D. Jose",
      "Carriedo",
      "Central",
      "UN Avenue",
      "Pedro Gil",
      "Quirino",
      "Vito Cruz",
      "Gil Puyat",
      "Libertad",
      "EDSA",
      "Baclaran",
      "Redemptorist-Aseana",
      "MIA Road",
      "PITX",
      "Ninoy Aquino Avenue",
      "Dr. Santos"
    ],
    "matrix": [
      [
        0,
        19,
        22,
        24,
        25,
        26,
        28,
        29,
        30,
        30,
        31,
        33,
        34,
        35,
        37,
        38,
        39,
        40,
        42,
        43,
        45,
        46,
        48,
        50,
        52
      ],
      [
        19,
        0,
        20,
        21,
        23,
        24,
        25,
        26,
        27,
        28,
        29,
        30,
        32,
        33,
        34,
        35,
        37,
        38,
        39,
        40,
        42,
        43,
        45,
        47,
        49
      ],
      [
        22,
        20,
        0,
        18,
        19,
        20,
        22,
        23,
        23,
        24,
        25,
        27,
        28,
        29,
        31,
        32,
        33,
        34,
        36,
        37,
        39,
        40,
        42,
        44,
        46
      ],
      [
        24,
        21,
        18,
        0,
        18,
        19,
        20,
        21,
        22,
        23,
        24,
        25,
        27,
        28,
        29,
        30,
        32,
        33,
        34,
        35,
        37,
        38,
        40,
        42,
        45
      ],
      [
        25,
        23,
        19,
        18,
        0,
        17,
        19,
        20,
        20,
        21,
        22,
        23,
        25,
        26,
        28,
        29,
        30,
        31,
        33,
        34,
        36,
        37,
        39,
        41,
        43
      ],
      [
        26,
        24,
        20,
        19,
        17,
        0,
        18,
        19,
        20,
        20,
        21,
        23,
        24,
        25,
        27,
        28,
        29,
        30,
        32,
        33,
        35,
        36,
        38,
        40,
        42
      ],
      [
        28,
        25,
        22,
        20,
        19,
        18,
        0,
        17,
        18,
        19,
        20,
        21,
        23,
        24,
        25,
        26,
        28,
        29,
        31,
        31,
        34,
        35,
        37,
        38,
        41
      ],
      [
        29,
        26,
        23,
        21,
        20,
        19,
        17,
        0,
        17,
        18,
        19,
        20,
        22,
        23,
        24,
        25,
        27,
        28,
        30,
        30,
        33,
        34,
        36,
        37,
        40
      ],
      [
        30,
        27,
        23,
        22,
        20,
        20,
        18,
        17,
        0,
        17,
        18,
        19,
        21,
        22,
        23,
        25,
        26,
        27,
        29,
        30,
        32,
        33,
        35,
        36,
        39
      ],
      [
        30,
        28,
        24,
        23,
        21,
        20,
        19,
        18,
        17,
        0,
        17,
        18,
        20,
        21,
        22,
        24,
        25,
        26,
        28,
        29,
        31,
        32,
        34,
        36,
        38
      ],
      [
        31,
        29,
        25,
        24,
        22,
        21,
        20,
        19,
        18,
        17,
        0,
        17,
        19,
        20,
        21,
        23,
        24,
        25,
        27,
        28,
        30,
        31,
        33,
        35,
        37
      ],
      [
        33,
        30,
        27,
        25,
        23,
        23,
        21,
        20,
        19,
        18,
        17,
        0,
        18,
        19,
        20,
        22,
        23,
        24,
        26,
        27,
        29,
        30,
        32,
        33,
        36
      ],
      [
        34,
        32,
        28,
        27,
        25,
        24,
        23,
        22,
        21,
        20,
        19,
        18,
        0,
        17,
        19,
        20,
        21,
        22,
        24,
        25,
        27,
        28,
        30,
        32,
        34
      ],
      [
        35,
        33,
        29,
        28,
        26,
        25,
        24,
        23,
        22,
        21,
        20,
        19,
        17,
        0,
        17,
        19,
        20,
        21,
        23,
        24,
        26,
        27,
        29,
        31,
        33
      ],
      [
        37,
        34,
        31,
        29,
        28,
        27,
        25,
        24,
        23,
        22,
        21,
        20,
        19,
        17,
        0,
        17,
        19,
        20,
        22,
        22,
        25,
        26,
        28,
        29,
        32
      ],
      [
        38,
        35,
        32,
        30,
        29,
        28,
        26,
        25,
        25,
        24,
        23,
        22,
        20,
        19,
        17,
        0,
        18,
        19,
        20,
        21,
        23,
        25,
        27,
        28,
        31
      ],
      [
        39,
        37,
        33,
        32,
        30,
        29,
        28,
        27,
        26,
        25,
        24,
        23,
        21,
        20,
        19,
        18,
        0,
        17,
        19,
        20,
        22,
        23,
        25,
        27,
        29
      ],
      [
        40,
        38,
        34,
        33,
        31,
        30,
        29,
        28,
        27,
        26,
        25,
        24,
        22,
        21,
        20,
        19,
        17,
        0,
        18,
        19,
        21,
        22,
        24,
        26,
        28
      ],
      [
        42,
        39,
        36,
        34,
        33,
        32,
        31,
        30,
        29,
        28,
        27,
        26,
        24,
        23,
        22,
        20,
        19,
        18,
        0,
        17,
        19,
        20,
        22,
        24,
        27
      ],
      [
        43,
        40,
        37,
        35,
        34,
        33,
        31,
        30,
        30,
        29,
        28,
        27,
        25,
        24,
        22,
        21,
        20,
        19,
        17,
        0,
        18,
        20,
        22,
        23,
        26
      ],
      [
        45,
        42,
        39,
        37,
        36,
        35,
        34,
        33,
        32,
        31,
        30,
        29,
        27,
        26,
        25,
        23,
        22,
        21,
        19,
        18,
        0,
        17,
        19,
        21,
        23
      ],
      [
        46,
        43,
        40,
        38,
        37,
        36,
        35,
        34,
        33,
        32,
        31,
        30,
        28,
        27,
        26,
        25,
        23,
        22,
        20,
        20,
        17,
        0,
        18,
        20,
        22
      ],
      [
        48,
        45,
        42,
        40,
        39,
        38,
        37,
        36,
        35,
        34,
        33,
        32,
        30,
        29,
        28,
        27,
        25,
        24,
        22,
        22,
        19,
        18,
        0,
        18,
        20
      ],
      [
        50,
        47,
        44,
        42,
        41,
        40,
        38,
        37,
        36,
        36,
        35,
        33,
        32,
        31,
        29,
        28,
        27,
        26,
        24,
        23,
        21,
        20,
        18,
        0,
        19
      ],
      [
        52,
        49,
        46,
        45,
        43,
        42,
        41,
        40,
        39,
        38,
        37,
        36,
        34,
        33,
        32,
        31,
        29,
        28,
        27,
        26,
        23,
        22,
        20,
        19,
        0
      ]
    ]
  }
}
