I hooked up a PM2.5 sensor[1] I ordered during wildfires a few years ago, and the EPA's AirNow has been far more consistent with what I'm measuring than Purple Air or IQAir.
Accuweather and Windy.com have pretty good forecasts, but the ones that have been the most accurate this week for me are the US Forest Service's BlueSky models.
[1] Plantower PMS7003 are less than $20 on AliExpress. Here's a quick plot of the data https://i.imgur.com/FjABgpP.png including a spike where it was above a grill.
I'm surprised though why the data is so different between airnow and purpleair. On AirNow, SF currently shows unhealthy air (150~) whereas purpleair shows 88 (moderate). Which one of these is more reliable and real-time?
Someone posted a Medium article [0] on the /r/bayarea subreddit where they did some digging into this. Apparently the sensors used by Purple Air rely on a constant that represents the average density of the particles it detects. Because wood smoke particles are less dense than typical PM 2.5 particles, the resulting AQI values are too high.
The Lane Regional Air Protection Agency has developed a conversion formula that is built into Purple Air (if you apply the LRAPA conversion factor in the UI), so you can have a better comparison.
AirNow uses official EPA sensor sites, which are professionally maintained but fewer in number. These will have the highest quality data.
That said, the PurpleAir devices use high quality laser particulate sensors, so they're still significantly more accurate than most consumer devices.
Both are real time, but during a wildfire where smoke is shifting between neighborhoods, I'd go with the PurpleAir site to get a score for your particular neighborhood. Just be sure to turn on the LRAPA scoring model, as others have mentioned.
In addition to what other commenters have said, I'd guess that some purpleair sensors are placed in garages or other places with a local concern for air quality. That may explain some of the local variation you see on purpleair.
I think the main difference is that airnow mainly relies on expensive sensors with government-approved calibration. There are only a few such sensors per county.
Airnow's map shows both the government sensors and the Purple Air sensors, but that seems to be a recent "pilot project". I doubt they use the low-cost sensor data anywhere else.
AirNow's data _can_ be less accurate. For example, punching in a Lamorinda ZIP code only returns results for Oakland ("Oakland reporting area"), even if the ZIP correctly shows the right locale.
PurpleAir lets me see my neighbor's air quality stats...two houses away. PurpleAir is much more relevant and accurate for me.
The shortcoming of the AirNow data is the sparse sampling. If you search for your city you can see the caveat underneath with something like "AnyTown Reporting Area". When you look at the sensor coverage it's much more sparse than the corresponding PurpleAir sensor coverage.
There's also the fire map that includes both public and private sensors, the regular interactive map I don't believe uses all the available sensors.
https://fire.airnow.gov/
> Notice: The Sensor Data Pilot adds a new layer of air quality data from low-cost sensors.
Airnow's map is slow to load, but shows smoke, air monitors (including the Purple Air ones^[footnote]), and fires all at once: https://fire.airnow.gov/?lat=37.40&lng=-122.077&zoom=10#
A less detailed, fast, static map for the SF Bay Area is available at http://www.baaqmd.gov.
Last, but not least, there is a forecast of surface-level smoke available at https://hwp-viz.gsd.esrl.noaa.gov/smoke/. I found it from https://twitter.com/NWSBayArea, which is a good source of news for the Bay Area.
[footnote]: To make the numbers match, I had to set PurpleAir to show One-Hour Averages with the LRAPA scoring. See https://imgur.com/a/d6yFtow.