# California Hazmat Reporting Deadlines (HMBP / CERS) by CUPA (`kotaro-project/california-hazmat-reporting-deadlines`) Actor

Annual Hazardous Materials Business Plan (HMBP) reporting deadline for any California county or CUPA agency - one county or one agency per query - with whether it differs from March 1, verified fees where available, submission method, official contact and the date each record was verified.

- **URL**: https://apify.com/kotaro-project/california-hazmat-reporting-deadlines.md
- **Developed by:** [KOTARO project](https://apify.com/kotaro-project) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.05 / agency record

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## California Hazmat Reporting Deadlines (HMBP / CERS)

California's state default deadline for the annual Hazardous Materials Business Plan (HMBP) is **March 1** — but many local agencies (CUPAs) set **their own** date. Missing it can mean late fees and re-inspections.

This Actor answers one question at a time — **one county's agencies, or one agency** — for **104 California CUPAs and participating agencies**:

- the agency's annual reporting deadline and whether it differs from the state default (26 agencies differ)
- annual fee schedule where it has been verified (otherwise marked `unverified`)
- late fee only where it has been verified (otherwise marked as not published — ask the agency)
- how to submit (CERS electronic submission)
- the agency's official public contact (phone, email, address, website)
- when each record was verified, with a note on what was read (the fee document is named where one was used)
- a pointer to a reminder service and a disclaimer on every record

### Input examples

All agencies in Los Angeles County:

```json
{ "county": "Los Angeles" }
```

One agency:

```json
{ "keyword": "Anaheim" }
```

### Output example

```json
{
  "state": "California",
  "county": "Los Angeles",
  "agency": "Los Angeles County Fire Department, Health Hazardous Materials Division",
  "agencyType": "CUPA",
  "annualReportDeadline": "March 15",
  "stateDefaultDeadline": "March 1",
  "differsFromStateDefault": true,
  "lateFeeUsd": 505,
  "reinspectionFeeUsd": 520,
  "annualFees": {
    "Hazardous materials handler — small": 370,
    "Hazardous materials handler — medium": 948,
    "...": "..."
  },
  "feeSource": "Los Angeles County Fire Department — CUPA fee schedule FY24-25",
  "submission": "CERS electronic submission",
  "agencyContact": {
    "phone": "(323) 890-4000",
    "email": "askhhmd@fire.lacounty.gov",
    "website": "https://fire.lacounty.gov/ca-environmental-reporting/"
  },
  "verified": "2026-07-27 read on the agency's own site, plus its published fee schedule (PDF)",
  "feeVerified": "2026-08-21 — read on the agency's own published fee schedule",
  "annualFeesStatus": "verified",
  "lateFeeStatus": "verified",
  "reminderService": "Get reminders before your deadline: https://aegis.neuro-hive.jp",
  "disclaimer": "Informational only, not legal advice. Always confirm the latest deadline and fees with the agency before filing."
}
```

This agency is one of the few with a verified late fee. For most agencies `lateFeeUsd` is `null` and `lateFeeStatus` reads `"not published in this dataset - ask the agency"`; where the fee schedule has not been verified, `annualFeesStatus` is `"unverified"`.

If the input is empty, or an agency name matches more than one agency without a county, the run returns a single record with `"error"` explaining what to add, and nothing is charged.

### Who uses this

EHS managers, compliance software, consultants and AI agents that need to schedule HMBP filings for facilities across California.

### Pricing

Pay per result: **$0.05 per agency record** — you are charged only for the agency records returned (for example, all of Los Angeles County is 18 records, $0.90).

Get reminders before your deadline: https://aegis.neuro-hive.jp

### Disclaimer

Informational only, not legal advice. This Actor does not file reports on your behalf. Deadlines and fees can change; confirm with the agency before filing. Data compiled from official agency websites and published fee schedules by the AEGIS project.

### Keywords

California hazmat data, HMBP deadline information, CERS, CUPA, hazardous materials business plan, EHS compliance data

# Actor input Schema

## `county` (type: `string`):

California county, e.g. Los Angeles, Orange, San Diego. Returns the agencies of that one county. Either county or agency name is required.

## `keyword` (type: `string`):

Agency name, e.g. Anaheim Fire. Without a county it must match exactly one agency.

## `onlyDifferentFromState` (type: `boolean`):

When a county is given: return only the agencies whose deadline is not March 1.

## Actor input object example

```json
{
  "onlyDifferentFromState": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("kotaro-project/california-hazmat-reporting-deadlines").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("kotaro-project/california-hazmat-reporting-deadlines").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call kotaro-project/california-hazmat-reporting-deadlines --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kotaro-project/california-hazmat-reporting-deadlines"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/9zXWn6snsjwpvRfLt/builds/1YByJmhYE2oTkfFZp/openapi.json
