# NYC Benefits Platform: Benefits and Programs — NYC Open Data (`alauddinburki/nyc-nyc-benefits-platform-benefits-and-programs-data`) Actor

This dataset provides benefit, program, and resource information for over 80 health and human services available to NYC residents in all eleven local law languages. Returns 34 declared fields as flat JSON. Public NYC Open Data data, no key.

- **URL**: https://apify.com/alauddinburki/nyc-nyc-benefits-platform-benefits-and-programs-data.md
- **Developed by:** [Alauddin burki](https://apify.com/alauddinburki) (community)
- **Categories:** Other, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## NYC Benefits Platform: Benefits and Programs — NYC Open Data

This dataset provides benefit, program, and resource information for over 80 health and human services available to NYC residents in all eleven local law languages. The data is kept up-to-date, including the most recent applications, eligibility requirements, and application dates. Information in this dataset is used on ACCESS NYC, Generation NYC, and Growing Up NYC.
This Actor returns it as one flat JSON row per record, with 34 declared fields — typed, named and
documented in the dataset schema, so a spreadsheet or an agent can use it without guessing.

### What you get

| Field | Type | Meaning |
|---|---|---|
| `population_served` | string | population_served |
| `plain_language_eligibility` | string | plain_language_eligibility |
| `url_of_pdf_application_forms` | string | url_of_pdf_application_forms |
| `program_acronym` | string | program_acronym |
| `program_name` | string | program_name |
| `get_help_online` | string | get_help_online |
| `apply_in_person_call_to_action` | string | apply_in_person_call_to_action |
| `apply_by_mail_call_to_action` | string | apply_by_mail_call_to_action |
| `program_code` | string | program_code |
| `apply_online_call_to_action` | string | apply_online_call_to_action |
| `unique_id_number` | string | unique_id_number |
| `how_to_apply_or_enroll_online` | string | how_to_apply_or_enroll_online |
| `age_group` | string | age_group |
| `get_help_by_email` | string | get_help_by_email |
| `government_agency` | string | government_agency |
| `get_help_by_calling_311` | string | get_help_by_calling_311 |
| `how_to_apply_summary` | string | how_to_apply_summary |
| `url_of_online_application` | string | url_of_online_application |
| `brief_excerpt` | string | brief_excerpt |
| `how_to_apply_or_enroll_by_mail` | string | how_to_apply_or_enroll_by_mail |

The output schema lists all 34 fields; the table above is the first twenty.

Every row also carries `sourceRowId`, `sourceUpdatedAt` and `scrapedAt`, so a pipeline can tell one record
from another and know exactly when it was read.

```json
{
  "population_served": "Families with children,Pregnant & new parents",
  "plain_language_eligibility": "<p>To claim the <strong>federal Child Tax Credit</strong>, you need to meet <strong>all </strong>of these requirements:<",
  "url_of_pdf_application_forms": "NULL",
  "program_acronym": "NULL",
  "program_name": "Child and Dependent Care Tax Credit",
  "get_help_online": "<p><strong>Visit </strong><a href=\"https://access.nyc.gov/programs/earned-income-tax-credit-eitc/nyc.gov/taxprep\"  targe",
  "apply_in_person_call_to_action": "Find a tax prep location",
  "apply_by_mail_call_to_action": "NULL"
}
```

### Inputs

| Field | What it does |
|---|---|
| **Filter (SoQL)** | Applied at the source, so a narrow question fetches a narrow page instead of downloading everything. |
| **Order** | Empty keeps the publisher's own order; set a column to sort, for example `amount DESC`. |
| **Maximum rows** | Hard cap. The source is paged 1,000 rows at a time. |
| **Time budget** | Stops cleanly and reports how far it got. |
| **Pause between pages** | Keeps the run inside the publisher's rate limits. |

### Limitations

- **This is one dataset, from one publisher.** It is the NYC Benefits Platform: Benefits and Programs Dataset dataset as Mayor's Office for Economic Opportunity publishes it — not a
  national or cross-city equivalent, and not a merge with other sources.
- **The publisher can change it.** Columns are added, renamed and retired upstream; the field list here is the
  schema the Actor was generated from. A renamed column arrives as a new field only after the Actor is updated.
- **Fields are typed from live records.** A column that was empty in the sample is declared as text; a value that
  does not fit the declared type comes back `null` rather than being coerced into a wrong number.
- **Records are what the publisher publishes.** No geocoding, no de-duplication across datasets, no enrichment.
- **Freshness is the publisher's.** The data was last changed upstream on 2026-10-02. Where the publisher
  supplies a row timestamp it appears as `sourceUpdatedAt`; `scrapedAt` records when this Actor read the row.

### Why this is different

- NYC Benefits Platform: Benefits and Programs — NYC Open Data declares all 34 of its output fields in the dataset schema, each with a type, a description and an example.
- The Actor reads the NYC Benefits Platform: Benefits and Programs Dataset dataset directly from NYC Open Data; no key, login or account is needed.
- Filters run at the source with SoQL, so a narrow request returns a narrow page rather than a full download.
- Every row is flat JSON: nested location objects become `latitude` and `longitude`, and no field holds a nested object.
- The row id is stable, so the same request de-duplicates instead of returning the same record twice.

### FAQ

**Do I need an API key?** No. NYC Open Data publishes this dataset openly.

**How fresh is it?** The Actor reads the dataset live. `scrapedAt` records when each row was read, and
`sourceUpdatedAt` carries the publisher's own row timestamp where it supplies one.

**Can I filter by date or status?** Yes — use the Filter field with SoQL, for example `status = 'Active'`.

**What happens if my filter is wrong?** The run stops with the portal's own message and the hint to check SoQL, rather than returning an empty dataset that looks like "no data".

**Is this the whole dataset?** Up to your row cap, paged 1,000 at a time. Raise the cap to read more.

**What is `sourceRowId`?** The publisher's own row id when it supplies one, otherwise a stable hash of the row. Either way it is what makes de-duplication and joins possible.

### Pricing

Pay per result: **$0.0005 per row**. Each stored dataset row is billed, including any diagnostic row returned instead of results.

An Actor-start event is also charged at **$0.0001 per GB of allocated memory (minimum one event)**, even if no rows are returned. At 1 GB or less, 1,000 result rows cost $0.5001 before any applicable Store discount.

### Data source

NYC Open Data — [NYC Benefits Platform: Benefits and Programs Dataset](https://data.cityofnewyork.us/d/kvhd-5fmu), published by Mayor's Office for Economic Opportunity.
Public data under the portal's open-data terms.

# Actor input Schema

## `where` (type: `string`):

Optional Socrata SoQL expression applied at the source, for example status = 'Active' or year > 2020. Leave empty for every row. An invalid expression returns a clear error, not an empty result.

## `order` (type: `string`):

Optional $order expression. Empty keeps the publisher's own order; set a column name to sort, for example amount DESC.

## `maxItems` (type: `integer`):

Hard row cap for the run. The source is paged 1,000 rows at a time and the Actor stops at this number.

## `budgetSecs` (type: `integer`):

Stops cleanly when this much time has passed and reports how far it got.

## `paceMs` (type: `integer`):

Delay between page requests, to stay inside the publisher's rate limits.

## Actor input object example

```json
{
  "where": "",
  "order": "",
  "maxItems": 5,
  "budgetSecs": 240,
  "paceMs": 120
}
```

# Actor output Schema

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

One row per record, with the 37 fields listed under Views.

# 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 = {
    "where": "",
    "order": "",
    "maxItems": 5,
    "budgetSecs": 240,
    "paceMs": 120
};

// Run the Actor and wait for it to finish
const run = await client.actor("alauddinburki/nyc-nyc-benefits-platform-benefits-and-programs-data").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 = {
    "where": "",
    "order": "",
    "maxItems": 5,
    "budgetSecs": 240,
    "paceMs": 120,
}

# Run the Actor and wait for it to finish
run = client.actor("alauddinburki/nyc-nyc-benefits-platform-benefits-and-programs-data").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "where": "",
  "order": "",
  "maxItems": 5,
  "budgetSecs": 240,
  "paceMs": 120
}' |
apify call alauddinburki/nyc-nyc-benefits-platform-benefits-and-programs-data --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,alauddinburki/nyc-nyc-benefits-platform-benefits-and-programs-data"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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