ENES
berkinfo.org

Data

Where the numbers come from

Including the ones this site refuses to publish, and why.

Week of October 5–11, 2026 · Updated Friday, October 9, 2026 · Source: Berkeley's agenda listing (live)

⎙ Print / save as PDF


Where the numbers about Berkeley actually live, what each source will not tell you, and the two or three things that are quietly wrong if nobody warns you about them.

Open data — on the old domain, and that is not a mistake

Berkeley runs a real, live Socrata open-data portal with 66 datasets at data.cityofberkeley.info. The city also keeps a landing page for it.

Note the host. The city’s main site was renamed to berkeleyca.gov and the data portal did not follow. data.berkeleyca.gov has no DNS record at all — it does not fail politely, it does not resolve. If you see that address anywhere, including in something this site’s own code generated, it is wrong. The legacy host is the live one.

Actually maintained

Two datasets change every day. They are the reason the portal is worth opening at all.

Refreshed occasionally, and still current

Static because the underlying thing is static

Present, and older than it looks

This is where the portal will mislead you if you sort by the wrong column. Socrata shows two timestamps — when the metadata record was last touched, and when the data last changed. Dozens of these files show a recent metadata date and have not had a new row in years.

About half the portal is duplicated GIS layers published under two different ID families — a “map” asset and a “dataset” asset for the same thing, sometimes under slightly different names. Council Districts sits at both b2uf-vm3c and c8zs-8y7x; Parcels at bhxd-e6up and rax9-nuvx; Zoning at 2dtu-vge3 and iknk-w4qw. Pick one family and stay in it. Mixing them produces joins that look right and are not.

What Berkeley’s open data does not have

These three refusals are not oversights on the city’s part being reported snidely. They are load-bearing: each one is a thing people routinely assume exists.

Berkeley by the numbers

From the American Community Survey five-year estimates for Berkeley city. Five-year estimates are averages over a window, which is why they are stable enough to publish on a page that is not rebuilt daily — and why they lag a fast-moving rental market.

Population120,257
Housing units53,145
Occupied households47,135
Owner-occupied20,829 · 44.2%
Renter-occupied26,306 · 55.8%
Median gross rent$2,133
Median value, owner-occupied$1,413,900
Median household income$108,092
Renter households paying 35%+ of income on rent48.6%

Two of those numbers deserve a sentence each.

Berkeley is a renter city. Fifty-six per cent of occupied households rent. That is the arithmetic behind an elected rent board, and it is why a policy argument here that sounds like it is about buildings is usually about tenure.

Nearly half of renter households spend 35% or more of their income on rent. Read that number carefully rather than quoting it: Berkeley has a very large student population with low reported income, which pushes the cost-burden share above what a comparable non-university city would show. It is still a real figure about real households, and it is still extraordinary. Both things are true, and a source that gives you the number without the caveat is doing you no favours.

Meetings and decisions — there is no API

Berkeley is not a Legistar city. There is no meeting API, no eComment, no official iCal feed. Anyone who tells you otherwise has confused Berkeley with a city that has one, which is easy to do: *.legistar.com returns a 200 response for any subdomain you invent, so checking a tenant by status code proves nothing at all.

What Berkeley actually publishes:

The feed bug worth knowing about. The Granicus <pubDate> field renders the hour in 12-hour form with no AM/PM marker, and hard-codes a winter timezone offset all year round. A standards-compliant parser reads a 6:00 p.m. Council meeting as a 6:00 a.m. one and is wrong by twelve hours, silently, on every single meeting. The correct field is <gran:pubDateParts>, and the scheduled start time exists only as text inside the item title. This site reads the parts element. It is the reason our times are right and it is the single most useful thing on this page for anyone building something similar.

Weather

Forecasts come from the National Weather Service grid point MTR/91,108. That is not an approximation borrowed from a neighbouring town: the Berkeley centroid lands exactly inside it, and the service’s own relative-location field returns Berkeley at a distance of zero metres. Radar is KMUX.

Air quality — read the label

Berkeley is genuinely covered by AirNow, and unlike some Bay Area cities the reading includes PM2.5 as well as ozone — PM2.5 being the number people actually want during wildfire smoke.

But there is no Berkeley reporting area. Every AirNow reading shown for this city is the Oakland reporting area, run by the Bay Area Air District, whose centroid sits about eight kilometres south. That is close enough to be genuinely informative and far enough that it is not a Berkeley monitor — and on a smoke day, when the difference between the flats and the hills can be larger than the difference between two cities, it matters. This site labels the reading with its reporting area on the page, every time, rather than only in a comment in the source. Presenting a neighbouring area’s reading under this city’s name is how a sister site got it wrong once already.

Elections

Candidate filings, certified results and precinct data come from the Alameda County Registrar of Voters, not from the city. See Vote — including a note about the dead link the city’s own pages still publish.

What this site does not have, and will not fake

No crime dashboard, no permit tracker, no current budget visualisation. In each case the underlying data either does not exist in machine-readable form or is a decade out of date, and a fabricated version would be worse than none.

If you build something on this portal, check the data timestamp rather than the metadata timestamp, and check it per file. It is the difference between a live map and a museum piece that looks live.