{
  "openapi": "3.0.1",
  "info": {
    "title": "Los Angeles Parking Tickets - Every Citation Issued",
    "description": "Every parking citation Los Angeles has issued (public open data, 25.8M tickets): violation code and description, fine, exact location with coordinates, issuing agency, and the vehicle as recorded (plate state, expiry, make, colour, body style). Filter by code, agency, location or date.",
    "version": "0.0",
    "x-build-id": "sHOZLQOxYLZbgd0ri"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/j0401~la-parking-tickets/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-j0401-la-parking-tickets",
        "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/j0401~la-parking-tickets/runs": {
      "post": {
        "operationId": "runs-sync-j0401-la-parking-tickets",
        "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/j0401~la-parking-tickets/run-sync": {
      "post": {
        "operationId": "run-sync-j0401-la-parking-tickets",
        "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": {
          "violationCode": {
            "title": "Violation code (contains)",
            "type": "string",
            "description": "Substring match on the Municipal Code section, e.g. '80.69BS' (no parking / street cleaning), '88.13B' (meter expired), '80.56E4' (red zone). 807 codes in total. Blank = any.",
            "default": ""
          },
          "violation": {
            "title": "Violation description (contains)",
            "type": "string",
            "description": "Substring match on the plain-language violation text, e.g. 'RED ZONE', 'METER EXP', 'STREET CLN', 'PREFERENTIAL'. Blank = any.",
            "default": ""
          },
          "agency": {
            "title": "Issuing agency",
            "enum": [
              "",
              "50 - DOT - HARBOR",
              "51 - DOT - WESTERN",
              "52 - DOT - WILSHIRE",
              "53 - DOT - VALLEY",
              "54 - DOT - HOLLYWOOD",
              "55 - DOT - SOUTHERN",
              "56 - DOT - CENTRAL",
              "57 - HABITUAL VIOLATORS",
              "58 - SPECIAL EVENTS",
              "59-DOT-DISABLED PLACARD TASK FORCE",
              "60 - DOT - RESIDENTIAL TASK FORCE",
              "61 - CORT  METRO",
              "AIRPORT BACK",
              "AIRPORT CURRENT",
              "AMTRAK POLICE DEPT",
              "BANDIT CAB TASK FORCE",
              "BUILDING AND SAFETY",
              "CALIFORNIA HIGHWAY PATROL",
              "CALIFORNIA STATE POLICE",
              "CA PARKS & REC",
              "CENTRAL",
              "FIRE DEPARTMENT",
              "GENERAL SERVICES DEPARTMENT",
              "HOLLYWOOD",
              "HOUSING DEPARTMENT",
              "HPV",
              "LAPD BACKLOG",
              "LAPD CURRENT",
              "LAPD SECURITY SERVICES",
              "LA SANITATION",
              "LAX CURRENT",
              "LIBRARY - SECURITY FORCE",
              "MARSHALLS OFFICE",
              "NO AGENCY",
              "PARK RANGERS",
              "PUBLIC UTILITIES",
              "SOUTHERN",
              "STREET USE INSPECTORS",
              "UNASSIGNED",
              "VALLEY",
              "VN AIRPORT",
              "WESTERN"
            ],
            "type": "string",
            "description": "Exact issuing unit. The department's numbered beats carry a prefix ('54 - DOT - HOLLYWOOD') while the same beats also appear bare ('HOLLYWOOD'), so a beat can be split across two values - both are listed. 'UNASSIGNED' covers 247,803 tickets. Blank = any.",
            "default": ""
          },
          "color": {
            "title": "Vehicle colour",
            "enum": [
              "",
              "BEIGE",
              "BLACK",
              "BLUE",
              "BROWN",
              "COPPER",
              "GOLD",
              "GREEN",
              "GREY",
              "MAROON",
              "ORANGE",
              "OTHER",
              "PURPLE",
              "RED",
              "SILVER",
              "TAN",
              "TURQUOISE",
              "UNKNOWN",
              "WHITE",
              "YELLOW"
            ],
            "type": "string",
            "description": "Exact colour as recorded by the officer. Blank = any.",
            "default": ""
          },
          "bodyStyle": {
            "title": "Vehicle body style",
            "enum": [
              "",
              "BUS",
              "COMMERCIAL",
              "LIMOUSINE",
              "MOTOR HOME",
              "PASSENGER CAR",
              "PICK-UP TRUCK",
              "TRAILER",
              "TRUCK",
              "VAN"
            ],
            "type": "string",
            "description": "Exact body style, e.g. 'PASSENGER CAR' (22.9M), 'PICK-UP TRUCK', 'VAN', 'TRUCK'. Blank = any.",
            "default": ""
          },
          "ticketNumber": {
            "title": "Ticket number (contains)",
            "type": "string",
            "description": "Substring match on the citation number for a single-ticket lookup. Blank = any.",
            "default": ""
          },
          "location": {
            "title": "Location (contains)",
            "type": "string",
            "description": "Substring match on the street address as recorded, e.g. 'HOLLYWOOD BL', 'VERMONT AV'. Blank = any.",
            "default": ""
          },
          "make": {
            "title": "Vehicle make (contains)",
            "type": "string",
            "description": "Substring match on the vehicle make, e.g. 'TOYOTA', 'HONDA', 'FORD'. 4,902 distinct values (free text as typed by the officer). Blank = any.",
            "default": ""
          },
          "plateState": {
            "title": "Plate state (contains)",
            "type": "string",
            "description": "Substring match on the plate's issuing state, e.g. 'CA' (24.1M), 'AZ', 'TX', 'NV'. 80 distinct values. Blank = any.",
            "default": ""
          },
          "issueFrom": {
            "title": "Issued from",
            "type": "string",
            "description": "Earliest issue date, YYYY-MM-DD. Blank = any. The upper bound is always today: a handful of clerical typos run to 2034 and would otherwise head every 'newest first' page.",
            "default": ""
          },
          "issueTo": {
            "title": "Issued to",
            "type": "string",
            "description": "Latest issue date, YYYY-MM-DD. Blank = any. Must not be in the future.",
            "default": ""
          },
          "minFine": {
            "title": "Minimum fine",
            "type": "number",
            "description": "Smallest fine amount in dollars. Fines run from $0 to $1,100. Blank = no lower bound."
          },
          "maxFine": {
            "title": "Maximum fine",
            "type": "number",
            "description": "Largest fine amount in dollars. Blank = no upper bound."
          },
          "recentDays": {
            "title": "Issued within the last N days",
            "minimum": 0,
            "type": "integer",
            "description": "Only citations issued within the last N days. Ignored when 'Issued from' is set. 0 = off.",
            "default": 0
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "rows",
              "aggregate"
            ],
            "type": "string",
            "description": "rows = citations matching your filters (default). aggregate = one count row per group (see groupBy).",
            "default": "rows"
          },
          "groupBy": {
            "title": "Aggregate by",
            "enum": [
              "",
              "violationCode",
              "agency",
              "color",
              "bodyStyle"
            ],
            "type": "string",
            "description": "Which dimension to aggregate over (mode=aggregate). Blank = violationCode. Every group is returned - aggregate mode is not cut off by maxResults. Vehicle make is deliberately absent: 4,902 free-text values is not a rollup.",
            "default": ""
          },
          "maxResults": {
            "title": "Max records",
            "minimum": 0,
            "type": "integer",
            "description": "Cap the number of records pushed in rows mode (0 = default 50; up to 2,000 per run). Each record is metered individually, so there is no per-run charge cap. Aggregate mode returns every group.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}