MD Baltimore Environmental-Code Violations (ECB)
Pricing
from $0.03 / 1,000 citation records
MD Baltimore Environmental-Code Violations (ECB)
Baltimore City environmental-code violation citations (~150.8k, open data): nuisance/trash/tobacco citations by the Environmental Control Board against a property. Citation number, address, status (Open/Paid/Abated/Voided), fine & balance, hearing, district. Property code-enforcement diligence.
Pricing
from $0.03 / 1,000 citation records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Baltimore City Environmental-Code Violations (ECB)
The city's environmental-code enforcement ledger - every citation the Baltimore Environmental Control Board has issued against a property, in one queryable dataset. Property-level code-enforcement diligence: the violation history of one address, an open-balance sweep, or a district-wide view.
Data
Baltimore City, Maryland open data (public Environmental Control Board register). ~155k citations spanning two decades, actively updated (violations through September 2026).
Each record carries:
- Citation number - the citation's stable key
- Violation location - the property address cited (fully populated)
- Description - the violation (nuisance / trash / abatement / tobacco and more, e.g. "FAILURE TO REMOVE OR ABATE ALL NUISANCES")
- Status - normalized to Open (~97k, balance still owing) / Paid (~51k) / Abated (~1.9k) / Voided (~4.4k)
- Fine amount, balance - what was assessed and what is still owed
- Resolution buckets - total paid / abated / voided by resolution
- Lien code - whether the citation carries a lien (L on ~125k)
- Hearing - hearing date / status
- Dates - violation date, due date, last paid date
- Place - block / lot, neighborhood, police district, council district
Low cost
From $0.00005 per record, down to $0.00003 at Gold
The source publishes this as a wide flat table where status is a padded
single character and dates come back as raw millisecond timestamps - fine for
the city's own map, painful if you want to actually cut it by place, status or
money. We made the ledger directly queryable: citationNumber / address /
status / minBalance-maxBalance / policeDistrict / neighborhood /
violation-date windows all filter before a record returns, status reads as
plain Open / Paid / Abated / Voided, and groupBy (counts by status /
district / neighborhood / lien code) comes back as clean server counts.
You query a violation ledger that behaves like a database; the cleanup stays
on our side.
Every record is one flat JSON object - no PDFs, no portal pagination.
Use cases
- Property violation history - every citation against an address, with status, fines and balance
- Open-balance sweeps - properties with outstanding code-enforcement balances above a threshold
- Code-enforcement analysis - aggregate citations by district, neighborhood or lien status to see enforcement patterns
Inputs
| Field | What it does |
|---|---|
citationNumber | exact citation lookup |
address | violation-address substring |
status | open / Paid / Abated / Voided |
minBalance / maxBalance | outstanding-balance range |
policeDistrict / neighborhood / blockLot | find by place |
violatedFrom / violatedTo | violation-date window |
aggregate + groupBy | counts by status / district / neighborhood / council district / lien |
Example inputs
One citation by number
{"citationNumber": "58073123", "maxResults": 5}
Open balances of $500 or more - status=open means the balance is still owing.
{"status": "open", "minBalance": 500, "maxResults": 25}
Citations on one street - address is a substring match on the violation location.
{"address": "Reisterstown", "maxResults": 25}
Citations by status - aggregate=true returns one summary row per group with a count.
{"aggregate": true, "groupBy": "status"}
Output fields
citationNumber / status / lienCode / description / violationLocation
/ violationDate / dueDate / hearingDate / hearingStatus /
fineAmount / balance / totalPaid / totalAbated / totalVoided /
lastPaidDate / lastPaidAmount / neighborhood / policeDistrict /
councilDistrict / block / lot.
Honesty note: this ledger names properties (addresses), not individuals. The source's police-district column carries a few misspellings (e.g. "Notheastern") that are passed through as published. The register is served from the city's hosted ArcGIS Online org - always verify a live run's row content, since that org has at times served stale copies to cloud IPs.
Example output
One citation - citationNumber=58073123 returns the citation:
{"platform": "md-ecb-citations","source": "baltimore-ecb","groupKey": "","groupCount": "","groupBy": "","citationNumber": "58073123","status": "Open","lienCode": "L","description": "UNREGISTERED OR INOPERABLE VEHICLE","violationLocation": "2827 WINCHESTER ST","violationDate": "2026-09-08","dueDate": "2026-10-11","hearingDate": "","hearingStatus": "","fineAmount": "50","balance": "50","totalPaid": "0","totalAbated": "0","totalVoided": "0","lastPaidDate": "","lastPaidAmount": "0","neighborhood": "Winchester","policeDistrict": "Southwestern","councilDistrict": "9","block": "2388","lot": "034M"}
aggregate=true, groupBy=status - citations by status:
Open ~97kPaid ~51kVoided ~4.4kAbated ~1.9k
Source: Baltimore City open data (Environmental Control Board citations, public records).