# FAA Vertical Project Radar (`ambitious_ross_tj2/faa-vertical-project-radar`) Actor

Filter official weekly FAA construction notices into crane, tower, wind, utility-structure, and obstruction-lighting project signals.

- **URL**: https://apify.com/ambitious\_ross\_tj2/faa-vertical-project-radar.md
- **Developed by:** [Local Lead Ops](https://apify.com/ambitious_ross_tj2) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00 / 1,000 qualified project signal returneds

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?

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

Turn the FAA's weekly construction-notice file into a focused project-signal feed for crane and rigging firms, tower contractors, obstruction-lighting providers, wind contractors, and utility-structure crews.

This independent Actor is **not affiliated with or endorsed by the Federal Aviation Administration**. It reads only the FAA's public weekly construction-notice page and never contacts a project owner.

### Why this is different

The official notice is a fixed-width multi-page file containing more than a thousand mixed structure records in a typical week. This Actor validates the entire notice, converts coordinates and identifiers into structured fields, and emits only records matching the chosen state and operational buyer route.

The latest verified California crane-and-rigging run parsed 1,179 official records and returned seven route-qualified records. A four-week backtest found 82 qualified records with zero parser ambiguities.

### Input

- `state`: two-letter US state or territory code; default `CA`.
- `route`: `crane_rigging`, `tower_erection`, `obstruction_lighting`, `wind`, or `utility_structure`.
- `cityQuery`: optional case-insensitive FAA-reported city filter, such as `Sacramento` or `San Jose`.
- `minHeightAgl`: optional minimum FAA-reported height above ground, from 0 to 2,000 feet.
- `includeRemoved`: include official `REMOVED` and `DISMANTLED` actions; off by default.
- `sourceUrl`: optional exact official weekly notice URL for reproducible historical runs.

### Use it as a weekly monitor

Save the input as an Apify Task and attach a weekly schedule. Each run resolves the newest complete official FAA notice and writes only the state, buyer route, city, and height matches you requested. For example, a Sacramento-focused crane firm can use `CA`, `crane_rigging`, `Sacramento`, and `100` feet. Apify retains each run's dataset, so results remain exportable as CSV, JSON, Excel, or through the API.

The Actor does not contact project owners, enrich identities, or promise that a record is commercially actionable. A scheduled run with zero matching records returns an empty dataset rather than manufacturing a lead.

### Live example monitors

- [Lockney, Texas wind-project monitor](https://apify.com/ambitious_ross_tj2/faa-vertical-project-radar/examples/lockney-texas-wind-project-weekly-monitor) uses `TX`, `wind`, `Lockney`, and a 400-foot minimum. Its August 23, 2026 source run returned 68 official records.
- [Alta, Iowa obstruction-lighting monitor](https://apify.com/ambitious_ross_tj2/faa-vertical-project-radar/examples/alta-iowa-obstruction-lighting-weekly-monitor) uses `IA`, `obstruction_lighting`, `Alta`, and a 650-foot minimum. Its August 23, 2026 source run returned 70 official records.
- [Sacramento crane-and-tower monitor](https://apify.com/ambitious_ross_tj2/faa-vertical-project-radar/examples/sacramento-crane-tower-weekly-monitor) uses a bounded city and height filter for a smaller local feed.

These counts describe one dated official notice, not guaranteed future volume. Each public task reruns the same transparent filters against the newest complete weekly source.

### Output

Each dataset row contains the official action and verification code, city, coordinates, structure type, AGL/AMSL height, FAA study number when reported, OAS number, buyer routes, observation date, and exact official source URL.

### Pricing

The launch configuration uses two synthetic events: **$0.10 per GB at Actor start** and **$0.01 per qualified project signal**. Runtime memory is fixed at 256 MB, so the start event is $0.025 per run before any result events. Empty or nonmatching runs return no dataset items and incur only that bounded start charge. Final pricing and whether platform usage is included must match the live Apify Console.

### Verification boundary

FAA construction-notice records are early-work indicators, not confirmation of project stage, contract award, scope fit, procurement availability, owner identity, or eligibility. Always verify the official source record before acting. The Actor fails closed when pagination, dates, headers, row grammar, source host, or identifiers are inconsistent.

### Official source

`https://aeronav.faa.gov/Obst_Data/CONSTR_NOTICE_MMDDYY.htm`

# Actor input Schema

## `state` (type: `string`):

Two-letter US state or territory code.

## `route` (type: `string`):

Operational buyer category used to filter the official notice.

## `cityQuery` (type: `string`):

Case-insensitive text contained in the FAA-reported city, such as Sacramento or San Jose.

## `minHeightAgl` (type: `integer`):

Return only structures at or above this FAA-reported AGL height.

## `includeRemoved` (type: `boolean`):

When off, only ADDED and MODIFIED official actions are returned.

## `sourceUrl` (type: `string`):

Advanced reproducibility input. Must be an unmodified aeronav.faa.gov weekly construction-notice HTTPS URL.

## Actor input object example

```json
{
  "state": "CA",
  "route": "crane_rigging",
  "cityQuery": "",
  "minHeightAgl": 0,
  "includeRemoved": false
}
```

# 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 = {
    "state": "CA"
};

// Run the Actor and wait for it to finish
const run = await client.actor("ambitious_ross_tj2/faa-vertical-project-radar").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 = { "state": "CA" }

# Run the Actor and wait for it to finish
run = client.actor("ambitious_ross_tj2/faa-vertical-project-radar").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 '{
  "state": "CA"
}' |
apify call ambitious_ross_tj2/faa-vertical-project-radar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ambitious_ross_tj2/faa-vertical-project-radar"
        }
    }
}

```

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/hfG2eceCx3FdkW5yd/builds/vUMXphz9263orK1H3/openapi.json
