Wprdc

by NeverSight

data

Query Pittsburgh's Western PA Regional Data Center (WPRDC) — 363+ datasets covering property assessments, air quality, 311 requests, jail census, overdose data, permits, violations, and more. Run SQL queries against live tables without downloading. Use when user asks about Pittsburgh/Allegheny County public data, property lookups, civic data, or regional statistics.

Skill Details


name: wprdc description: Query Pittsburgh's Western PA Regional Data Center (WPRDC) — 363+ datasets covering property assessments, air quality, 311 requests, jail census, overdose data, permits, violations, and more. Run SQL queries against live tables without downloading. Use when user asks about Pittsburgh/Allegheny County public data, property lookups, civic data, or regional statistics. version: 1.1.0 homepage: https://data.wprdc.org metadata: emoji: 📊 tags: - pittsburgh - civic-data - wprdc - ckan - property - public-data - allegheny-county

WPRDC - Pittsburgh Regional Data Center

Query 363+ datasets from the Western PA Regional Data Center. Property assessments, air quality, 311 requests, jail census, overdose data, parking, permits, violations — all queryable via SQL without downloading.

Quick Start

# Search for datasets
<skill>/wprdc.py search "property sales"
<skill>/wprdc.py search "air quality" --org allegheny-county

# Get dataset info
<skill>/wprdc.py info property-assessments

# List resources (tables) in a dataset
<skill>/wprdc.py resources property-assessments

# See field schema
<skill>/wprdc.py fields assessments

# SQL query (the killer feature!)
<skill>/wprdc.py query 'SELECT "PARID", "PROPERTYADDRESS" FROM @assessments WHERE "PROPERTYCITY"='"'"'PITTSBURGH'"'"' LIMIT 5'

# Quick parcel lookup
<skill>/wprdc.py parcel 0028F00194000000

# Download a dataset
<skill>/wprdc.py download property-assessments --format csv

Commands

search <query>

Search for datasets by keyword.

Options:

  • --org <name> — Filter by organization (e.g., allegheny-county, city-of-pittsburgh)
  • --group <name> — Filter by topic group (e.g., health, housing-properties)
  • --limit <n> — Max results (default: 10)
  • --json — Raw JSON output

info <dataset>

Get detailed information about a dataset, including description, resources, and metadata.

resources <dataset>

List all resources (tables/files) in a dataset with their IDs and queryability status.

fields <resource>

Show the field schema for a resource. Use shortcut names or resource IDs.

query <sql>

Execute SQL queries against live data. This is the power feature!

Important: Column names must be double-quoted because PostgreSQL is case-sensitive:

SELECT "PARID", "PROPERTYADDRESS" FROM @assessments WHERE "PROPERTYCITY"='PITTSBURGH' LIMIT 5

Use @shortcut notation for common tables (see Shortcuts below).

Options:

  • --json — Raw JSON output
  • --table — Format as ASCII table

parcel <pin>

Quick property lookup by parcel ID. Returns address, assessments, building info, and last sale.

<skill>/wprdc.py parcel 0028F00194000000

download <dataset>

Download a resource to a file.

Options:

  • --resource <id|name> — Specific resource
  • --format <csv|json|geojson> — Preferred format
  • --output <path> — Output filename

orgs

List all organizations publishing data.

groups

List all topic groups (categories).

shortcuts

Show available query shortcuts.

Query Shortcuts

Use @shortcut in SQL queries instead of long resource IDs:

Shortcut Dataset
@assessments Property Assessments (584K parcels)
@sales Property Sales
@311 311 Service Requests
@permits PLI Permits
@violations PLI Violations
@overdoses Fatal Accidental Overdoses
@jail Jail Daily Census
@air-quality Air Quality
@fishfry Fish Fry Map

Example:

<skill>/wprdc.py query 'SELECT * FROM @overdoses WHERE "death_year"=2024 LIMIT 10'

Before Querying, Ask Yourself

  1. Scope: Is this City of Pittsburgh only, or all of Allegheny County?

    • PLI violations, 311, permits → City of Pittsburgh only (90 neighborhoods)
    • Property assessments, overdoses, jail → All of Allegheny County (130 municipalities)
  2. Freshness: When was this dataset last updated? Run info <dataset> first.

  3. Fields: What columns exist? Run fields <resource> before writing SQL.

  4. Size: How many records? Start with LIMIT 10, expand once you know it works.

NEVER Do

  • NEVER use CAST(), ROUND(), AVG(), or other SQL functions — WPRDC blocks them. You'll get "Access denied: Not authorized to call function". Do aggregation client-side.

  • NEVER query without LIMIT on large tables — Assessments has 584K rows. Queries timeout. Always add LIMIT.

  • NEVER assume county-wide coverage for City datasets — PLI violations, 311, permits are City of Pittsburgh only. Aspinwall, Fox Chapel, Mt. Lebanon = separate municipalities, not in the data.

  • NEVER trust "under maintenance" datasets — County plumbing inspections, housing inspections, food facilities are currently broken. Check info first.

  • NEVER forget column quoting — UPPERCASE columns need double quotes ("PARID"), lowercase don't (case_year). Wrong quoting = cryptic "column does not exist" errors.

  • NEVER use wildcards on unindexed textLIKE '%something%' on large tables will timeout. Be specific.

