{
  "openapi": "3.0.1",
  "info": {
    "title": "Code Violation & Distressed Property Leads",
    "description": "Recent building and housing code violations from New York City, Chicago, Austin, Cincinnati, Seattle, San Francisco, New Orleans and Norfolk in one format. Filter by ZIP code, keyword and open status, group by property, or get only new violations on a schedule. Official city open data, no API key.",
    "version": "0.5",
    "x-build-id": "kf9qodQ2PhHjR4vmn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datapenguin~code-violation-leads/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datapenguin-code-violation-leads",
        "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/datapenguin~code-violation-leads/runs": {
      "post": {
        "operationId": "runs-sync-datapenguin-code-violation-leads",
        "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/datapenguin~code-violation-leads/run-sync": {
      "post": {
        "operationId": "run-sync-datapenguin-code-violation-leads",
        "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": "Cities and sources",
            "type": "array",
            "description": "Which city files to search. Results are mixed evenly between the ones you pick. Leave empty for all nine.",
            "items": {
              "type": "string",
              "enum": [
                "nyc-housing",
                "nyc-buildings",
                "chicago",
                "austin",
                "cincinnati",
                "seattle",
                "san-francisco",
                "new-orleans",
                "norfolk"
              ],
              "enumTitles": [
                "New York City, housing code violations (HPD)",
                "New York City, building code violations with penalties (DOB ECB)",
                "Chicago, building violations",
                "Austin, code complaint cases",
                "Cincinnati, code enforcement cases",
                "Seattle, code complaints and violations",
                "San Francisco, building inspection notices of violation",
                "New Orleans, code enforcement cases",
                "Norfolk, VA, property violations"
              ]
            },
            "default": [
              "nyc-housing",
              "nyc-buildings",
              "chicago",
              "austin",
              "cincinnati",
              "seattle",
              "san-francisco",
              "new-orleans",
              "norfolk"
            ]
          },
          "daysBack": {
            "title": "Issued within the last (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only violations issued or cases opened in this many days. City files run a day or more behind, so a window of 1 day can come back empty.",
            "default": 14
          },
          "onlyOpen": {
            "title": "Only open violations",
            "type": "boolean",
            "description": "Keep only violations the city still lists as open or active. Turn off to include ones that were fixed, dismissed or closed.",
            "default": true
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Match any of these words in the violation type, description or address, for example vacant, roof, unsafe or rodent. Not case sensitive. Leave empty for no keyword filter.",
            "items": {
              "type": "string"
            }
          },
          "zipCodes": {
            "title": "ZIP code prefixes",
            "type": "array",
            "description": "Start of a ZIP code, for example 112 for much of Brooklyn, 787 for Austin, 981 for Seattle, 941 for San Francisco or 701 for New Orleans. Chicago, Cincinnati and Norfolk do not publish ZIP codes, so they are left out when you use this.",
            "items": {
              "type": "string"
            }
          },
          "groupByProperty": {
            "title": "One row per property",
            "type": "boolean",
            "description": "Combine violations at the same address into one row with a count, the first and latest dates and a list of the violations. Properties with the most violations come first. You are charged per row, so this gives fewer, fuller rows. It reads the whole date window, so long windows take longer.",
            "default": false
          },
          "includeRespondentNames": {
            "title": "Include respondent names (NYC DOB only)",
            "type": "boolean",
            "description": "Add the respondent named on New York City DOB ECB violations, usually the owner or a company. Off by default because it can name private people. Turn it on only if you have a lawful reason to use it.",
            "default": false
          },
          "onlyNew": {
            "title": "Only violations not seen before",
            "type": "boolean",
            "description": "Skip violations that an earlier run with the same filters already delivered. Use this on a scheduled run to get just the new ones each time. Changing any filter starts a fresh list.",
            "default": false
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most rows to return. You are charged per row, so this also caps what a run can cost.",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}