# NYC Film and TV Production Permit Data (`civicdataforge/nyc-film-permits`) Actor

Every NYC film, TV, and commercial shooting permit - the exact streets held, dates, category, borough, precinct, ZIP - from NYC Open Data in clean JSON. Filter by borough, category, or date. For location scouts, production-services firms, and anyone tracking production activity.

- **URL**: https://apify.com/civicdataforge/nyc-film-permits.md
- **Developed by:** [Bryan](https://apify.com/civicdataforge) (community)
- **Categories:** Videos, Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## NYC Film & TV Production Permits

Every film, television, and commercial shooting permit issued by the NYC Mayor's Office of Media &
Entertainment — with the field that matters most: **the exact streets held for the shoot.**

### What you get per permit

| field | example |
|---|---|
| `event_id` | `932746` |
| `event_type` | `Shooting Permit` |
| `category` / `subcategory` | `Television` / `News` |
| `location` | `WEST 47 STREET between 6 AVENUE and 7 AVENUE` |
| `borough` | `Manhattan` |
| `start` / `end` | shoot window (datetimes) |
| `community_boards` / `police_precincts` / `zip_codes` | arrays |
| `raw` | full original record |

### Who uses this

- **Location scouts & production-services firms** — see exactly where productions shoot and when.
- **Businesses & residents near shoots** — anticipate street closures.
- **Real-estate & retail** — foot-traffic and disruption signals.
- **Journalists & city analysts** — production-activity trends by borough.

### Input examples

All recent: `{ "since": "2026-01-01" }` · Manhattan TV: `{ "borough": "Manhattan", "category": "Television" }`

### Source & cadence

NYC Open Data "Film Permits" (data.cityofnewyork.us), the authoritative feed from the Mayor's Office
of Media & Entertainment — public, no login. This Actor pulls it **live each run**, so it stays as
current as the City publishes.

**Data-currency note (verified 2026-07-12):** NYC's feed currently reflects permits through
**~April 2026** — the City's own publishing has lagged since then. This Actor auto-catches-up the
moment NYC resumes updating; there is no other machine-readable NYC film-permit source. The full
2008-to-present archive (~18,000 permits) is complete for location-pattern and production-trend analysis.

# Actor input Schema

## `borough` (type: `string`):

Filter to one borough: Manhattan, Brooklyn, Queens, Bronx, Staten Island. Leave empty for all.

## `category` (type: `string`):

Filter by production category, e.g. Film, Television, Commercial, Still Photography, Theater, WEB. Leave empty for all.

## `eventType` (type: `string`):

e.g. 'Shooting Permit', 'Theater Load in and Load out'. Leave empty for all.

## `since` (type: `string`):

Only permits starting on/after this ISO date (e.g. 2026-01-01). Leave empty for all history.

## `maxRecords` (type: `integer`):

Cap total records returned (leave empty for all matching permits).

## Actor input object example

```json
{
  "borough": "Manhattan",
  "maxRecords": 25
}
```

# Actor output Schema

## `results` (type: `string`):

API URL for the default dataset items produced by this run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "borough": "Manhattan",
    "maxRecords": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("civicdataforge/nyc-film-permits").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "borough": "Manhattan",
    "maxRecords": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("civicdataforge/nyc-film-permits").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "borough": "Manhattan",
  "maxRecords": 25
}' |
apify call civicdataforge/nyc-film-permits --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=civicdataforge/nyc-film-permits",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ImmRrE4Msebkpm1KZ/builds/QvZDpL3eLfUafim4o/openapi.json
