API Pricing

The PurpleAir API uses a points-based billing system. API calls consume points, and if you do not have enough points to make an API call, the API will return an error.

If you are a PurpleAir sensor owner, you can get data from your own sensor for free. See this article for more information: API Points for Sensor Owners

The points pricing table can be found below. The more points you purchase the more value you will get per dollar. The left column shows the price ranges and the right column shows the number of points you’ll receive per dollar.

Purchase Amount Points Per USD
$10 - $49 100,000 per USD
$50 - $249 150,000 per USD
$250 - $499 200,000 per USD
$500 - $999 300,000 per USD
$1,000 - $4,999 500,000 per USD
$5,000+ 1,000,000 per USD

If you spend $52, you will get 7.8 million points. This is because each dollar is worth 150,000 points at that price.
$52 x 150,000 = 7,800,000 points

The points you purchase will be applied to your “Organization.” More information is found here.

These values are subject to change. Please refer to develop.purpleair.com for the most current ranges. Feedback is welcome.

One Million Starting Points

New users start with one million points. The following two sections show examples of how much data one million points can download.

How Points Cost is Calculated

The point cost of a request is calculated with the following equation:

total_cost = endpoint_base_cost + (cost_of_all_fields * number_of_data_rows)

The base cost for each endpoint and the cost of each field can be found on the Developer Dashboard by navigating to “Billing” and selecting the “Pricing” tab.

Base Cost

Each API request has a base cost. This base cost depends on the endpoint being used, but is not more than five points.

Field Cost

Each field also has an associated point cost which is applied for each data point of that field returned in the response.

Each requested field’s cost is summed together in order to obtain a total field cost for your request. For example, requesting temperature, pm1.0_atm, and humidity_a results in a total field cost per data row of 5 points.

  • temperature has a cost of 2
  • pm1.0_atm has a cost of 2
  • humidity_a has a cost of 1

Some examples are included below using just the temperature field, which has a field cost of 2.

  • Requesting temperature from the Get Sensor Data endpoint will deduct 3 points. 1 for the base cost, and 2 for the field cost of the returned temperature data point.
    • 1 + (2 * 1) = 3
  • Requesting temperature from the Get Sensors Data endpoint will deduct 2 points for each temperature data point returned. If data for 100 sensors is returned, each reporting temperature, 205 points would be deducted. 5 for the base cost, and 200 for the total field cost.
    • 5 + (2 * 100) = 205
  • Requesting temperature from the Get Sensor History endpoint and receiving back 100 rows of temperature data will deduct 202 points. 2 point for the base cost, and 200 points for the total field cost.
    • 2 + (2 * 100) = 202
  • Requesting temperature from the Get Sensor History endpoint, but receiving no data rows in return will deduct 2 points. This is only the base cost, since no data was reported by the sensor during the requested time period.
    • 2 + (2 * 0) = 2

A Detailed Real-Time Data Example

This example will get the real-time “pm2.5” field every 10 minutes for a single sensor.

Using the “get_sensor” endpoint costs 1 point. The “pm2.5” field costs 2 points each time it is collected.
Getting the data every 10 minutes will result in 144 requests being made a day (1440 minutes in a day / 10 minute average).

To calculate the number of points spent daily, we need to add the cost of the endpoint to the cost of the fields. That number will then be multiplied by the number of sensors and the number of requests made daily. The final equation would look as follows:

(get_sensor + pm2.5) x 1 sensor x 144 daily requests = number of points spent daily

(1 + 2) x 1 x 144 = 432 points spent daily

To see how quickly this request will use the one million starting points, we divide one million by the number of points spent daily.

1,000,000 / 432 gives you 2,314 days of data, which is the same as 6.3 years of data.

A Detailed Historical Data Example

This example will get the historical data for ten sensors from January 1, 2022, to January 1, 2023. The fields collected will be “pm2.5_atm_a”, “pm2.5_atm_b”, “pm2.5_cf_1_a”, “pm2.5_cf_1_b”, and “temperature.” The example will also collect 60-minute (1-hour) averages.

