# Pm2.5 data differs between JSON and API

**URL:** <https://community.purpleair.com/t/pm2-5-data-differs-between-json-and-api/11383>\
**Category:** Data\
**Created:** [January 25, 2025, 7:49pm UTC](https://community.purpleair.com/t/pm2-5-data-differs-between-json-and-api/11383 "2025-01-25T19:49:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![drwrose](https://avatars.discourse-cdn.com/v4/letter/d/d07c76/32.png) [@drwrose](https://community.purpleair.com/u/drwrose)\
**Post date:** [January 25, 2025, 7:49pm UTC](https://community.purpleair.com/t/pm2-5-data-differs-between-json-and-api/11383/1 "2025-01-25T19:49:51Z")

</div>

I’m downloading data directly from my own sensor (sensor index 256753). On the Purple Air map, this sensor is currently reporting a PM2.5 AQI value of 91. Similarly, if I access its json data directly from its local IP address, it reports a value of 92 for pm2.5\_aqi and 91 for pm2.5\_aqi\_b. So far so good, everyone’s in agreement! Historical data downloaded from the map also shows a series of values around ~90.

But if I access the same sensor data via the API, it reports a value of 31.0 for pm2.5. All of the other various pm2.5 values are also in the ~30 range, none of them is near 90. And if I download the historical data from the API (I have to pick pm2.5\_alt or pm2.5\_atm since pm2.5 isn’t available for historical download for some reason), the recent numbers are also around ~30; there’s nothing around ~90.

What is going on with this discrepancy? Am I misunderstanding the meaning of these fields? Is there a dramatic difference in semantic meaning between the pm2.5 number in the API and the pm2.5\_aqi value via direct JSON?

More to the point, how should I get the same number from the API that’s reported on the map?

Thank you!  
David

---

<div class="post-metadata">

**Author:** ![drwrose](https://avatars.discourse-cdn.com/v4/letter/d/d07c76/32.png) [@drwrose](https://community.purpleair.com/u/drwrose)\
**Post date:** [January 25, 2025, 8:06pm UTC](https://community.purpleair.com/t/pm2-5-data-differs-between-json-and-api/11383/2 "2025-01-25T20:06:37Z")

</div>

Ah, the forum software linked me to this thread: [How to Calculate the US EPA PM2.5 AQI](https://community.purpleair.com/t/how-to-calculate-the-us-epa-pm2-5-aqi/877)

which answered the question. That is, the pm2.5 value reported by the API is a raw number, and needs to be converted to the value used by the EPA and shown on the map. No problem.

Does this mean that the JSON data retrieved directly from the sensor is already appropriately converted? It’s a curious difference. Did I miss a page that clarifies which values are raw and which are EPA-adjusted?

Thanks!  
David

---

<div class="post-metadata">

**Author:** ![Kieran](https://sea2.discourse-cdn.com/flex020/user_avatar/community.purpleair.com/kieran/32/6220_2.png) [@Kieran](https://community.purpleair.com/u/Kieran)\
**Post date:** [January 27, 2025, 6:38pm UTC](https://community.purpleair.com/t/pm2-5-data-differs-between-json-and-api/11383/3 "2025-01-27T18:38:58Z")

</div>

Hi David,

You are correct, the JSON data labeled “pm2.5\_aqi” is adjusted to provide a US EPA AQI value. It is important to note that the non-converted values are also available as JSON data. Those would be the _atm_ or _cf\_1_ values.

You may be interested in reading [What is the Difference Between CF=1, ATM, and ALT?](https://community.purpleair.com/t/what-is-the-difference-between-cf-1-atm-and-alt/6442).

Lastly, I don’t think we have this information expressly noted anywhere, we can look into doing that.
