Open Due August 31, 2026 0 submitted

Berkeley zoning districts and what you can actually build

Every zoning district in Berkeley, California, with the rules that decide what fits on a lot: allowed housing types, height limit, density, setbacks, parking, and the section of the Berkeley Municipal Code the numbers come from.

What to deliver

  • 2 minimum · 6 preferred · 32 maximum files
  • How much of each field to fill is spelled out below
  • 220 MB total, at most
  • Every file gets a tamper-proof fingerprint on upload
  • 1+ “documentation” file
  • 1+ “evidence” file

Accepted formats

.MD.PDF.TXT.PNG.JPG.JPEG

What each record needs

district_codetextRequired

Zoning district code. The official short code for the zoning district.

Produce it: Exactly as the Berkeley Municipal Code writes it, uppercase. Examples: R-1, R-2A, MU-LI, C-DMU. One row per district; do not merge districts.

Output path: district_code

Coverage: 30 minimum populated · 38 preferred · 60 maximum · 100% minimum · 100% target

Flat-file columns: districtzonecode

Example: R-2A

Missing values: Not allowed.

Source: Cite the Berkeley Municipal Code section that establishes the district.

Buyer review: Reject invented or merged district codes.

district_nametextRequired

District name. The full written name of the district.

Produce it: The name as the code gives it, for example 'Restricted Two-Family Residential District'. Plain text, no abbreviations of your own.

Output path: district_name

Coverage: 30 minimum populated · 38 preferred · 60 maximum · 100% minimum · 100% target

Flat-file columns: namedistrict_name

Example: Restricted Two-Family Residential District

Missing values: Not allowed.

Source: Same code section as the district code.

Buyer review: Name must match the code text.

district_categorytextRequired

District category. The broad family the district belongs to.

Produce it: Exactly one of: residential, commercial, manufacturing, mixed_use, open_space, institutional, overlay.

Output path: district_category

Coverage: 30 minimum populated · 38 preferred · 60 maximum · 100% minimum · 100% target

Flat-file columns: categorytype

Example: residential

Missing values: Not allowed.

Buyer review: Category must be defensible from the district's purpose statement.

max_height_feetdecimalOptional

Maximum building height (feet). The base height limit for the district in feet, before any bonus.

Produce it: The by-right base limit in feet. If the code gives only stories, convert and say how in the methodology file. If the district has no numeric limit, leave blank rather than guessing.

Output path: max_height_feet

Coverage: 22 minimum populated · 34 preferred · 60 maximum · 70% minimum · 90% target

Flat-file columns: heightmax_height

Example: 35

Missing values: Allowed When the code sets no numeric height limit for the district..

Source: Cite the code section giving the height limit.

Buyer review: Re-read the cited section. A number that is not in the code fails the submission.

max_storiesintegerOptional

Maximum stories. Base story limit for the district.

Produce it: Whole number as written in the code. Blank if the code sets no story limit.

Output path: max_stories

Coverage: 16 minimum populated · 30 preferred · 60 maximum · 50% minimum · 80% target

Flat-file columns: storiesmax_stories

Example: 3

Missing values: Allowed When the code sets no story limit..

Source: Cite the code section.

Buyer review: Must match the cited section.

min_lot_area_sqftdecimalOptional

Minimum lot area (square feet). Smallest permitted lot size in the district.

Produce it: In square feet, as the code states. Blank if the code sets none.

Output path: min_lot_area_sqft

Coverage: 16 minimum populated · 30 preferred · 60 maximum · 50% minimum · 80% target

Flat-file columns: min_lotlot_area

Example: 5000

Missing values: Allowed When the code sets no minimum lot area..

Source: Cite the code section.

Buyer review: Must match the cited section.

multifamily_allowedtextRequired

Multifamily housing permitted. Whether housing with three or more units is allowed in the district, and on what terms.

Produce it: Exactly one of: by_right, use_permit, conditional, not_allowed. Read the district's use table, not the district name.

Output path: multifamily_allowed

Coverage: 30 minimum populated · 38 preferred · 60 maximum · 100% minimum · 100% target

Flat-file columns: multifamilymf_allowed

Example: use_permit

Missing values: Not allowed.

Source: Cite the use-table section you read.

Buyer review: Re-read the use table for sampled districts. A wrong permission value fails the submission.

parking_min_per_unitdecimalOptional

Minimum parking spaces per dwelling unit. Required off-street parking per unit in the district.

Produce it: Spaces per dwelling unit. Enter 0 where parking minimums have been removed. Blank only if the code genuinely does not address it.

Output path: parking_min_per_unit

Coverage: 16 minimum populated · 30 preferred · 60 maximum · 50% minimum · 80% target

Flat-file columns: parkingparking_ratio

Example: 1

Missing values: Allowed When the code does not set a residential parking ratio for the district..

Source: Cite the parking section.

Buyer review: Zero is a real answer and must not be confused with blank.

code_citationtextRequired

Code citation. The Berkeley Municipal Code sections the row was read from.

