{
  "openapi": "3.0.1",
  "info": {
    "title": "🏗️ Municipal Building Permits & Construction Lead Radar",
    "description": "Extract newly issued building permits from 6 major US cities (Chicago, Austin, NYC, Seattle, SF, LA) via free official SODA APIs. Get roofing, solar, new construction, and demolition leads with contractor details, job valuations, and GPS coordinates.",
    "version": "0.0",
    "x-build-id": "CkCWDDMdveAkoDVBK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_studio~building-permit-radar/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_studio-building-permit-radar",
        "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/automation_studio~building-permit-radar/runs": {
      "post": {
        "operationId": "runs-sync-automation_studio-building-permit-radar",
        "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/automation_studio~building-permit-radar/run-sync": {
      "post": {
        "operationId": "run-sync-automation_studio-building-permit-radar",
        "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 to Monitor",
            "type": "array",
            "description": "Select one or more US cities to pull building permit data from. Each city uses its official open government SODA API — 100% free, no authentication required.",
            "items": {
              "type": "string",
              "enum": [
                "chicago",
                "austin",
                "nyc",
                "seattle",
                "san_francisco",
                "los_angeles"
              ],
              "enumTitles": [
                "Chicago, IL (City of Chicago Open Data)",
                "Austin, TX (Austin Open Data)",
                "New York City, NY (NYC Open Data DOB)",
                "Seattle, WA (Seattle Open Data)",
                "San Francisco, CA (SF Open Data)",
                "Los Angeles, CA (LA Open Data)"
              ]
            },
            "default": [
              "chicago",
              "austin"
            ]
          },
          "permitTypes": {
            "title": "🔨 Permit Type Filter",
            "type": "array",
            "description": "Select one or more permit types to filter results. Leave empty to capture ALL permit types for maximum lead volume. Keyword matching is case-insensitive and works across all 6 cities.",
            "items": {
              "type": "string",
              "enum": [
                "roofing",
                "solar",
                "new_construction",
                "renovation",
                "demolition",
                "electrical",
                "plumbing",
                "hvac",
                "addition",
                "commercial",
                "residential",
                "repair"
              ],
              "enumTitles": [
                "Roofing (roof replacement, re-roof)",
                "Solar / PV (photovoltaic installation)",
                "New Construction (new building, new dwelling)",
                "Renovation / Remodel (interior/exterior improvement)",
                "Demolition (full or partial structure removal)",
                "Electrical (wiring, panel, service upgrade)",
                "Plumbing (pipes, fixtures, water service)",
                "HVAC / Mechanical (heating, cooling, ventilation)",
                "Addition (building expansion)",
                "Commercial (office, retail, industrial)",
                "Residential (single/multi-family)",
                "Repair (structural or general repair)"
              ]
            },
            "default": []
          },
          "daysBack": {
            "title": "📅 Days Back to Scan",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Number of past calendar days of permits to retrieve (1 = today only, 7 = past week, 30 = past month). Max: 90.",
            "default": 7
          },
          "maxResults": {
            "title": "📊 Max Permit Records",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum total permit records to collect across all selected cities per run.",
            "default": 200
          },
          "minJobValue": {
            "title": "💰 Minimum Job Valuation (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include permits where estimated job value is at or above this threshold. Set to 0 to capture all permits regardless of value.",
            "default": 0
          },
          "webhookUrl": {
            "title": "🔔 Webhook Alert URL (Discord / Slack)",
            "type": "string",
            "description": "Optional Discord or Slack webhook URL for instant permit alert cards."
          },
          "proxyConfiguration": {
            "title": "Apify Proxy Configuration",
            "type": "object",
            "description": "Apify Proxy configuration. Government SODA APIs are public — proxy is optional.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}