CA San Francisco Building Permits
Pricing
$0.10 / 1,000 ca san francisco permit records
CA San Francisco Building Permits
San Francisco building permits (public open data, 1.3M records) - the city's full permit file with engineering depth (cost, use, units, ADU, occupancy, status, dates, neighborhood). Filter by type/status/ADU/address or pull the daily change stream.
Pricing
$0.10 / 1,000 ca san francisco permit records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
CA San Francisco Building Permits - the City's Full Permit File
The City & County of San Francisco publishes its entire building-permit file - every permit issued in the city, going back to the earliest electronic records - as open data. This actor turns that register into a charged-per-record lookup, filter and change-stream tool.
Built for: construction & development leads (who just pulled what permit, what's being built where), ADU / housing-market research (SF's ADU boom), property & real-estate diligence, permitting-activity analytics by neighborhood / district, and anyone who wants to watch the permit office's daily change stream without polling the whole city.
What it covers
1,295,048 permits - the complete file, active and historical. SF keeps every permit on record, so the register spans:
| Type | What it is | Count |
|---|---|---|
| OTC alterations permit | over-the-counter alterations | 973,920 |
| Additions / alterations / repairs | the standard alteration bucket | 271,440 |
| Sign - erect / wall or painted sign | signage | ~25,000 |
| New construction (incl. wood frame) | brand-new buildings | ~15,600 |
| Demolitions | teardowns | 7,312 |
| Grade / quarry / fill / excavate | site work | 835 |
Each permit carries its engineering depth - not just a number and a status:
- estimated & revised cost, existing vs proposed use, units and occupancy, existing vs proposed construction type, existing/proposed stories
- ADU / reroof / soft-story retrofit / fire-only / site-permit flags - SF's ~3,269 true ADU permits are first-class citizens here
- the full status-date chain: creation / filed / issued / completed / approved / last-activity
- address (street number + name + suffix + unit), block & lot, supervisor district, analysis neighborhood, ZIP, and latitude/longitude
- the source's work-description free text
Status
Permits end in many ways, and SF stores them as compact lowercase values. Key values: complete (743,162) / issued (247,662) / expired (232,344) / cancelled / filed / withdrawn / approved / revoked / denied. The live, in-progress slice is roughly issued + filed + plancheck; everything else is history.
Typical questions
- "What permits did SF issue last month?" (date range on the issued date)
- "Show the ADU permits - where are SF's accessory dwellings going in?"
- "Recent new-construction permits in the Mission."
- "Every permit on this address - current and historical."
- "How much new housing is being entitled by district?"
- "What changed at the permit office today?" - the daily
deltamode. - "Aggregate the whole register by status or neighborhood."
Daily change stream (delta mode)
SF's register carries a data_loaded_at marker that advances every night when the city refreshes the feed. delta mode returns exactly the rows that refresh touched since a date you pick - so "what's new since Tuesday" is a small, precise pull, not a scan of 1.3M rows. This is the change stream other city-permit tools don't expose.
Inputs
| Input | What it does |
|---|---|
mode | rows (default) / delta (change stream) / aggregate |
permitType | permit type: new construction, additions alterations or repairs, OTC alterations, demolitions, sign, grade |
status | complete / issued / expired / cancelled / filed / withdrawn / approved / ... Blank = any |
aduOnly | ADU permits only |
address / streetName | street filter |
neighborhood / supervisorDistrict / zipcode | where the work is |
issuedFrom/To / createdFrom/To | date-range filters |
changedSince | for delta mode: rows touched on/after this date |
groupBy | aggregate over status / permitTypeDescription / neighborhood / supervisorDistrict / zipcode / proposedUse |
maxResults | cap records (default 200) |
Default run = the 200 most recently touched permits - fast for the daily auto-test. For a targeted query add a filter; for a broad view use aggregate (a handful of summary rows, not a 1.3M-row dump).
Low cost
From $0.0001 per record - billed only for the rows you use, at the platform floor. Cost scales with what you pull, not with the size of the register - and because each record is metered individually there's no per-run charge cap to hit on a big pull.
SF's permit file is a "just download the CSV" dataset that hides real traps: estimated cost is stored as a text column (so it can't be range-filtered the way you'd expect, and the naive sort returns garbage), status is a 23-value lowercase enum that mixes lifecycle stages (a complete permit, an issued one, and an expired one are three different things and the file doesn't separate them for you), the interesting flags are one-character markers (ADU is 'Y'/'N'; reroof, fire-only and site permits are 'Y'/blank), and the type you'd search by is split across a numeric code and a human name. Normalizing that into a register where a permitType / status / date / delta query returns exactly the permits you mean is the actual product. Every pull is integrity-checked against the feed's known shape, so a degraded source fails loudly instead of returning bad rows.
Source
- SF Open Data: Building Permits - the City & County of San Francisco's published register. Reflects the city's record as of each daily refresh; not an endorsement of any project or contractor.