# NLRB Union Election & Petition Alerts (`scrapesignal_labs/nlrb-union-election-petition-alert`) Actor

Monitor newly filed NLRB representation cases with employer, location, workforce size, status, bargaining unit, region, and direct case links.

- **URL**: https://apify.com/scrapesignal\_labs/nlrb-union-election-petition-alert.md
- **Developed by:** [ScrapeSignal Labs](https://apify.com/scrapesignal_labs) (community)
- **Categories:** Lead generation, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 petition filings

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## NLRB Union Election & Petition Alerts

Monitor newly filed US union representation cases in a clean, automation-ready feed. This Actor reads the NLRB’s official Recent Filings report and returns the employer, filing date, petition type, case status, proposed bargaining-unit size, location, assigned region, unit description, and direct case page.

It is designed for timely awareness. New representation filings can matter to labor and employment professionals, workforce and communications teams, researchers, unions, journalists, benefits providers, and vendors whose services depend on workforce change.

### Case types

- RC — petition for certification through an election
- RM — employer petition concerning representation
- RD — decertification petition
- UC — unit clarification
- AC — amendment of certification
- UD — union deauthorization

### Built for

- labor and employment law, HR, employee-relations, and workforce consulting
- labor-market research, news monitoring, and academic analysis
- benefits, payroll, communications, training, and compliance providers
- territory alerts, CRM enrichment, webhooks, and AI-agent workflows

### Filters

- rolling number of days or an exact filing-date range
- petition type and case status
- state and NLRB region
- employer or location search
- required keywords in the employer, location, unit description, or case number
- minimum employees in the proposed unit
- maximum results

### Example input

```json
{
  "daysBack": 14,
  "caseTypes": ["RC", "RM"],
  "states": ["NY", "NJ", "PA"],
  "minimumEmployees": 25,
  "maxItems": 500
}
```

### Output highlights

Opportunity score, case number and type, employer, filed date, status, employee count, city/state, complete location, assigned region, unit sought, direct NLRB case URL, official report URL, and scrape timestamp.

### Source and responsible use

Results come from the [NLRB Recent Filings report](https://www.nlrb.gov/reports/graphs-data/recent-filings). A petition is an allegation or request at a point in a legal process, not a final finding, election result, or determination. Counts and descriptions are reported in the case filing and may change. Verify decisions through the linked case page and appropriate counsel. Do not use the data to interfere with protected rights or to target individual workers.

For monitoring, schedule the Actor daily and send new dataset items to a webhook, Slack, email workflow, database, or CRM.

# Actor input Schema

## `daysBack` (type: `integer`):

Include representation cases filed within this many days.

## `startDate` (type: `string`):

Optional YYYY-MM-DD. Overrides Days back.

## `endDate` (type: `string`):

Optional YYYY-MM-DD.

## `caseTypes` (type: `array`):

Select the NLRB representation petition types to include.

## `statuses` (type: `array`):

Examples: Open or Closed. Empty means all.

## `states` (type: `array`):

Two-letter state codes. Empty means nationwide.

## `regions` (type: `array`):

Partial matches such as Region 03 or Buffalo.

## `employerQuery` (type: `string`):

Case-insensitive search across employer name, location, unit description, and case number.

## `keywords` (type: `array`):

Every term must appear across the employer, location, unit, or case number.

## `minimumEmployees` (type: `integer`):

Only include filings at or above this reported employee count.

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

Stop after saving this many matching filings.

## Actor input object example

```json
{
  "daysBack": 30,
  "startDate": "",
  "endDate": "",
  "caseTypes": [
    "RC",
    "RM",
    "RD",
    "UC",
    "AC",
    "UD"
  ],
  "statuses": [],
  "states": [],
  "regions": [],
  "employerQuery": "",
  "keywords": [],
  "minimumEmployees": 0,
  "maxItems": 500
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesignal_labs/nlrb-union-election-petition-alert").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("scrapesignal_labs/nlrb-union-election-petition-alert").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 '{}' |
apify call scrapesignal_labs/nlrb-union-election-petition-alert --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapesignal_labs/nlrb-union-election-petition-alert"
        }
    }
}

```

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/YS86wMTNbG5qR3eee/builds/VsbE0XQUL3chXx3HF/openapi.json