Common Errors

Error Cause Fix
409 CONFLICT + "column does not exist" Unquoted uppercase column Add quotes: "PARID" not PARID
Access denied: Not authorized to call function Used CAST/ROUND/AVG Remove function, process client-side
Timeout / no response Query too large Add LIMIT, narrow WHERE clause
Empty results Filter mismatch Check exact string values with a broad query first
"resource not found" Wrong resource ID Use resources <dataset> to get correct ID

SQL Tips

  1. Quote UPPERCASE column names — PostgreSQL is case-sensitive:

    SELECT "PROPERTYADDRESS" FROM @assessments  -- ✓ uppercase needs quotes
    SELECT case_year FROM @overdoses            -- ✓ lowercase works without quotes
    
  2. GROUP BY works, but not aggregate functions:

    SELECT "PROPERTYCITY", COUNT(*) as cnt 
    FROM @assessments 
    GROUP BY "PROPERTYCITY" 
    ORDER BY cnt DESC 
    LIMIT 10
    
  3. Check fields first — Column names vary wildly between datasets

Coverage Map (Critical!)

Dataset Coverage Municipalities
Property Assessments All Allegheny County 130 municipalities
Property Sales All Allegheny County 130 municipalities
Fatal Overdoses All Allegheny County By zip code
Jail Census All Allegheny County County facility
911 Dispatches Most of county 111 of 130 municipalities
Air Quality All Allegheny County Monitor locations
PLI Violations City of Pittsburgh ONLY 90 neighborhoods
PLI Permits City of Pittsburgh ONLY 90 neighborhoods
311 Requests City of Pittsburgh ONLY 90 neighborhoods

If someone asks about Fox Chapel, Aspinwall, Mt. Lebanon, etc. → Only county-wide datasets apply. No PLI/311 data for suburbs.

Organizations & Topics

Use orgs and groups commands to explore. Major publishers:

  • allegheny-county (143 datasets) — assessments, health, jail
  • city-of-pittsburgh (126 datasets) — 311, permits, violations

Example Queries

# Property lookup by parcel ID
<skill>/wprdc.py parcel 0028F00194000000

# Search by address (use SQL)
<skill>/wprdc.py query 'SELECT * FROM @assessments WHERE "PROPERTYHOUSENUM"='"'"'251'"'"' AND "PROPERTYADDRESS" LIKE '"'"'%PASADENA%'"'"''

# Overdose trends by year
<skill>/wprdc.py query 'SELECT case_year, COUNT(*) as deaths FROM @overdoses GROUP BY case_year ORDER BY case_year'

# Filter by neighborhood (City of Pittsburgh only)
<skill>/wprdc.py query 'SELECT "VIOLATION", COUNT(*) FROM @violations WHERE "NEIGHBORHOOD"='"'"'Hazelwood'"'"' GROUP BY "VIOLATION" ORDER BY COUNT(*) DESC LIMIT 10'

# Cross-tab query
<skill>/wprdc.py query 'SELECT combined_od1, race, COUNT(*) FROM @overdoses GROUP BY combined_od1, race ORDER BY COUNT(*) DESC LIMIT 20'

Known Issues (as of Jan 2026)

  • 311 Data stopped updating Feb 2025 — new system transition
  • County Plumbing Inspections — under maintenance
  • County Housing Inspections — under maintenance
  • County Food Facilities — under maintenance

Always run info <dataset> to check last update date before relying on data.

Related Skills

Xlsx

Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas

data

Clickhouse Io

ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.

datacli

Clickhouse Io

ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.

datacli

Analyzing Financial Statements

This skill calculates key financial ratios and metrics from financial statement data for investment analysis

data

Data Storytelling

Transform data into compelling narratives using visualization, context, and persuasive structure. Use when presenting analytics to stakeholders, creating data reports, or building executive presentations.

data

Kpi Dashboard Design

Design effective KPI dashboards with metrics selection, visualization best practices, and real-time monitoring patterns. Use when building business dashboards, selecting metrics, or designing data visualization layouts.

designdata

Dbt Transformation Patterns

Master dbt (data build tool) for analytics engineering with model organization, testing, documentation, and incremental strategies. Use when building data transformations, creating data models, or implementing analytics engineering best practices.

testingdocumenttool

Sql Optimization Patterns

Master SQL query optimization, indexing strategies, and EXPLAIN analysis to dramatically improve database performance and eliminate slow queries. Use when debugging slow queries, designing database schemas, or optimizing application performance.

designdata

Anndata

This skill should be used when working with annotated data matrices in Python, particularly for single-cell genomics analysis, managing experimental measurements with metadata, or handling large-scale biological datasets. Use when tasks involve AnnData objects, h5ad files, single-cell RNA-seq data, or integration with scanpy/scverse tools.

arttooldata

Xlsx

Spreadsheet toolkit (.xlsx/.csv). Create/edit with formulas/formatting, analyze data, visualization, recalculate formulas, for spreadsheet processing and analysis.

tooldata

Skill Information

Category:Data
Version:1.1.0
Last Updated:1/29/2026