Pittsburgh Code Violations – Distressed Real Estate Leads
Pricing
from $2.10 / 1,000 violation records
Pittsburgh Code Violations – Distressed Real Estate Leads
Pittsburgh PLI code violations: address, parcel, case type, outcome, from WPRDC, updated daily. Court fields are in the output but empty in the current source data. Free sample (85 rows, real output): https://drive.google.com/uc?export=download&id=1LLx5jmX8LuIdpvL7MVVY7_bZjhDjS-vz
Pricing
from $2.10 / 1,000 violation records
Rating
0.0
(0)
Developer
Groundplane Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Features
Share
The Pittsburgh code violations scraper gives you one row per code violation case for Pittsburgh, PA, straight from the City of Pittsburgh Permits, Licenses & Inspections (PLI) via the official WPRDC open-data API. No login or coding needed: run it in your browser, on a schedule, or through the Apify API, and export results as JSON, CSV or Excel.
Pull City of Pittsburgh code violation cases from the Department of Permits, Licenses & Inspections (PLI) through the official WPRDC open data API. The data is updated daily.
Free sample
Download a free sample (85 rows, real actor output, CSV): https://drive.google.com/uc?export=download&id=1LLx5jmX8LuIdpvL7MVVY7_bZjhDjS-vz — check the columns and data quality before you run anything.
What you get
Each result is one investigation record on a case, so a caseNumber can repeat across investigations of the same case. Fields: case number, property address, parcel ID, case type (Vacant Building, Weeds/Debris, Refuse...), status, investigation date and outcome, the inspector's findings, neighborhood, ward and coordinates. Two honest caveats about the source data: the violation-detail columns (violation description, code section, instructions) and the court columns (court date, docket number, court decision) are part of the output schema but are empty in the current source data - in the city's data model the court information lives on separate case events, and the violation columns are not populated in this report. The populated fields above are the ones to build on.
Use cases
- Real estate investors and wholesalers: find distressed and vacant properties. Join on parcel ID with county assessment data.
- Contractors, roofers, junk removal and landscapers: find properties with open repair orders (the source has no owner names; look up owners in county assessment records).
- Researchers and community groups: track enforcement by neighborhood.
How to scrape Pittsburgh code violations
- Click Try for free (or Start) on this page. A free Apify account is enough.
- Leave the prefilled input to get a quick sample, or set the filters described below.
- Set maxItems to cap how many rows (and how much) a run returns.
- Click Start and wait a few seconds to a minute.
- Download the results as JSON, CSV or Excel, or connect them to Google Sheets, Zapier, Make or a webhook.
Input
| Field | Description |
|---|---|
| caseTypes | e.g. Vacant Building, Refuse |
| neighborhoods | e.g. Hazelwood |
| onlyViolationsFound | Default true, which drops unfounded complaints |
| onlyCourtCases | Keep cases sent to court |
| investigatedSince | Real YYYY-MM-DD date. Default: the source's newest investigation date minus 14 days. Invalid dates fail with a clear message. |
| maxItems | Default 200 |
Example input (quick canary)
{"onlyViolationsFound": true,"onlyCourtCases": false,"maxItems": 5}
Pricing (pay per event)
$4 per 1,000 records ($0.004 each), plus Apify's minimal $0.00005 start fee. Example: the default 200 records cost about $0.80. If a run hits your max charge limit, it stops cleanly and reports how many rows it delivered.
Notes
Public records via the official API. Owner names are not included in the source. Not affiliated with the City of Pittsburgh or WPRDC.
Freshness: PLI investigations reach WPRDC with a lag - in late October 2026 the newest published investigation was about 11 days old, and the lag varies. Every run reports the newest investigation date it found in its status message, and ends PARTIAL naming that date when the source looks stale, so you always know how current the data is. Because of the lag, the default 14-day window returns the most recent published investigations, not the last 14 days of city activity.
Sample output
{"caseNumber": "CF-PLI-2026-067313","address": "1200 HIGHMAN ST, Pittsburgh, PA 15205","parcelId": "0018A00186000000","status": "In Violation","caseType": "Vacant Buildings","investigationDate": "2026-10-09","outcome": "Violation Found","findings": "vacant condemned structure no utilities \n\nviolation present ","violationDescription": null,"codeSection": null,"codeSectionTitle": null,"instructions": null,"courtDate": null,"docketNumber": null,"courtDecision": null,"latitude": 40.4328635101,"longitude": -80.0466354855,"neighborhood": "Westwood","ward": "28","councilDistrict": "2","source": "City of Pittsburgh PLI via WPRDC"}
Source, license & data caveats
Source: Pittsburgh PLI Violations Report (WPRDC), license Creative Commons CCZero (CC0), refreshed daily by the city. Data is provided as published; findings are the inspector's free text.
FAQ
How much does it cost to scrape Pittsburgh code violations?
You pay $0.004 per result ($4 per 1,000) plus a $0.00005 start fee, and nothing else. That is the free-plan price: on paid Apify plans you pay less per result (Bronze 10%, Silver 20%, Gold and above 30% off). Apify's free plan includes $5 of monthly credit, which covers about 1,200 results. See Pricing above for a worked example.
Is it legal to scrape Pittsburgh code violations?
This Actor reads public records from the City of Pittsburgh Permits, Licenses & Inspections (PLI) via the official WPRDC open-data API, using only public endpoints (no login, no CAPTCHA bypass, no private accounts). See the source/license section above for the dataset's terms. You are responsible for how you use the data; this is not legal advice.
How fresh is the data?
Each run reads the source live, so you get whatever the agency has published at that moment. How often the agency updates, and any known lag, is described in the data caveats/notes section above.
Can I use it via API, on a schedule, or with Google Sheets?
Yes. Every Apify Actor has a REST API and client libraries for Python and JavaScript. You can schedule daily or weekly runs, and send results to Google Sheets, Slack, Zapier, Make, n8n, webhooks, or an AI agent via the Apify MCP server.
I need another city, county or field. Can you add it?
Open an issue on the Issues tab with the city or data source you need. We build new public-records scrapers regularly.
Changelog
- 0.4 (2026-10-27): fix round after independent review: the schema-drift sentinel now covers every source field this actor maps (0.3 covered the two core fields), and a run also ends PARTIAL if case numbers come back empty, so a renamed field anywhere in the mapping can no longer ship empty columns under a Complete status; the reached-maxItems note now also appears when a short window is cut inside a single page; the actor description and the dataset schema now carry the same empty-court-fields caveat as the What you get section, and the case-type examples no longer include "Structure" (as a filter it only matches graffiti-on-structure cases, which is not what the example implied).
- 0.3 (2026-10-27): audit candidate: schema-drift sentinel (a renamed/removed source field now ends the run PARTIAL instead of silently returning wrong-shaped data), dedupe on the source record ID, freshness reporting (every run names the newest investigation date in the source; PARTIAL when the source looks stale or when the window is empty because of the publication lag), Complete:/PARTIAL: status messages with the Issues-tab call to action on source-caused problems, and honest field/freshness wording in this README and the input schema.
- 0.2 (2026-10-27): docs: free-sample section + store refresh; no code changes.
More public-records scrapers by Groundplanes
Same clean output, pay-per-result pricing and official public data sources:
Restaurant & food inspections
- Maricopa County (Phoenix) Restaurant Inspections Scraper
- Las Vegas Restaurant Inspections & Grades Scraper (SNHD)
- Pittsburgh Restaurant Inspections Scraper (Allegheny County)
- Delaware Restaurant Inspections Scraper — Statewide Violations
- Boulder CO Restaurant Inspections Scraper — 2013–2026 Snapshot
- Montgomery County MD Restaurant & Food Inspections Scraper
- NY State Restaurant Inspections Scraper — NYSDOH, Non-NYC
- Boston Restaurant Inspections Scraper — Health Violations
- Santa Clara County Restaurant Inspections Scraper — San Jose
Code violations & distressed property leads
- Orlando FL Code Enforcement Scraper — Code Violation Leads
- New Orleans Code Violations Scraper — Code Enforcement Leads