{
  "openapi": "3.0.1",
  "info": {
    "title": "US Building Permits Feed (37 Cities & Counties, One Schema)",
    "description": "New building permits from official open-data portals in 37 US cities and counties (NYC, LA, Chicago, Philadelphia, San Antonio, DC, Boston, Denver, Miami and more) in one schema with trade tags (solar, roofing, HVAC, ADU...). Filter by trade, keyword, value. No API key.",
    "version": "0.1",
    "x-build-id": "HcI8qpC7sZEIlkCvB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/novadata~city-building-permits-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-novadata-city-building-permits-feed",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/novadata~city-building-permits-feed/runs": {
      "post": {
        "operationId": "runs-sync-novadata-city-building-permits-feed",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/novadata~city-building-permits-feed/run-sync": {
      "post": {
        "operationId": "run-sync-novadata-city-building-permits-feed",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Which cities and counties to pull. Leave empty for all 37.",
            "items": {
              "type": "string",
              "enum": [
                "chicago",
                "nyc",
                "los_angeles",
                "san_francisco",
                "austin",
                "seattle",
                "new_orleans",
                "baton_rouge",
                "philadelphia",
                "washington_dc",
                "columbus",
                "fort_worth",
                "nashville",
                "denver",
                "louisville",
                "baltimore",
                "detroit",
                "miami",
                "miami_dade_county",
                "minneapolis",
                "cleveland",
                "raleigh",
                "tacoma",
                "bellevue",
                "boulder",
                "pierce_county",
                "cincinnati",
                "norfolk",
                "mesa",
                "cambridge",
                "montgomery_county_md",
                "marin_county",
                "corona",
                "everett",
                "san_jose",
                "san_antonio",
                "boston"
              ],
              "enumTitles": [
                "Chicago, IL",
                "New York City, NY",
                "Los Angeles, CA",
                "San Francisco, CA",
                "Austin, TX",
                "Seattle, WA",
                "New Orleans, LA",
                "Baton Rouge, LA",
                "Philadelphia, PA",
                "Washington, DC",
                "Columbus, OH",
                "Fort Worth, TX",
                "Nashville, TN",
                "Denver, CO",
                "Louisville, KY",
                "Baltimore, MD",
                "Detroit, MI",
                "Miami, FL",
                "Miami-Dade County, FL",
                "Minneapolis, MN",
                "Cleveland, OH",
                "Raleigh, NC",
                "Tacoma, WA",
                "Bellevue, WA",
                "Boulder, CO",
                "Pierce County, WA",
                "Cincinnati, OH",
                "Norfolk, VA",
                "Mesa, AZ",
                "Cambridge, MA",
                "Montgomery County, MD",
                "Marin County, CA",
                "Corona, CA",
                "Everett, WA",
                "San Jose, CA",
                "San Antonio, TX",
                "Boston, MA"
              ]
            }
          },
          "issuedWithinDays": {
            "title": "Issued within the last N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Permits with an issue date in the last N days (Fort Worth: filing date, because it doesn't publish an issue date). Cities publish with a lag of 1 to 10 days. San Jose's feed only covers the last 30 days.",
            "default": 7
          },
          "trades": {
            "title": "Trades",
            "type": "array",
            "description": "Keep permits tagged with any of these trades. Tags are keyword heuristics on permit type and description.",
            "items": {
              "type": "string",
              "enum": [
                "solar",
                "roofing",
                "hvac",
                "electrical",
                "plumbing",
                "ev_charger",
                "generator",
                "pool",
                "new_construction",
                "demolition",
                "remodel",
                "addition",
                "adu",
                "windows_doors",
                "fence",
                "sign",
                "fire_protection",
                "elevator",
                "foundation"
              ]
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Case-insensitive match against permit type and description. Any keyword matches.",
            "items": {
              "type": "string"
            }
          },
          "minValue": {
            "title": "Minimum project value (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Drop permits with a declared value below this. Permits with no value count as 0."
          },
          "requireContractor": {
            "title": "Only permits with a contractor name",
            "type": "boolean",
            "description": "Keep only permits that name a contractor. Some cities don't publish contractor names (for example Los Angeles, San Francisco, Washington DC, Boston, San Antonio, Detroit, Baltimore, Tacoma), so this removes them.",
            "default": false
          },
          "includePersonNames": {
            "title": "Include individual people's names",
            "type": "boolean",
            "description": "Off by default. When on, adds homeowner names (Chicago, NYC, New Orleans) and sole-proprietor contractor names (Austin) where the city publishes them, and keeps applicant/contact names that don't look like a business (Nashville, Minneapolis, Louisville, Miami-Dade, Bellevue, Mesa, Marin County, Everett). Owner names, phones and e-mails are never returned for the cities added in v0.2. Check your local privacy and marketing laws before using personal names for outreach.",
            "default": false
          },
          "includeRaw": {
            "title": "Include raw source record",
            "type": "boolean",
            "description": "Adds the untouched city record under 'raw'.",
            "default": false
          },
          "dedupe": {
            "title": "De-duplicate permit numbers",
            "type": "boolean",
            "description": "Keep only the most recent row per permit number (NYC lists renewals of the same permit; SF repeats a permit per address).",
            "default": true
          },
          "maxPerCity": {
            "title": "Max results per city",
            "minimum": 0,
            "type": "integer",
            "description": "0 = no per-city cap.",
            "default": 0
          },
          "maxItems": {
            "title": "Max results (total)",
            "minimum": 1,
            "type": "integer",
            "description": "You are charged per permit, so this also caps cost.",
            "default": 1000
          },
          "socrataAppToken": {
            "title": "Socrata app token (optional)",
            "type": "string",
            "description": "Not required. A free token from any Socrata portal raises rate limits for very large pulls."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}