
Property Code-Violation & Lien History (Open-Data Cities)
Before buying, leasing or insuring a US property, reads the city's own open-data code-enforcement records for one address (or a NYC BBL/BIN) and returns normalized violations with date opened, category, description, open/closed status, source severity class and record URL; deterministic counts by status, category and year; days since the latest violation; the longest repeat-citation streak (citations within 90 days of each other); and a rule-based distress indicator (none/watch/elevated) with every rule, value and threshold shown (open_records 1/5, open_hazardous 1/3, recent_records 3/10, repeat_streak 3/6, lien_listings 1/2). NYC also reads DOB/ECB summonses and the DOF tax/water lien sale list by tax lot. Covered cities: New York City, NY, Chicago, IL, San Francisco, CA, Seattle, WA, Austin, TX, Los Angeles, CA, Philadelphia, PA, Boston, MA. An uncovered city is rejected with the supported list before payment. Addresses are normalized and matched on number, direction, street and type; differently written streets are reported but never merged, and ambiguous matches return INSUFFICIENT_DATA. No LLM. Reports public records only: not ownership, title or legal advice; no alerts; private records and county tax-lien sales are not checked, and lien data is covered only for NYC.
What you get
A buyer, lender or agent gets a source-linked, reproducible record of a building's enforcement history and a transparent distress flag, instead of an unsourced model summary or a manual hunt across city portals.
Call it
Send the JSON body below to https://agents.writerslogic.com/api/v1/property-violations. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.
curl -i -X POST https://agents.writerslogic.com/api/v1/property-violations \
-H 'content-type: application/json' \
-d '{"address":"1255 S Wabash Ave, Chicago, IL","lookback_years":10}'
Input
| Field | Type | Required | Description |
|---|---|---|---|
address | string; length 5..200 | no | US street address with city and state, e.g. '447 21st Ave, San Francisco, CA 94121'. Give exactly one of address, bbl or bin. |
city | string; length 0..60 | no | City, when not inside address. For NYC a borough name (Brooklyn, Queens, ...) narrows the match. |
state | string; length 0..2 | no | Two-letter state, when not inside address. |
zip | string; length 0..10 | no | ZIP code (informational; not used to widen a match). |
bbl | string | no | NYC borough-block-lot, 10 digits. |
bin | string | no | NYC building identification number, 7 digits. |
lookback_years | integer; 1..30 | no | Years of history to read (default 10). |
Example request body
{
"address": "1255 S Wabash Ave, Chicago, IL",
"lookback_years": 10
}
Result
The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.
| Field | Type | Required | Description |
|---|---|---|---|
status | string; one of "RECORDS_FOUND", "NO_RECORDS_FOUND", "INSUFFICIENT_DATA" | yes | INSUFFICIENT_DATA: the address was ambiguous or only matched differently written streets; nothing is reported rather than guessed. |
reason | string | yes | |
as_of | string | yes | |
lookback | object | no | |
coverage | object | no | City, dataset ids with URLs, the address-matching rule and what the dates mean. |
match | object | yes | |
counts | object | yes | |
latest_violation | one of | no | |
repeat_streak | object | no | |
distress | object | yes | Rule-based indicator: the highest level any rule reaches. Every rule, value and threshold is listed. |
violations_total | integer | no | |
violations_returned | integer | no | |
violations | array<object> | yes | |
liens | object | yes | |
complaints_note | string | no | |
truncated | boolean | no | |
partial | boolean | yes | |
failures | array<string> | no | |
not_checked | array<object> | yes | |
supported_cities | array<string> | no | |
source_manifest | array<object> | no | |
llm | string; one of "not_used" | no | |
disclaimer | string | yes |
Pay and connect
Available through: x402 (USDC on Base), MCP, RapidAPI, Apify.
Machine-readable
- This agent as JSON (schemas, example, OpenAPI operation)
- Free signed sample response
- OpenAPI 3.1 · Catalog · Index of every agent