How RentSift reads DC rodent complaint pressure
RentSift pulls DC 311 service request data from the city's ArcGIS FeatureServer. This post walks through the exact fields, filters, and radius logic that turn raw complaint records into source-linked building-condition context.
Where the data comes from
DC publishes 311 service requests through an ArcGIS REST endpoint at maps2.dcgis.dc.gov. The current loader queries layers 21, 18, and 16, which the DC service exposes as the 2026, 2025, and 2024 service-request layers, then filters returned records to the last 365 days.
Each service request has two important text fields. SERVICECODEDESCRIPTION holds the complaint type, things like "Rodent Inspection and Treatment" or "Illegal Dumping." SERVICETYPECODEDESCRIPTION holds the department name. An earlier version of this pipeline confused those two fields, which meant we were classifying by department instead of by complaint type. That bug was caught during live API testing in March 2026.
We query all three layers in parallel and deduplicate by service request ID. That gives the report a recent complaint window without relying on one annual layer that might lag, time out, or miss recent filings.
How we filter by location and type
The query sends the address coordinates to ArcGIS with a 0.25-mile buffer (about 402 meters). ArcGIS returns every service request whose location falls inside that circle.
We classify each returned request by matching keywords against SERVICECODEDESCRIPTION. Pest complaints match keywords like rodent, rat, roach, pest, mice, and mouse. Trash complaints match dump, trash, and sanitation. Housing complaints match terms like housing, property, apartment, building, landlord, rental, maintenance, and code.
Noise is handled cautiously because complaint labels vary across jurisdictions. If a source returns noise-related labels, the report can classify them; if it does not, zero noise records should not be read as proof that the block is quiet.
How complaints become report context
The current report does not grade a building from these records. It separates complaints tied to the searched address or immediate building area from wider nearby context, then labels that scope so renters can see whether a record appears to involve this property or the surrounding blocks.
Pest complaints still matter because they can point to maintenance pressure renters cannot fix after move-in. A recent cluster near the searched address is stronger than a single older request, but it remains a screening signal to ask about, not proof of a current unit problem.
When no complaints appear in the search radius, the report says that directly instead of awarding a perfect number. No returned records can mean no issue, a resolved issue, a reporting gap, or a source outage.
What a renter should take away
DC 311 data reflects where people actively report. A block with zero complaints might mean there are zero issues, or it might mean residents on that block don't use 311. Both explanations are real.
Complaint counts near a building are directional, not definitive. If you see a high count, walk by the building and check for visible signs. If you see zero, don't assume the building is spotless.
Reports cache results for 24 hours so repeated lookups for the same address do not hit the city API repeatedly. If you want fresh data after a long gap, the cache will have expired on its own.
Enter an address in our DMV coverage area to see source-linked crime, complaints, utilities, schools, permits, and nearby context.