Chicago Crime Data Scraper
Pricing
from $19.00 / 1,000 results
Chicago Crime Data Scraper
Scrapes Chicago Police Department incident reports from the city's open data portal. Returns each incident as a flat row with case number, date, block, primary type, arrest flag, and district.
Pricing
from $19.00 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Chicago Crime Data Scraper
Scrape official Chicago crime incident reports from the CPD public data portal, up to one million records per run. Each record includes the case number, date, block, primary type, arrest flag, and district. Export to CSV, JSON, Excel, or XML.
The Chicago Police Department publishes incident-level crime data on the city's open data portal, but the web interface limits you to browsing small pages or downloading a single massive file. This Actor reads the live API directly, lets you filter by crime type and police district, and returns only the records you need in a clean, flat schema. No API key, no manual downloads, no wrestling with Socrata queries.
| Who uses it | What they scrape Chicago Police Department for |
|---|---|
| Journalists | Tracking crime patterns in specific neighborhoods for a story. |
| Academic researchers | Building longitudinal datasets on urban crime for statistical analysis. |
| Community organizers | Monitoring incident types and frequencies in their police district. |
| Insurance analysts | Assessing property crime rates by location for risk modeling. |
What it does
This Actor collects Chicago crime incident reports from the CPD public data portal and returns each one as a flat row.
- ๐ข Volume control: Set a hard cap from 1 to 1,000,000 records per run so you never exceed your storage or processing budget.
- ๐ท๏ธ Crime type filter: Narrow results to a specific primary type like THEFT, BATTERY, or HOMICIDE before the data hits your dataset.
- ๐ District filter: Pull only the incidents reported in a single police district code, keeping your output focused on one area.
- ๐ฆ Structured output: Every record arrives with a fixed schema, ready for direct import into spreadsheets, databases, or notebooks.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with Chicago Police Department data
๐ฐ Report on neighborhood crime trends.
A local journalist sets the district filter to their beat, pulls the last 10,000 incidents, and charts theft and battery counts month over month to support a public safety story.
๐ Build a research dataset.
A criminology PhD student runs the Actor weekly with no filters, accumulates a year of incident data, and joins it with census tracts for a spatial analysis of crime correlates.
๐๏ธ Monitor a community area.
A neighborhood association board member pulls all incidents in their district each month, categorizes them by primary type, and shares the summary with residents ahead of the beat meeting.
๐ Feed a dashboard or model.
A data engineer schedules the Actor to run daily, pipes the output to a cloud warehouse, and powers a real-time crime dashboard for an insurance underwriting team.
Why choose this scraper
| What you get | |
|---|---|
| No API key required | The CPD data portal is public. You set the filters and the Actor pulls the data. |
| Flat, predictable schema | Every row has the same columns. No nested objects, no surprises when you import. |
| Filter before you download | Crime type and district filters run server-side so you do not waste time on irrelevant records. |
| Runs on Apify infrastructure | Schedule it, chain it with other Actors, or trigger it via API. No local machine needed. |
How it compares
No other Store actor targets Chicago Police Department the same way, so the honest comparison is with the alternatives teams actually weigh.
| Chicago Crime Data Scraper | Build it in-house | By hand | |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When Chicago Police Department changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |
Configure the run
Drive the Actor by setting a maximum record count, and optionally narrow the output with a crime type or police district filter. Filters are applied as the data is read so only matching incidents land in your dataset. The Input tab lists every parameter.
A first run with the defaults:
{"maxItems": 10}
A larger pull:
{"maxItems": 200}
Pricing
Pay-per-result: $0.021 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $2.10 |
| 1,000 results | $21.00 |
| 10,000 results | $210.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the Chicago Crime Data Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to Chicago Police Department through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/chicago-crime-data-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check your crime type and district filter values. They must match the exact strings used by the CPD portal. Try running without filters first to confirm data is available, then add filters one at a time.
The run timed out before reaching my maxItems.
The CPD portal can be slow under heavy load. Lower your maxItems or increase the Actor's timeout in the run settings. Running during off-peak hours can also help.
Some records are missing latitude and longitude.
The CPD portal does not geocode every incident. Missing coordinates are a characteristic of the source data, not an Actor error. You can geocode the block addresses in a separate step if needed.
My district filter returns incidents from other districts.
The district field in the CPD data reflects the reporting district, which can differ from the incident location. Verify the district codes in your output and adjust your filter accordingly.
The export file is too large to open in Excel.
Reduce maxItems and split your extraction into multiple smaller runs, or export to JSON or CSV and load the file into a database or a tool designed for larger datasets.
FAQ
| Question | Answer |
|---|---|
| What time period does the data cover? | The Actor reads from the live CPD data portal, which contains incidents from 2001 to the present. The portal is updated daily, so the most recent records are typically available within 24 hours. |
| Do I need an API key or a City of Chicago account? | No. The data portal is public and requires no authentication. The Actor queries it directly on your behalf. |
| Can I filter by date range? | The current input schema supports filtering by crime type and police district. Date range filtering is not exposed as a direct input, but you can set a maxItems limit and sort or filter the output by date in your own pipeline. |
| What is a primary crime type? | It is the CPD's classification of the most serious offense in an incident. Examples include THEFT, BATTERY, CRIMINAL DAMAGE, and HOMICIDE. The filter matches the exact string as it appears in the portal. |
| How do I find my police district code? | District codes are numeric strings used by the CPD. You can look up your district on the City of Chicago's website or run the Actor once without a district filter to see the codes that appear in your area. |
| Does this Actor return arrest records? | Each incident record includes an arrest flag indicating whether an arrest was made. The Actor does not return full arrest reports or booking data. |
| Can I get the data as a one-time download? | Yes. Set your filters and maxItems, run the Actor once, and export the full dataset to CSV, JSON, Excel, or XML from the Apify storage tab. |
| Is the data geocoded with latitude and longitude? | The CPD portal includes a block-level address and, in many records, latitude and longitude coordinates. The Actor returns whatever the portal provides for each incident. |
| How often is the source data updated? | The City of Chicago updates the crime data portal daily. You can schedule the Actor to run on the same cadence to keep your dataset current. |
| What happens if I set maxItems higher than the available records? | The Actor will return all matching records and stop gracefully. You will not get an error or duplicate rows. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by City of Chicago. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
