Chicago 311 Complaints & Service Requests avatar

Chicago 311 Complaints & Service Requests

Pricing

from $1.00 / 1,000 311 complaint returneds

Go to Apify Store
Chicago 311 Complaints & Service Requests

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

Muhammad Afzal

Maintained by Community

Actor 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

FieldMeaning
serviceRequestNumberUnique City request ID, such as SR26-01737096
serviceRequestTypeCity-defined complaint or request category
status, originWorkflow status and submission channel
createdDate, lastModifiedDate, closedDateChicago local source timestamps
createdDepartment, ownerDepartmentCreating and initially responsible departments
streetAddress, zipCodePublic source address and postal code
ward, communityAreaChicago administrative geography
policeDistrict, policeBeatPolice geography when present
latitude, longitudeSource coordinates when the City publishes them
isDuplicate, parentServiceRequestNumberCity duplicate and parent relationships
sourceUrl, scrapedAtRecord 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: the OUTPUT key-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

EventPriceWhen charged
Actor start$0.0001Once when the run initializes
311 complaint returned$0.001After 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.
  • maxResults is 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.

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.