Two public records in one place: a daily log of every Active and Expired rental license in Philadelphia, and a full archive of every rental-license violation the City has issued since 2010.
Every license status change captured since the 2026-08-21 baseline — expirations, renewals (lapses closed), new licenses and licenses that left the set. Type a street address, an OPA account number, a ZIP code, or a license number, then Search. This is the daily diff the City throws away.
Note: the license log only reaches back to 2026-08-21 — it cannot show a status from before that date. For older enforcement history, use the violations search further down (back to 2010). To look up a property’s current status, use the live tool: 4philly.net (opens in a new tab).
Just what moved on the most recent run — replaced by a new day each day. The full history below is never overwritten; this is a live window onto the newest entries.
Philadelphia publishes rental license data across four public surfaces. Every one shows only a license’s current state. When a license expires and is later renewed, the lapsed period is overwritten — no public system can tell you what a license’s status was on a given past date.
| Surface | Expiration? | Renewal date? | Status history? |
|---|---|---|---|
Atlas atlas.phila.gov | no column | no | no |
Property History li.phila.gov | no row | no | no |
eCLIPSE eclipse.phila.gov | yes | partial | no |
Carto API phl.carto.com | yes | yes (hidden field) | no |
Violations are different. When L&I cites a property for operating without a valid rental license, that record is permanent. It carries its own dates, case number, resolution and public notice document — and a later renewal does not erase it. That enforcement history reaches back to 2010.
| Was this license expired on a given past date? | Not available — overwritten |
| When was it last renewed? | Available — mostrecentissuedate |
| Was the property cited for operating unlicensed, and when? | Available & permanent — since 2010 |
Once a day this project pulls the City’s public Carto data and appends only what changed to permanent logs. Each day is a timestamped Git commit, and GitHub’s Activity log records every push — including any force-push — with compare links, visible to anyone with read access. See REWRITE_LOG.md for any history changes.
curl -O https://thumpersecure.github.io/phl-rental-license-log/changes.ndjson
One JSON object per line (NDJSON).
grep '"licensenum":"602204"' changes.ndjson | jq .
jq -c 'select(.diff.licensestatus.to == "Expired")' changes.ndjson
jq -c 'select(.diff.licensestatus.from == "Expired" and
.diff.licensestatus.to == "Active")' changes.ndjson
curl -O https://thumpersecure.github.io/phl-rental-license-log/violations_changes.ndjson
jq -c 'select(.new.violationcode | startswith("9-3902"))
| {case:.new.casenumber, addr:.new.address,
issued:.new.violationdate, status:.new.violationstatus,
resolved:.new.violationresolutiondate}' violations_changes.ndjson
grep '"address":"315-23 N 12TH ST"' violations_changes.ndjson | jq .
Each record includes publicnov — a direct link to the City’s official Notice of Violation PDF.
curl -s https://thumpersecure.github.io/phl-rental-license-log/latest.json | jq .
| changes.ndjson | Append-only. One line per detected change. |
| violations_changes.ndjson | Rental-license violations (§ 9-3902), 2010–present. |
| violations_latest.json | Summary of the most recent violations run. |
| state.json | Last-known state of every tracked license. |
| latest.json | Summary of the most recent run. |
| README.md | Full documentation. |
{"ts":"…","licensenum":"602204","change":"updated",
"diff":{"licensestatus":{"from":"Expired","to":"Active"}}, "new":{…}}
{"ts":"…","licensenum":"000001","change":"initial","new":{…}}
{"ts":"…","licensenum":"…","change":"left_set","last":{…}}
License fields tracked: licensestatus, expirationdate, mostrecentissuedate (renewal), inactivedate, plus address, OPA account and ZIP.
Violation fields tracked: violationcode, violationcodetitle, violationstatus, violationdate, violationresolutiondate, casestatus, underappeal, publicnov.
Search every rental-license violation the City issued before August 22, 2026 — the historical record. Type a street address, an owner name, an OPA account number, or a ZIP code, and (optionally) pick a council district. No spreadsheet required.
How to read a result: a red OPEN / IN VIOLATION tag means the case was not yet resolved as of the data pull; a grey COMPLIED / CLOSED tag means it was cured. A violation means the City cited that property for operating a rental without a current license. Not every lapse gets cited, so a property with no result here is not proof it was always licensed.