# Early Construction Project Intelligence (`beaming_tellurium/early-construction-project-intelligence`) Actor

Find fresh, source-backed construction projects in NYC and Austin while they are still in filing or plan review. Get project scope, value/size, owner or applicant, status, change tracking, and official-source provenance for commercial, institutional, industrial, public, and multifamily projects.

- **URL**: https://apify.com/beaming\_tellurium/early-construction-project-intelligence.md
- **Developed by:** [Ryan](https://apify.com/beaming_tellurium) (community)
- **Categories:** Lead generation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 qualified early-project records

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

## Early Construction Project Intelligence

Find fresh, source-backed construction projects in **New York City and Austin** while they are still in filing or plan review.

This Actor turns fragmented municipal construction records into a cleaner project-level feed for people and software that need to identify meaningful commercial, institutional, industrial, public, and multifamily activity without manually monitoring multiple government systems.

### What you get

Each qualified project can include:

- Project name and address
- Market and project type
- Official project description
- Filing/application date
- Latest source activity date
- Current review status
- Reported project value
- Reported floor area and unit counts when available
- Owner/developer identity when available
- Applicant, architect, engineer, or representative when available
- Source-visible work packages
- Qualification score and reasons
- NEW / CHANGED / UNCHANGED tracking
- Official-source record IDs and provenance

The Actor deliberately prefers **unknown or source-qualified values** over unsupported guesses.

### Why use this Actor?

Raw permit and plan-review feeds contain significant noise, including small residential work, temporary protection, scaffolding, fencing, narrow discipline filings, duplicate or subsequent filings, and records tied to larger parent projects.

Early Construction Project Intelligence applies conservative normalization and qualification rules to surface project-level records that are more useful for research, prospecting, monitoring, and downstream analysis.

### Current coverage

#### New York City

Source: **NYC Department of Buildings  DOB NOW: Build Job Application Filings**

The Actor monitors recent filing and status activity and groups related filing packages where possible.

#### Austin, Texas

Source: **City of Austin  Plan Review Cases**

The Actor uses official commercial/nonresidential plan-review fields, project scope, status, applicant/owner information, reported value, and floor area where available.

### Input options

You can configure:

- Markets  NYC, Austin, or both
- Activity lookback
- Maximum results
- Minimum qualification score
- Minimum reported valuation
- Minimum reported floor area
- Only changes  return only projects that are NEW or CHANGED since prior observations
- Minimum source rows per market  fail visibly when an official source unexpectedly returns too little data

### Change tracking

The Actor maintains project observations across runs.

A project can be marked:

- `NEW`  first observed
- `CHANGED`  source-observed facts changed
- `UNCHANGED`  source-observed facts match the previous observation

Change detection tracks real source facts such as project status, dates, description, value, owner/applicant, size, and work packages.

History is delivery-safe. NEW or CHANGED projects that do not fit within
`maxResults` or the run's maximum-charge limit are not committed as observed.
They remain eligible for a later run instead of disappearing from the change
feed. Previously delivered UNCHANGED projects can still refresh their
last-observed timestamp when dataset output is suppressed.

### Pricing

- **Qualified early-project record:** $0.01 for each project written to the default dataset.
- **Actor start:** Apify's standard $0.00005 synthetic start event.

Platform usage is included. A default run returning 100 projects costs about
$1.00. Runs with `onlyChanges: true` charge only for NEW or CHANGED projects
that are actually delivered.

The Actor respects the run's maximum-charge limit and reports deferred projects
in `RUN_SUMMARY`.

### Reliability

Official-source failures stop the run visibly. The source-health summary also
reports row counts and warns when a market reaches its configured fetch cap.
The default source-row floor prevents an empty or unexpectedly blank response
from being treated as a healthy successful scan.

### Important limitations

This Actor does **not** claim that:

- a specific subcontract is available
- an owner is currently soliciting bids
- a particular trade has or has not been awarded
- every source-reported valuation is accurate
- every public filing represents a new sales opportunity

Where an official source reports an implausible valuation, the original value may be preserved while being flagged as suspect.

The Actor returns a ranked, bounded feed rather than claiming exhaustive permit
coverage. Increase the per-market fetch cap when broader recent coverage is
required; a cap warning indicates that additional source rows may exist.

### Data provenance

Results preserve official source identifiers and links wherever available so important facts can be traced back to the originating public record.

**Unofficial tool. Not affiliated with or endorsed by the City of New York, NYC Department of Buildings, or the City of Austin.**
For isolated staging or validation, set the advanced `historyStoreName` input
to a separate named store. Keep `construction-intel-history-v1` for production
so change tracking remains continuous.

# Actor input Schema

## `markets` (type: `array`):

Markets to scan.

## `lookbackDays` (type: `integer`):

Return projects filed or active within this recent window.

## `maxResults` (type: `integer`):

Maximum qualified project records returned. Undelivered NEW or CHANGED projects remain eligible for a later run.

## `minScore` (type: `number`):

Higher values return fewer, more selective projects.

## `minValuation` (type: `number`):

Optional. Records with no reported value are not automatically excluded.

## `minFloorArea` (type: `number`):

Optional. Records with no reported floor area are not automatically excluded.

## `onlyChanges` (type: `boolean`):

If enabled, suppress projects that are unchanged from prior worker observations.

## `fetchLimitPerMarket` (type: `integer`):

Advanced source-fetch cap. Increase only when needed.

## `minimumSourceRowsPerMarket` (type: `integer`):

Fail visibly when an official source returns fewer rows. Set to 0 only for intentionally narrow queries that may have no activity.

## `historyStoreName` (type: `string`):

Advanced. Named key-value store used for NEW / CHANGED tracking. Keep the default for production continuity; use a separate name for isolated validation.

## Actor input object example

```json
{
  "markets": [
    "nyc",
    "austin"
  ],
  "lookbackDays": 14,
  "maxResults": 100,
  "minScore": 62,
  "minValuation": 0,
  "minFloorArea": 0,
  "onlyChanges": false,
  "fetchLimitPerMarket": 1000,
  "minimumSourceRowsPerMarket": 1,
  "historyStoreName": "construction-intel-history-v1"
}
```

# Actor output Schema

## `projects` (type: `string`):

No description

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

No description

## `summary` (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("beaming_tellurium/early-construction-project-intelligence").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("beaming_tellurium/early-construction-project-intelligence").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 beaming_tellurium/early-construction-project-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,beaming_tellurium/early-construction-project-intelligence"
        }
    }
}

```

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/AQbPHskH9ztVchwAM/builds/PStHEgSgOLQMldduR/openapi.json
