{
  "openapi": "3.0.1",
  "info": {
    "title": "US Construction Permit Intelligence",
    "description": "Find high-value US construction permits from official city data and turn them into ranked sales opportunities. The actor normalizes trades, scores leads, adds AI insight, and tells contractors, suppliers, and investors which permits to call now, qualify, monitor, or skip.",
    "version": "0.0",
    "x-build-id": "01pToJREUHlvkDjg4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/marielise.dev~us-construction-permit-intelligence/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-marielise.dev-us-construction-permit-intelligence",
        "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/marielise.dev~us-construction-permit-intelligence/runs": {
      "post": {
        "operationId": "runs-sync-marielise.dev-us-construction-permit-intelligence",
        "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/marielise.dev~us-construction-permit-intelligence/run-sync": {
      "post": {
        "operationId": "run-sync-marielise.dev-us-construction-permit-intelligence",
        "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": {
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Choose which official US city datasets to search.",
            "items": {
              "type": "string",
              "enum": [
                "los_angeles",
                "chicago",
                "new_york_city",
                "san_francisco",
                "austin",
                "miami",
                "seattle"
              ],
              "enumTitles": [
                "Los Angeles",
                "Chicago",
                "New York City",
                "San Francisco",
                "Austin",
                "Miami",
                "Seattle"
              ]
            },
            "default": [
              "los_angeles",
              "chicago",
              "new_york_city",
              "san_francisco",
              "austin",
              "miami",
              "seattle"
            ]
          },
          "tradeFocus": {
            "title": "Trade focus",
            "type": "array",
            "description": "Optional trade filters used to score and rank the most relevant permits.",
            "items": {
              "type": "string",
              "enum": [
                "general_construction",
                "new_construction",
                "renovation",
                "solar",
                "roofing",
                "hvac",
                "electrical",
                "fire_suppression",
                "plumbing",
                "demolition",
                "signage"
              ]
            },
            "default": []
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Optional free-text search across descriptions, permit types, addresses, and available party names. Example: tenant improvement, restaurant, panel upgrade, dormer."
          },
          "focusKeywords": {
            "title": "Extra include keywords",
            "type": "array",
            "description": "Additional keywords that increase ranking relevance.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop permits containing these keywords in the normalized searchable text.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "zipCodes": {
            "title": "ZIP codes",
            "type": "array",
            "description": "Optional list of 5-digit ZIP codes to narrow the results.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Optional property type filter after normalization.",
            "items": {
              "type": "string",
              "enum": [
                "residential",
                "commercial",
                "mixed_or_other"
              ],
              "enumTitles": [
                "Residential",
                "Commercial",
                "Mixed / Other"
              ]
            },
            "default": []
          },
          "issuedFrom": {
            "title": "Issued from",
            "type": "string",
            "description": "Start date in YYYY-MM-DD. Defaults to 30 days ago when left empty."
          },
          "issuedTo": {
            "title": "Issued to",
            "type": "string",
            "description": "End date in YYYY-MM-DD. Defaults to today when left empty."
          },
          "minReportedCost": {
            "title": "Minimum reported cost",
            "minimum": 0,
            "type": "number",
            "description": "Minimum reported cost / valuation in USD where available."
          },
          "maxReportedCost": {
            "title": "Maximum reported cost",
            "minimum": 0,
            "type": "number",
            "description": "Maximum reported cost / valuation in USD where available."
          },
          "minSignalScore": {
            "title": "Minimum signal score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Drop permits below this opportunity score.",
            "default": 35
          },
          "maxItemsPerSource": {
            "title": "Max permits per source",
            "minimum": 25,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum raw permits to fetch from each official source before scoring.",
            "default": 150
          },
          "maxItems": {
            "title": "Max permits to return",
            "minimum": 10,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum ranked permits returned after scoring and filtering.",
            "default": 200
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "signal_desc",
              "issue_date_desc",
              "valuation_desc"
            ],
            "type": "string",
            "description": "How to sort the ranked permits.",
            "default": "signal_desc"
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "full",
              "summary_only",
              "permits_only"
            ],
            "type": "string",
            "description": "Choose whether to return full results, only the summary, or only permit records.",
            "default": "full"
          },
          "aiMode": {
            "title": "AI intelligence",
            "enum": [
              "auto",
              "off"
            ],
            "type": "string",
            "description": "Use built-in OpenAI permit review when OPENAI_API_KEY is available in the actor environment. No API key is accepted in input.",
            "default": "auto"
          },
          "aiMaxItems": {
            "title": "Max AI-reviewed permits",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of top rule-ranked permits to send to OpenAI for deeper review.",
            "default": 15
          },
          "aiMinRuleScore": {
            "title": "Min rule score for AI review",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only permits at or above this rule-based score are considered for AI review.",
            "default": 60
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}