Pittsburgh Code Violations – Distressed Real Estate Leads avatar

Pittsburgh Code Violations – Distressed Real Estate Leads

Pricing

from $2.10 / 1,000 violation records

Go to Apify Store
Pittsburgh Code Violations – Distressed Real Estate Leads

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

Groundplane Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Features

Limited permissions

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

  1. Click Try for free (or Start) on this page. A free Apify account is enough.
  2. Leave the prefilled input to get a quick sample, or set the filters described below.
  3. Set maxItems to cap how many rows (and how much) a run returns.
  4. Click Start and wait a few seconds to a minute.
  5. Download the results as JSON, CSV or Excel, or connect them to Google Sheets, Zapier, Make or a webhook.

Input

FieldDescription
caseTypese.g. Vacant Building, Refuse
neighborhoodse.g. Hazelwood
onlyViolationsFoundDefault true, which drops unfounded complaints
onlyCourtCasesKeep cases sent to court
investigatedSinceReal YYYY-MM-DD date. Default: the source's newest investigation date minus 14 days. Invalid dates fail with a clear message.
maxItemsDefault 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.

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

Code violations & distressed property leads

Business licenses & new business leads