Building permits by block
x_permits_blockrelease v0.7.1CC0 1.0
About
One assessor block and one kind of building permit (DataSF i98e-djp9, PDDL), filed 1982-2026: distinct permit numbers and the first year of that kind. kind=all is every permit. Not from the Internet Archive (DataSF open data, PDDL).
- How far to trust it
- The release passed its automatic checks before it was published (what is checked). A hand check by the editor of qipu data is under way: 36 of 38 items checked so far were right, on votes, money, places and the map. A row says what the record states; the scanned page is the authority. Details
- Licence
- CC0 1.0: use it for anything, no permission needed. The scans and other sources keep their own rights.
- Version
- v0.7.1, published 21 October 2026. A published release is never changed; corrections come as a new release.
Technical details
- Table
- x_permits_block
- Rows
- 28,708
- Columns
- 4
- Parquet
- x_permits_block.parquet, < 0.1 MB
- Version
- v0.7.1, 21 October 2026
- Licence
- CC0 1.0. Sources keep their own rights.
Rows
Rows by kind
| Value | Rows | Share | |
|---|---|---|---|
| reroof | 4,784 | 16.7% | |
| kitchen_bath | 4,768 | 16.6% | |
| seismic | 4,010 | 14.0% | |
| change_use | 3,647 | 12.7% | |
| more_units | 2,988 | 10.4% | |
| fire | 2,179 | 7.6% | |
| adu | 1,759 | 6.1% | |
| sign | 1,683 | 5.9% | |
| soft_story | 1,530 | 5.3% | |
| solar | 1,360 | 4.7% |
Method and accuracy
No accuracy measure for this table yet.
The release passed its automatic checks before it was published (what is checked). A hand check by the editor of qipu data is under way: 36 of 38 items checked so far were right, on votes, money, places and the map. A row says what the record states; the scanned page is the authority.
Columns 4
| Column | Type | Can be empty | Privacy | Public copy | Description |
|---|---|---|---|---|---|
| block | VARCHAR | yes | none | as is | Assessor block. |
| kind | VARCHAR | no | none | as is | all, reroof, kitchen_bath, solar, soft_story, seismic, adu, more_units, fire, sign, change_use (keyword and field rules in permits_blocks.py). Values adu, all, change_use, fire, kitchen_bath, more_units, reroof, seismic, sign, soft_story, solar |
| permits | BIGINT | yes | none | as is | Distinct permit numbers filed since 1982. |
| first_year | BIGINT | yes | none | as is | Year the first permit of that kind was filed. |
Privacy: what kind of text the column holds. Public copy: what the published file does with it; the embargo covers records after 1951.
Preview
| block | kind | permits | first_year |
|---|---|---|---|
| qipu:sf/place/block/0767 | kitchen_bath | 5 | 2007 |
| qipu:sf/place/block/1616 | change_use | 3 | 1990 |
| qipu:sf/place/block/1680 | change_use | 7 | 2015 |
| qipu:sf/place/block/3604 | soft_story | 1 | 2019 |
| qipu:sf/place/block/4792 | kitchen_bath | 13 | 1986 |
| qipu:sf/place/block/6090 | change_use | 9 | 2008 |
| qipu:sf/place/block/6471 | adu | 2 | 2021 |
| qipu:sf/place/block/7102 | reroof | 1 | 2004 |
Eight rows sampled at build time. Hover a shortened value for all of it.
Download
| Format | File | Size |
|---|---|---|
| Parquet | x_permits_block.parquet ↗ | < 0.1 MB |
| SQLite (all tables) | qipu_sf.db ↗ | 6.44 GB |
SQL
Run in the SQL console (DuckDB in the browser, over the Parquet file).