The “get_sensor_history” endpoint costs 2 points to use. The total cost of the fields is 6 points per row (the “temperature” field costs 2 points because it is an average of two channels, while all of the other fields cost 1 point).

The PurpleAir Data Download Tool can create a cost estimate for historical requests. If you want to know the cost of a specific request, we recommend using this tool.

Detailed pricing can be enabled in the PurpleAir Data Download Tool by checking the checkbox next to “Show Detailed Points Cost” on the “Settings” page.

Using this tool, we can see that this request will make 270 API calls per sensor. The total cost of the requests per sensor will be 540 points (270 API calls * 2 points per request).

The PurpleAir Data Download Tool also shows us that each sensor will return 8,760 rows of data. This means the cost for all the rows per sensor is 52,560 points (8,760 rows * 6 points per row).

Now that we have both totals, we multiply them by the number of sensors. The total cost for all requests is 5,400 points (540 points * 10 sensors), and the total cost for all rows is 525,600 points (52,560 points * 10 sensors). Adding these two numbers together brings us to the total cost for our request: 531,000 points.

Collecting these five fields with a 60-minute average for a full year of data will spend just over half of the free one million starting points. Changing the time period to two years or lowering the average to 30-minute would bring the total to 1,061,800, just above the starting one million points.

Learn More

You can learn how to optimize your API usage.
Learn more about purchasing points and how to navigate the Online Dashboard.

1 Like

Since users in some cases are being charged to receive their own data I wonder why these same users are not given points in return for the ongoing data they provide from their purple air sensors.
Clearly this data has been monetized by purple air and so contributions of this data from users should be rewarded in some way by purple air.
I would suggest that points be granted by contributors that equal the amount of data supplied by a contributor’s sensor. Fair is fair.

12 Likes

One additional thing to consider is the cost of receiving, processing, storing, and fetching the data - even if only you were getting it, there would be a cost to provide the access. I’m glad to see Purple is trying to provide a way to offset these costs, and make access sustainable in the long term.

3 Likes

Purple air was started as a open data project to provide important information to the community on air quality world wide. This was and still is a important and significant goal for the world and made Purple air a compelling organization to receive community support.
The decision to charge for access to “open data” thereby monetizing the data is obviously incompatible with the original and very important goal of open data at Purple Air.
Yes there is a cost to host and provide access to this data that needs to be supported by the community but monetizing the data is a destructive way to support this cost.
It is important that management at Purple Air look to the open data models used in other community supported groups. The most common and successful model to move server costs into the community while maintaining free and open data access to all is to allow third party organizations to host data “mirrors” of the sensor data base that can be freely accessed by all. Purple Air management will find many willing university groups doing research on this subject that would set aside server space to host a Purple air data base mirror. Some commercial organizations will also offer server space to drive traffic and awareness to their WEB sites These mirrors can be updated from the main purple air data base by way of low data speed Rsync jobs running in the background. The result will be in time as mirrors proliferate around the world is the majority of queries to the purple air data base will be serviced by nearby mirrors and not directly from the purple air servers. Use of mirrors can be reinforced by making public access directly to the purple servers very bandwidth limited so users will move all large bulk access of data to nearby mirror servers.
This is how open community supported data can and does work. I hope it is a future purple air embraces to move their server load into the community as monetizing the data is the death of the open data project.

6 Likes

Frankly I am somewhat shocked that I have to pay to download my own data that I generated with a sensor that I paid for and for which I provide the infrastructure. I did this as part of an open data project not to create revenue in addition to purchasing the hardware.
The point of authority I am coming from is that I run several sites that provide data to the scientific community in the Ameriflux network. None of which is charged for, all of it is paid for by others and the US Government. Going beyond, we use US Govenrment paid for meteorological stations to run our country, airplanes, logistics, agriculture etc. None of that gets charged on a per data point basis.
I am aware that the “genius” idea for charging per data point may be compelling, but that was not the societal contract which was entered. One may also decide to turn all sensors to private, with less use for society or sell them on eBay. Take your hands out of the cookie jar!
Oh, and BTW, the internet backbone was also provided to you free of charge courtesy to the US Government.