Produce it: Section numbers, semicolon separated. Example: BMC 23.202.020; BMC 23.304.030. Must be the sections you actually read.

Output path: code_citation

Coverage: 30 minimum populated · 38 preferred · 60 maximum · 100% minimum · 100% target

Flat-file columns: citationsection

Example: BMC 23.202.020; BMC 23.304.030

Missing values: Not allowed.

Source: This column is the source attribution.

Buyer review: Open the cited section. If it does not say what the row says, the row fails.

source_urlurlRequired

Source URL. Public link to the code section or zoning page the row came from.

Produce it: A working public URL on codepublishing.com, berkeleyca.gov, or another official host. No paywalled or login-gated links.

Output path: source_url

Coverage: 30 minimum populated · 38 preferred · 60 maximum · 100% minimum · 100% target

Flat-file columns: urllink

Example: https://berkeley.municipal.codes/BMC/23.202.020

Missing values: Not allowed.

Source: This column is the source link.

Buyer review: Sampled links must resolve and must contain the cited text.

captured_atdateRequired

Date captured. The date the row was read from the code.

Produce it: ISO 8601, YYYY-MM-DD. Zoning changes; we need to know how current the read is.

Output path: captured_at

Coverage: 30 minimum populated · 38 preferred · 60 maximum · 100% minimum · 100% target

Flat-file columns: datecaptured_at

Example: 2026-08-10

Missing values: Not allowed.

Buyer review: Reject dates more than 60 days before submission.

View the full field spec
{
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "district_code",
      "district_name",
      "district_category",
      "multifamily_allowed",
      "code_citation",
      "source_url",
      "captured_at"
    ],
    "properties": {
      "source_url": {
        "type": "string",
        "title": "Source URL",
        "format": "uri",
        "examples": [
          "https://berkeley.municipal.codes/BMC/23.202.020"
        ],
        "maxLength": 500,
        "description": "Public link to the code section or zoning page the row came from."
      },
      "captured_at": {
        "type": "string",
        "title": "Date captured",
        "format": "date",
        "examples": [
          "2026-08-10"
        ],
        "description": "The date the row was read from the code."
      },
      "max_stories": {
        "type": "integer",
        "title": "Maximum stories",
        "maximum": 40,
        "minimum": 0,
        "examples": [
          "3"
        ],
        "description": "Base story limit for the district."
      },
      "code_citation": {
        "type": "string",
        "title": "Code citation",
        "examples": [
          "BMC 23.202.020; BMC 23.304.030"
        ],
        "maxLength": 300,
        "minLength": 5,
        "description": "The Berkeley Municipal Code sections the row was read from."
      },
      "district_code": {
        "type": "string",
        "title": "Zoning district code",
        "examples": [
          "R-2A"
        ],
        "maxLength": 20,
        "minLength": 1,
        "description": "The official short code for the zoning district."
      },
      "district_name": {
        "type": "string",
        "title": "District name",
        "examples": [
          "Restricted Two-Family Residential District"
        ],
        "maxLength": 200,
        "minLength": 3,
        "description": "The full written name of the district."
      },
      "max_height_feet": {
        "type": "number",
        "title": "Maximum building height (feet)",
        "maximum": 400,
        "minimum": 0,
        "examples": [
          "35"
        ],
        "description": "The base height limit for the district in feet, before any bonus."
      },
      "district_category": {
        "type": "string",
        "title": "District category",
        "examples": [
          "residential"
        ],
        "description": "The broad family the district belongs to."
      },
      "min_lot_area_sqft": {
        "type": "number",
        "title": "Minimum lot area (square feet)",
        "minimum": 0,
        "examples": [
          "5000"
        ],
        "description": "Smallest permitted lot size in the district."
      },
      "multifamily_allowed": {
        "type": "string",
        "title": "Multifamily housing permitted",
        "examples": [
          "use_permit"
        ],
        "description": "Whether housing with three or more units is allowed in the district, and on what terms."
      },
      "parking_min_per_unit": {
        "type": "number",
        "title": "Minimum parking spaces per dwelling unit",
        "maximum": 10,
        "minimum": 0,
        "examples": [
          "1"
        ],
        "description": "Required off-street parking per unit in the district."
      }
    },
    "additionalProperties": false
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "minItems": 30
}

Record relationships

No cross-field rules are required.

Files and relationships

documentation

Methodology write-up

One file, plain prose is fine.

1 minimum · 1 preferred · 2 maximum files · .md, .pdf, .txt · 10 MB each
evidence

Code excerpts

Must collectively cover at least 20 percent of submitted rows.

1 minimum · 5 preferred · 30 maximum files · .pdf, .png, .jpg, .jpeg · 25 MB each

Rights and sourcing

  • Must be free to use commercially
  • Whoever delivers it confirms they have the right to share it
AcceptedCC0-1.0CC-BY-4.0ODC-BY-1.0

Additional instructions

Anyone evaluating a Berkeley site has to read the zoning ordinance district by district to learn what is buildable. We want that turned into one clean table so a site can be screened in seconds instead of an afternoon.