{"timezone":"Asia/Bangkok","start":"2026-09-19","end":"2026-10-18","group":"day","days":[{"date":"2026-09-19","pm25":3.78375,"aqi":21,"minAqi":4,"maxAqi":32,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-09-20","pm25":4.3950000000000005,"aqi":24,"minAqi":10,"maxAqi":42,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-09-21","pm25":6.370416666666667,"aqi":35,"minAqi":9,"maxAqi":60,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-09-22","pm25":5.298749999999999,"aqi":29,"minAqi":16,"maxAqi":43,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-09-23","pm25":4.621458333333333,"aqi":26,"minAqi":4,"maxAqi":38,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-09-24","pm25":6.327499999999998,"aqi":35,"minAqi":18,"maxAqi":53,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-09-25","pm25":6.468958333333333,"aqi":36,"minAqi":4,"maxAqi":58,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-09-26","pm25":2.580416666666667,"aqi":14,"minAqi":3,"maxAqi":28,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":3,"aqiCapped":false},{"date":"2026-09-27","pm25":2.8625000000000003,"aqi":16,"minAqi":4,"maxAqi":26,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-09-28","pm25":8.277916666666666,"aqi":46,"minAqi":12,"maxAqi":81,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-09-29","pm25":18.148125,"aqi":68,"minAqi":19,"maxAqi":107,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-09-30","pm25":24.103333333333335,"aqi":79,"minAqi":20,"maxAqi":107,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-01","pm25":13.54458333333333,"aqi":59,"minAqi":16,"maxAqi":77,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-02","pm25":12.225416666666666,"aqi":57,"minAqi":25,"maxAqi":65,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-03","pm25":9.05875,"aqi":50,"minAqi":28,"maxAqi":58,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-04","pm25":7.517499999999999,"aqi":42,"minAqi":19,"maxAqi":56,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-05","pm25":11.333541666666667,"aqi":55,"minAqi":35,"maxAqi":63,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-06","pm25":10.58854166666667,"aqi":54,"minAqi":16,"maxAqi":59,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-07","pm25":10.397499999999999,"aqi":53,"minAqi":19,"maxAqi":67,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-08","pm25":14.217708333333333,"aqi":61,"minAqi":31,"maxAqi":69,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-09","pm25":14.589166666666664,"aqi":61,"minAqi":33,"maxAqi":70,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-10","pm25":11.956666666666663,"aqi":56,"minAqi":30,"maxAqi":62,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-11","pm25":11.069791666666665,"aqi":55,"minAqi":46,"maxAqi":63,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-12","pm25":7.4745833333333325,"aqi":41,"minAqi":20,"maxAqi":54,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-13","pm25":7.163749999999999,"aqi":39,"minAqi":13,"maxAqi":52,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-14","pm25":13.272916666666665,"aqi":59,"minAqi":39,"maxAqi":86,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-15","pm25":16.238958333333333,"aqi":64,"minAqi":54,"maxAqi":92,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-16","pm25":16.9375,"aqi":66,"minAqi":46,"maxAqi":77,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-17","pm25":11.494375,"aqi":55,"minAqi":18,"maxAqi":67,"hours":24,"estimatedHours":0,"sampledHours":24,"localHours":0,"providerHours":24,"localSamples":0,"coverage":1,"complete":true,"stationCount":4,"aqiCapped":false},{"date":"2026-10-18","pm25":7.028044871794872,"aqi":39,"minAqi":28,"maxAqi":46,"hours":3,"estimatedHours":1,"sampledHours":4,"localHours":3,"providerHours":1,"localSamples":71,"coverage":0.125,"complete":false,"stationCount":4,"aqiCapped":false}],"periods":[{"date":"2026-09-19","end":"2026-09-19","periodStart":"2026-09-19","pm25":3.78375,"aqi":21,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-09-20","end":"2026-09-20","periodStart":"2026-09-20","pm25":4.3950000000000005,"aqi":24,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-09-21","end":"2026-09-21","periodStart":"2026-09-21","pm25":6.370416666666667,"aqi":35,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-09-22","end":"2026-09-22","periodStart":"2026-09-22","pm25":5.298749999999999,"aqi":29,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-09-23","end":"2026-09-23","periodStart":"2026-09-23","pm25":4.621458333333333,"aqi":26,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-09-24","end":"2026-09-24","periodStart":"2026-09-24","pm25":6.327499999999998,"aqi":35,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-09-25","end":"2026-09-25","periodStart":"2026-09-25","pm25":6.468958333333333,"aqi":36,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-09-26","end":"2026-09-26","periodStart":"2026-09-26","pm25":2.580416666666667,"aqi":14,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-09-27","end":"2026-09-27","periodStart":"2026-09-27","pm25":2.8625000000000003,"aqi":16,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-09-28","end":"2026-09-28","periodStart":"2026-09-28","pm25":8.277916666666666,"aqi":46,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-09-29","end":"2026-09-29","periodStart":"2026-09-29","pm25":18.148125,"aqi":68,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-09-30","end":"2026-09-30","periodStart":"2026-09-30","pm25":24.103333333333335,"aqi":79,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-01","end":"2026-10-01","periodStart":"2026-10-01","pm25":13.54458333333333,"aqi":59,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-02","end":"2026-10-02","periodStart":"2026-10-02","pm25":12.225416666666666,"aqi":57,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-03","end":"2026-10-03","periodStart":"2026-10-03","pm25":9.05875,"aqi":50,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-04","end":"2026-10-04","periodStart":"2026-10-04","pm25":7.517499999999999,"aqi":42,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-05","end":"2026-10-05","periodStart":"2026-10-05","pm25":11.333541666666667,"aqi":55,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-06","end":"2026-10-06","periodStart":"2026-10-06","pm25":10.58854166666667,"aqi":54,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-07","end":"2026-10-07","periodStart":"2026-10-07","pm25":10.397499999999999,"aqi":53,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-08","end":"2026-10-08","periodStart":"2026-10-08","pm25":14.217708333333333,"aqi":61,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-09","end":"2026-10-09","periodStart":"2026-10-09","pm25":14.589166666666664,"aqi":61,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-10","end":"2026-10-10","periodStart":"2026-10-10","pm25":11.956666666666663,"aqi":56,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-11","end":"2026-10-11","periodStart":"2026-10-11","pm25":11.069791666666665,"aqi":55,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-12","end":"2026-10-12","periodStart":"2026-10-12","pm25":7.4745833333333325,"aqi":41,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-13","end":"2026-10-13","periodStart":"2026-10-13","pm25":7.163749999999999,"aqi":39,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-14","end":"2026-10-14","periodStart":"2026-10-14","pm25":13.272916666666665,"aqi":59,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-15","end":"2026-10-15","periodStart":"2026-10-15","pm25":16.238958333333333,"aqi":64,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-16","end":"2026-10-16","periodStart":"2026-10-16","pm25":16.9375,"aqi":66,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-17","end":"2026-10-17","periodStart":"2026-10-17","pm25":11.494375,"aqi":55,"days":1,"expectedDays":1,"coverage":1,"completeDays":1},{"date":"2026-10-18","end":"2026-10-18","periodStart":"2026-10-18","pm25":7.028044871794872,"aqi":39,"days":1,"expectedDays":1,"coverage":0.125,"completeDays":0}],"summary":{"aqi":52,"meanAqi":52,"meanPm25":9.97824732905983,"highestAqi":79,"lowestAqi":14,"highestDate":"2026-09-30","goodDays":15,"above50Days":15,"completeGoodDays":14,"completeAbove50Days":15,"observedDays":30,"expectedDays":30,"completeDays":29,"coverage":0.9708},"earliestDate":"2025-03-28","latestDate":"2026-10-18","method":{"aqi":"Original site\u2019s US AQI conversion: truncate PM2.5 to 0.1 micrograms/m\u00b3, preserve its 55.4 interpolation endpoint and extrapolate above 500. The legacy endpoint is not an exact EPA-compliance claim.","daily":"For locally collected history, first average the two highest fresh PM2.5 readings at each collection (one if only one is available), then average those collected concentrations per hour. Older provider history uses the two highest station hourly concentrations. Average available hourly concentrations in the Bangkok day, then convert to AQI.","periods":"Equal-weight mean of observed daily PM2.5 concentrations, including partial days, then the same AQI conversion. AQI values are never averaged.","historicalInputs":"Historical inputs are provider-published hourly PM2.5, which may be corrected differently from original live feeds. This recomputes the original formula on available history; it cannot reconstruct unavailable original raw readings or past station coverage.","coverage":"Covered hours divided by 24 expected hours per day, including missing days. A provider hourly interval counts as covered; a locally collected hour requires at least 23 distinct two-minute samples out of 30. Partial sampled hours remain visible as estimatedHours.","provisional":"Local sample aggregates take priority over provider history for the same hour and remain archived after midnight, even when partial. Today is always provisional. Legacy instantaneous snapshots can fill today only when no local aggregate or provider hourly value exists.","complete":"A closed Bangkok day with at least 18 of 24 covered hours (75%); partial sampled hours do not count toward this threshold.","extremes":"Daily minAqi and maxAqi are hourly AQI extremes; summary extremes are daily AQI extremes.","weeks":"Monday\u2013Sunday in Asia/Bangkok. First and last periods are clipped to the requested range."},"source":{"name":"Phuket monitoring network","url":"#data-sources","license":"Licenses vary by source","licenseUrl":"#data-sources","providers":[{"name":"AirGradient","url":"https://www.airgradient.com/","license":"CC BY-SA 4.0","licenseUrl":"https://creativecommons.org/licenses/by-sa/4.0/"},{"name":"SensorCommunity","url":"https://sensor.community/","license":"DbCL v1.0","licenseUrl":"https://opendatacommons.org/licenses/dbcl/1-0/"},{"name":"Air4Thai via OpenAQ","url":"https://openaq.org/","license":"Original provider terms"}]}}