4 Likes

This is bullshit. I came here to figure out why my JSON API key was not working. Greedy bastards is why. You’re going to charge me to access my data that I’m providing you for free after I bought the sensor? FUCK YOU
I’m taking it offline. FUCKERS

3 Likes

It is fair to complain; we are trying to figure out how to ensure we will be around in years to come and keep providing this service to as wide an audience as possible (the map is still free) while collecting some representation from those consuming the data to help pay the HUGE costs to run this.

This points system is the first attempt at this and will be improved, updated and modified based on feedback from the community. I hope you will calm down and come to the table to talk. Nicely.

Do you think it is fair you pay for the sensor, host it, and maintain it so that others can take the data for free, in some cases making money from it and passing it off as their own? Please be a part of the long-term solution and work with us. We will listen. I can promise you that.

Our intention is certainly not to make you pay for data from your own sensors. We will provide anyone with points to cover getting data from their sensors and this will be automated in the future - perhaps sensor owner API keys can access data at no cost from their own devices - or sensors that upload data add points to the owner API account. We are open to ideas and hope to work with you all on making this work for all while preventing exploitation of the data for profit and also the whole thing being funded by the sensor owners - is it not fair that some of the cost be shared by those benefiting from the data and absolutely those with commercial benefit?

2 Likes

So the data I am accessing is the one on my stations / sensors I paid for. They are run under my email, but I use a different email to download through the API key. Certainly that can be unified and yes, API keys could/should enable download for free the data one delivers (all of those towers) in a reasonable frequency. That was the premise under which we engaged.
The other aspect about how to run the network if you offer the sensors and cover the cost is a bigger question. You should consider engaging with DOE or NOAA (I can help with the former) and tap into a whole series of funding opportunities around Big Data, carbon sequestration, atmospheric research etc etc. There is acute interest to support such infrastructure and there is data infrastructure in place under the 5G networks that are being put up. Such Public-Private partnership might insure longterm stability better.

1 Like

I operate two Purple Air sensors, and use an API key in order to turn on/off an HVAC fan based on the outdoor air quality. The code is open source on Github (purpleAirRelayControl) and the project is non-commercial.

Based on the proposed pricing and a quick look at my dashboard, I would need to pay $20/yr to support my current single user usage. The usage totals 29 MB/yr.

Taking imgur arbitrarily as a comparison, it is free for non-commercial use and $0.001 per image request (up to 20 MB per image).

In other words, the proposed PurpleAir pricing is approximately 13,000x more expensive than imgur and there is no exception for non-commercial use. Even scaling down the typical image size on imgur to 2 MB yields a ratio of 1300:1. This is on top of charging users for the sensors that they maintain and contribute to the network.

I can optimize my API usage with some sacrifice to UX. For example, request only my own sensor rather than an additional neighboring sensor for averaging, and decrease the polling frequency to every 30 minutes. But regardless, the pricing per MB indicates that it is far in excess of the API operational cost.

Questions for PurpleAir:

  1. what is the implementation date for the price increase? My account is sitting in the negative but still working.

  2. why is your pricing regressive (more expensive per request for small/non-commercial users) rather than progressive (free or substantially cheaper for small/non-commercial users)?

  3. how did you choose your proposed prices and how do they compare with your data operating costs?

I’d like to continue using and supporting PurpleAir, but with the proposed pricing I’m not sure how the third-party ecosystem can continue to exist. I saw one reference to another non-commercial PurpleAir app that would cost the developer $36k per year. I don’t want to even imagine what something like Paku would cost.

Thanks.

3 Likes

