Chicago 311 Complaints & Service Requests
Pricing
from $1.00 / 1,000 311 complaint returneds
Chicago 311 Complaints & Service Requests
Extract live Chicago 311 service requests by date, type, status, ward, community area, ZIP code, or request number. Returns address, department, dates, coordinates, and City source links.
Pricing
from $1.00 / 1,000 311 complaint returneds
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Chicago 311 Complaints Scraper
Extract current Chicago 311 service requests from the City of Chicago open-data portal for civic research, operations analysis, neighborhood reporting, and service-level monitoring.
The Actor reads the City's unified 311 Service Requests dataset (v6vf-nfxy) directly. It supports exact filters, stable multi-page traversal, typed records, duplicate exclusion, bounded retries, and a machine-readable OUTPUT summary. No account or API key is required; an optional Socrata app token raises source rate limits for large runs.
What it extracts
| Field | Meaning |
|---|---|
serviceRequestNumber | Unique City request ID, such as SR26-01737096 |
serviceRequestType | City-defined complaint or request category |
status, origin | Workflow status and submission channel |
createdDate, lastModifiedDate, closedDate | Chicago local source timestamps |
createdDepartment, ownerDepartment | Creating and initially responsible departments |
streetAddress, zipCode | Public source address and postal code |
ward, communityArea | Chicago administrative geography |
policeDistrict, policeBeat | Police geography when present |
latitude, longitude | Source coordinates when the City publishes them |
isDuplicate, parentServiceRequestNumber | City duplicate and parent relationships |
sourceUrl, scrapedAt | Record query URL and extraction timestamp |
The dataset contains service requests, not only code-enforcement complaints. Examples include potholes, sanitation issues, street lights, graffiti, aircraft noise, and other 311 categories.
When to use it
Use this Actor to:
- monitor recent 311 activity by ward, community area, or ZIP code;
- export complaint histories for civic and neighborhood analysis;
- compare open and completed requests by category or submission channel;
- retrieve exact service request numbers for downstream workflows;
- build maps or dashboards from normalized address and coordinate fields.
Do not use it to submit a new 311 request, retrieve private caller information, infer who made a complaint, or treat a request as proof that an alleged condition occurred. The Actor only returns fields published by the City.
Input
All filters are optional and combine with AND. Multiple values inside one list combine with OR.
{"maxResults": 250,"startDate": "2026-01-01","endDate": "2026-01-31","serviceRequestTypes": ["Sanitation Code Violation"],"statuses": ["Open", "Completed"],"wards": [42],"includeDuplicates": false,"sortDirection": "newest"}
Date filters use YYYY-MM-DD and apply to the source CREATED_DATE. Request types, statuses, and origins are exact City values. If an exact text filter produces no records, first run a small unfiltered query to inspect current vocabulary.
For a direct ID lookup:
{"maxResults": 2,"serviceRequestNumbers": ["SR26-01737096", "SR26-01737095"],"includeDuplicates": true}
Large anonymous Socrata queries have lower rate limits. Supply your own socrataAppToken only when needed; the input is marked secret and is never written to logs or OUTPUT.
Output
Each default-dataset item is one normalized request:
{"serviceRequestNumber": "SR26-01737096","serviceRequestType": "Aircraft Noise Complaint","serviceRequestShortCode": "AVN","status": "Completed","origin": "Internet","createdDate": "2026-08-27T00:14:49.000","lastModifiedDate": "2026-08-27T00:14:50.000","closedDate": "2026-08-27T00:14:50.000","ownerDepartment": "Aviation","streetAddress": "10510 W ZEMKE RD","city": "Chicago","state": "Illinois","zipCode": "60666","ward": null,"communityArea": null,"latitude": null,"longitude": null,"isDuplicate": false,"isLegacyRecord": false,"sourceDatasetId": "v6vf-nfxy","sourceUrl": "https://data.cityofchicago.org/resource/v6vf-nfxy.json?sr_number=SR26-01737096","scrapedAt": "2026-08-27T01:00:00.000Z"}
Optional fields not published for a request are explicit null. Diagnostics do not pollute the result dataset. Read the default key-value store record OUTPUT for the outcome (DATA, EMPTY, REJECTED, or FAILED), filters, delivered count, confirmed custom-event count, and warnings.
API and agent usage
Run the Actor through the Apify API, client SDK, schedules, webhooks, Make, Zapier, or Apify's MCP server. The output schema exposes:
complaints: default dataset items;summary: theOUTPUTkey-value-store record.
For agent calls, set maxResults explicitly to control both response size and cost. A one-record lookup is the cheapest way to verify an ID or workflow.
Pricing
| Event | Price | When charged |
|---|---|---|
| Actor start | $0.0001 | Once when the run initializes |
| 311 complaint returned | $0.001 | After one valid record is saved |
Examples: 100 returned complaints cost up to $0.1001 in Actor events; 1,000 cost up to $1.0001. Empty and rejected runs have no result-event charges, but the start event still applies. Platform usage is intended to be included in event prices; the owner should verify the live pricing screen before publication.
The Actor stops promptly after Apify reports that the run's maximum total charge has been reached. Because delivery precedes charging, the final saved item at the cap can be uncharged rather than billing for unavailable data.
Reliability and limits
- Source: City of Chicago unified 311 Service Requests dataset
v6vf-nfxy. - Pagination is keyset-based on created date and request number, avoiding deep offsets.
- Requests retry HTTP 429, transient server errors, and network timeouts with bounded exponential backoff.
- Records are deduplicated by service request number within a run.
maxResultsis limited to 10,000 per run to bound time and cost.- The City updates records over time. A request's status or other fields can change after extraction.
- Chicago timestamps are returned as local source timestamps without an invented UTC offset.
- Source availability and anonymous API throttling are controlled by the City/Socrata, not this Actor.
Legal and responsible use
This Actor accesses publicly available government data. Follow the City of Chicago data portal's terms, attribution, and applicable privacy rules. Street addresses can be sensitive in aggregate; minimize retention, avoid re-identification, and do not use 311 allegations to harass, discriminate against, or profile individuals. This Actor is not affiliated with or endorsed by the City of Chicago.