ParseForge Scrapers

Seattle Crime Data Scraper

parseforge/seattle-crime-data-scraper

OtherNews & mediaLead generation

Collects Seattle Police Department incident reports from the city's open-data portal. Returns each incident as a flat row with date, offense, precinct, and coordinates. Filter by precinct or NIBRS crime category.

Run this scraper See the API call
Total users
1
Monthly active
0
Total runs
99
Bookmarked
0
Rating
Not rated yet
Last modified
9 days ago

Overview

ParseForge

Seattle Crime Data Scraper

Scrape official Seattle crime incident data from the SPD open-data portal, up to a million records per run. Every incident comes with its date, offense type, precinct, and coordinates. Filter by precinct or NIBRS crime category. Export to CSV, JSON, Excel, or XML.

Seattle's open-data portal holds every police incident report, but downloading it in bulk means wrestling with SODA API pagination or manual CSV exports. This Actor reads the public dataset directly, lets you filter by precinct or crime category, and returns each incident in one flat row. No API key, no geocoding setup.

Who uses it What they scrape Seattle Police Department for
Local journalists Tracking crime trends by neighborhood for a weekly public-safety report.
Urban planners Mapping incident density to evaluate lighting or community-program placement.
Real estate analysts Comparing precinct-level crime volumes when scoring investment ZIP codes.
Academic researchers Building longitudinal datasets of reported offenses for criminology papers.

What it does

This Actor collects Seattle Police Department incident reports from the city's open-data portal and returns each one as a flat row with date, offense, precinct, and coordinates.

  • πŸ“ Precinct filter: narrow results to a single SPD precinct like WEST or NORTH before download.
  • 🏷️ NIBRS category filter: pull only Person, Property, Society, or Not-a-crime incidents in one run.
  • πŸ“¦ Bulk export: collect up to 1,000,000 incidents per run and export to CSV, JSON, Excel, or XML.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with Seattle Police Department data

πŸ“° Power a public-safety news beat.

A local reporter pulls the last 5,000 WEST precinct incidents filtered to PERSON crimes and spots a three-month spike in aggravated assaults around Pioneer Square.

🏘️ Score a rental-property ZIP code.

A real estate analyst collects one year of PROPERTY crimes by precinct and overlays the counts on a map of available multifamily listings.

πŸŽ“ Feed a criminology study.

A PhD candidate runs the Actor weekly for six months, building a clean panel dataset of all SOCIETY offenses with coordinates for a spatial-statistics model.

πŸ—ΊοΈ Build a neighborhood safety dashboard.

A civic hacker collects all incidents, filters to the last 30 days, and pushes the CSV into a Mapbox layer that colors census tracts by incident density.

Why choose this scraper

What you get
Official SPD source Data comes straight from the Seattle Police Department open-data portal, not a third-party aggregator.
Precinct and category filters Cut the dataset down to one precinct or one NIBRS category before the run finishes.
Coordinates included Every incident that has a location arrives with latitude and longitude, ready for mapping.
Flat row shape One incident equals one row. No nested objects, no unpivoting needed in your analysis tool.

How it compares

Crime Data Scraper (US Cities) covers multiple cities in one normalized schema, while this Actor focuses exclusively on Seattle and reads the SPD portal directly with precinct and NIBRS filters.

Feature ParseForge Crime Data Scraper (US Cities)
Seattle-specific precinct filter Yes, filter by SPD precinct name (WEST, NORTH, etc.) Not listed
NIBRS crime-against category filter Yes, select Person, Property, Society, or Not a crime Not listed
Direct SPD open-data portal source Yes, reads the city's live dataset Not listed
Coordinates included per incident Yes, latitude and longitude when available Yes
Multi-city normalized schema No, Seattle only Yes

Configure the run

Drive the Actor with an optional precinct name and a NIBRS crime-against category, and filters run as each incident is read so only matches reach 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

  1. Create a free Apify account with $5 in credit.
  2. Open the Seattle Crime Data Scraper.
  3. Set your inputs and any filters, then click Start.
  4. 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 Seattle 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/seattle-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 that your precinct spelling matches SPD's convention exactly (e.g. WEST, not West Seattle). Also confirm that the NIBRS category you selected has incidents in the current dataset.

The run finished but my dataset is smaller than maxItems.

This is expected when your filters match fewer incidents than the maximum you set. The Actor collects every matching record; if only 200 exist, you get 200.

Some rows have null coordinates.

SPD suppresses exact locations for certain sensitive incidents, such as sexual assaults or cases involving minors. These rows are valid but will not appear on a map.

I need data older than what the portal shows.

The Actor reads whatever date range the city's open-data portal currently serves. If older records have been archived off the public endpoint, they are not available through this Actor.

The precinct filter is case-sensitive.

Enter precinct names in uppercase as SPD labels them: WEST, NORTH, EAST, SOUTH, SOUTHWEST. Mixed case may not match.

FAQ

Question Answer
Where does the data come from? The Actor reads the Seattle Police Department's public open-data portal, which publishes incident reports under the city's open-data policy.
Do I need an API key or a City of Seattle account? No. The dataset is public and the Actor reads it directly. You do not need to register an application or obtain a token.
What is a NIBRS category? NIBRS stands for National Incident-Based Reporting System. The Actor lets you filter by the crime-against category: Person, Property, Society, or Not a crime.
Can I filter by a specific offense type like burglary? The input schema offers precinct and NIBRS category filters. For a specific offense code, pull the full dataset and filter the CSV in your analysis tool.
How many incidents can I collect in one run? You can set the maximum up to 1,000,000 incidents per run. The actual number depends on how many records match your filters.
Does every incident have latitude and longitude? Most incidents include coordinates. A small number of reports may have a suppressed location for victim privacy; those rows will have null coordinates.
What export formats are supported? You can export the dataset as CSV, JSON, Excel, or XML from the Apify platform after the run completes.
How often is the SPD data updated? The Actor reads whatever the city's open-data portal is serving at run time. Schedule a recurring run to capture new incidents as they are published.
Can I combine precinct and category filters? Yes. Set both the precinct and category inputs and the Actor will return only incidents that satisfy both conditions.
Is this Actor affiliated with the Seattle Police Department? No. It is an independent tool that reads the same public dataset anyone can access through the city's open-data portal.

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 Seattle. 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.

Input

FieldTypeWhat it doesDefault
maxItems integer How many incidents to collect per run. 10
precinct string Filter by SPD precinct (e.g. WEST, NORTH). not set
category string (5 options) Filter by NIBRS crime-against category (PERSON, PROPERTY, SOCIETY). not set

Pricing

from $19.00 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.019 to $0.021

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST Β· run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~seattle-crime-data-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run Seattle Crime Data Scraper on Apify All scrapers