Note that your $20/year price is fetching the air quality every 5 seconds (purpleAirRelayControl/PurpleAirRelayControl.ino at master · cassiedoll/purpleAirRelayControl · GitHub ?) for several sensors. Simply changing your polling frequency to 5 minutes would make the cost $0.33/year, and seems straightforward; I’m not sure if you have special circumstances where your air quality is changing extremely quickly and drastically.

Note that for many API’s, the cost is related to the number of calls (the CPU, memory, disk, and potential software license behind them) - it is not just the network bandwith, as your comparisons with imgur assume.

Lucien -
Sorry, but your reading of Github is incorrect. The code that you pointed to is a fork of a different user and was last touched two years ago. If you want to dredge through the details then this is what you want.

My cost estimate was based on polling 3-4 sensors for 2 fields once every 5 minutes (from the dashboard: 288 calls per day, 21 points per call on average = 2.2M points/yr). The latest code as deployed is 2 sensors for 1 field every 20 minutes. The use case is responding to sometimes fast moving smoke at the edge of a national forest, so minutes not hours.

Anyways, it will be good to hear from PurpleAir staff. This is why I tried to compare the pricing to another service and asked question #3. There’s probably a more appropriate comp. I’m just trying to figure out what the plan is so that I can act accordingly.

1 Like

In case this is also helpful feedback, I just created an account here to let you know that I was about to purchase two or more devices but was dismayed to see that the current API pricing implementation does, in fact, appear to charge people for access to the data they have contributed. In addition, if I understand how “organizations” work, the pricing actually appears to penalize people with multiple devices even more (it appears that initial free “points” are allocated to “organizations”, and then all of the devices share those “points”?). While I’d like to say I could wait until the promised improvements to the API pricing are implemented, you may have lost a potential customer since I’m not sure whether to trust that these changes will come, and that they will come quickly enough. (It seems like the initial allocation of “points” should be enough to provide reasonable levels of access to two devices for a significant period of time, but that assumes that there aren’t issues with accidental overuse due to implementation errors or other problems, and it also assumes that I have some reason to trust that the API pricing won’t actually become worse instead of better.)

Since the choices made here come in the context of API pricing shenanigans elsewhere in the news, I hope you can understand that this raises concerns about decision-making at PurpleAir even more than it otherwise might. It also seems to express an adversarial relationship with customers that is unfortunate to see.

I really want to believe that I can trust that accommodations will be made to ensure customers won’t be charged in order to have access to the data they contribute. I really do. I just don’t know if that’s enough for me to go ahead and spend money on the devices at this time.

This also reminds me of how publishers of academic journals often treat the authors of the content they publish. It’s not a good look.

2 Likes

I’m glad to hear that, but your terms of service are pretty explicit that PurpleAir claims to exclusively own all the data produced by their products, so that’s an empty statement – you already give us free access to all 0 data owned by us.

IMHO, you need to rewrite the ToS to actually match the values you claim to have. I’d like to buy from PurpleAir (nice community, recommended products by others I trust, etc), but the ToS are a blocker for me. (Also, anti-FOSS terms? why??)

4 Likes

I started pulling some of my sensor data using the download tool and noticed that if I were to pull every metric for my sensor, the tool estimated that it would use a bit over half of my credits/points.

Now, I don’t have to pull everything, but it made me wonder if we get more credits each month, assuming our sensors are contributing data? I understand the need to charge for API access, and have no issues there, and I like that as a data coItributor, I get 1M points to start with, but looking through a few related posts I couldn’t, find a definitive answer.

2 Likes

Our company would like to make a bulk purchase of API credits, but we’d like to know a bit more before we purchase:
1.) Do API credits ever expire?
2.) Once we pay an amount, will our connected account receive an emailed receipt for reimbursement?

Not seeing these details anywhere on the API portal.

Evan, credits do not expire and you will receive an email confirming payment.

1 Like

We are working on the terms of service.

1 Like

I think something may have gone wrong in the purchase process. Is there a customer support email I can contact?

@Evan_Wagstaff You can send an email to contact@purpleair.com