NYC 311 Service Requests Scraper avatar

NYC 311 Service Requests Scraper

Pricing

from $3.75 / 1,000 result items

Go to Apify Store
NYC 311 Service Requests Scraper

NYC 311 Service Requests Scraper

Scrapes NYC 311 service requests from the public data feed. Filter by complaint type, agency, borough, status, ZIP code, and date range, and get each request as a flat row.

Pricing

from $3.75 / 1,000 result items

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

12 days ago

Last modified

Share

ParseForge

NYC 311 Service Requests Scraper

Scrape NYC 311 service requests by complaint type, agency, borough, or date range, up to a million per run. Each record includes the status, location, and timestamps for every reported issue. No API key or registration required. Export to CSV, JSON, Excel, or XML.

The NYC Open Data portal provides a public API, but it requires pagination handling and has query complexity limits. This Actor reads the 311 service request feed directly, letting you filter by complaint type, responding agency, borough, status, ZIP code, and date range. It returns each matching request in a consistent, flat schema ready for analysis.

Who uses itWhat they scrape NYC 311 for
City plannersAnalyze neighborhood-level complaint patterns to prioritize infrastructure projects.
JournalistsTrack response times for specific agencies or complaint types across boroughs.
Real estate analystsMonitor quality-of-life complaints like noise or heating issues in target ZIP codes.
Civic hackersBuild dashboards showing open 311 issues by category and geography.

What it does

This Actor collects NYC 311 service requests from the public data feed and returns each one as a flat row with its status, agency, location, and timestamps.

  • πŸ™οΈ Agency filter: Narrow results to a specific responding agency, from NYPD to Emergency Management.
  • πŸ“… Date range control: Set opened-from and opened-to dates to capture requests within a precise window.
  • πŸ—ΊοΈ Geographic targeting: Filter by borough or ZIP code to isolate issues in a single neighborhood.
  • πŸ“Š Status tracking: Pull only open, in-progress, or closed requests to monitor resolution lifecycles.

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

What you can do with NYC 311 data

πŸ“ˆ Track agency performance.

A policy analyst pulls all closed noise complaints for the NYPD over six months to measure average response time by borough.

🏘️ Assess neighborhood livability.

A real estate researcher collects heating and hot water complaints in a Brooklyn ZIP code to evaluate tenant satisfaction trends.

πŸ—‘οΈ Monitor sanitation issues.

A community board member runs a weekly scrape of DSNY-related requests to identify missed collection hotspots.

πŸ“° Investigate city services.

A journalist filters open HPD violations in the Bronx to build a story on housing code enforcement delays.

Why choose this scraper

What you get
No API key neededAccess the public 311 feed without registration or authentication.
Flexible filteringCombine complaint type, agency, borough, status, and date range in a single run.
Structured outputEvery request arrives as a clean row with consistent fields for status, location, and timestamps.
Scalable collectionCollect up to a million records per run for large-scale historical analysis.

How it compares

No other Store actor targets NYC 311 the same way, so the honest comparison is with the alternatives teams actually weigh.

NYC 311 Service Requests ScraperBuild it in-houseBy hand
SetupRun it now, zero configDays of engineeringNone, but hours per pull
When NYC 311 changesMaintained for youYou fix itYou re-learn the page
Proxies, retries, anti-botBuilt inYour problemBrowser only
OutputFixed JSON schema, CSV/Excel exportWhatever you buildCopy-paste
CostPay per resultEngineering timeAnalyst hours

Configure the run

Drive the Actor with complaint type, agency, borough, status, ZIP code, and date range filters, alone or in combination, so only matching requests reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
"maxItems": 10,
"sortOrder": "newest"
}

A larger pull:

{
"maxItems": 200,
"sortOrder": "newest"
}

Pricing

Pay-per-result: $0.005 per result collected. You pay only for the results written to your dataset.

Results collectedApproximate cost
100 results$0.50
1,000 results$5.00
10,000 results$50.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 NYC 311 Service Requests 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 NYC 311 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/nyc-311-service-requests-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 filters are not too restrictive. Try removing the complaint type or date range to see if broader queries return data. Also verify that your date format is YYYY-MM-DD.

The run stopped before reaching my maxItems limit.

The Actor stops when there are no more matching records in the feed. Try widening your date range or removing other filters to collect more data.

My complaint type filter is not returning expected results.

Complaint type names must match the exact string used in the 311 system, such as 'Noise - Residential'. Try a partial match or check the NYC Open Data portal for valid type names.

The run is taking a long time.

Large date ranges or high maxItems values will increase run time. Reduce the date window or lower the maximum records to speed up collection.

FAQ

QuestionAnswer
Does this scraper use the official NYC 311 API?No, it reads from the public NYC Open Data feed directly. You do not need an API key or app registration.
Can I filter by a specific complaint type like noise or illegal parking?Yes. Use the Complaint Type field to enter a specific category such as 'Noise - Residential' or 'Illegal Parking'.
How many service requests can I collect in one run?You can set the maximum up to 1,000,000 records per run. The Actor will stop when it reaches that limit or exhausts the matching data.
What date range can I scrape?Use the Opened From and Opened To fields in YYYY-MM-DD format to define any window. The feed goes back several years.
Can I get only open requests?Yes. Set the Status filter to 'Open' to retrieve only unresolved service requests.
Which agencies can I filter by?You can select from 19 agencies including NYPD, HPD, DOT, DSNY, DEP, DOB, FDNY, and others.
Is it possible to scrape a single ZIP code?Yes. Enter a five-digit ZIP code in the ZIP code field to restrict results to that area.
What format is the exported data?You can export your dataset in CSV, JSON, Excel, or XML format from the Apify platform.
Does this Actor run on a schedule?You can set up a recurring schedule in Apify to run the Actor daily, weekly, or at any custom interval.

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 New York. 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.