CA San Francisco Building Permits avatar

CA San Francisco Building Permits

Pricing

$0.10 / 1,000 ca san francisco permit records

Go to Apify Store
CA San Francisco Building Permits

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

Wenhao Yang

Maintained by Community

Actor 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:

TypeWhat it isCount
OTC alterations permitover-the-counter alterations973,920
Additions / alterations / repairsthe standard alteration bucket271,440
Sign - erect / wall or painted signsignage~25,000
New construction (incl. wood frame)brand-new buildings~15,600
Demolitionsteardowns7,312
Grade / quarry / fill / excavatesite work835

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 delta mode.
  • "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

InputWhat it does
moderows (default) / delta (change stream) / aggregate
permitTypepermit type: new construction, additions alterations or repairs, OTC alterations, demolitions, sign, grade
statuscomplete / issued / expired / cancelled / filed / withdrawn / approved / ... Blank = any
aduOnlyADU permits only
address / streetNamestreet filter
neighborhood / supervisorDistrict / zipcodewhere the work is
issuedFrom/To / createdFrom/Todate-range filters
changedSincefor delta mode: rows touched on/after this date
groupByaggregate over status / permitTypeDescription / neighborhood / supervisorDistrict / zipcode / proposedUse
maxResultscap 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.