Bulk Property Flood-Zone Screening avatar

Bulk Property Flood-Zone Screening

Pricing

$15.00 / 1,000 successfully screened unique coordinates

Go to Apify Store
Bulk Property Flood-Zone Screening

Bulk Property Flood-Zone Screening

Batch FEMA NFHL coordinate screening with flood zones, map panels, coverage and error statuses. JSON/CSV. Point screening, not an insurance determination.

Pricing

$15.00 / 1,000 successfully screened unique coordinates

Rating

0.0

(0)

Developer

AFK Digital

AFK Digital

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Screen batches of property coordinates against FEMA's official effective National Flood Hazard Layer (NFHL). Return intersecting flood zones, FIRM panels and digital-map availability evidence as JSON or CSV. No geocoding account, paid geocoding service, proxy or FEMA API key is required.

Live-verified on November 5, 2026. Source outages are returned as errors, never as reassuring flood-risk results. The default two-point example completed in under 10 seconds during validation.

Input

Supply exactly one of properties or csv. Coordinates must be WGS84 latitude/longitude (EPSG:4326), in degrees. The service receives x=longitude and y=latitude with inSR=4326. Numeric strings from CSV are accepted; blanks, booleans, NaN, infinity and out-of-range coordinates are rejected without swapping axes. Every row requires a nonempty propertyId (maximum 256 characters). Postal addresses, parcels and polygons are outside version 1.

{
"properties": [
{"propertyId":"houston-downtown","latitude":29.7604,"longitude":-95.3698},
{"propertyId":"miami-beach","latitude":25.7907,"longitude":-80.13}
],
"maxResults":100,
"maxChargeUsd":1.5,
"requestsPerSecond":2,
"timeoutSecs":12,
"maxRetries":2,
"maxRuntimeSecs":240
}

For CSV, remove properties and paste CSV text in csv, including the propertyId,latitude,longitude header. UTF-8 BOM, quoted identifiers, commas inside quoted fields and leading-zero IDs are supported. Example: {"csv":"propertyId,latitude,longitude\n001,29.7604,-95.3698","maxResults":100}.

Maximum 10,000 JSON rows, 2 MB CSV, 10,000 output rows. The default maxResults is 100; each input row produces one output row, including repeats and invalid inputs. Use a smaller maxResults for a bounded sample. For large batches increase the Apify timeout as well as maxRuntimeSecs. The default two-point example is designed to finish below five minutes; a source failure does not count as a successful screening.

Sources and spatial relationships

Official effective REST service: https://hazards.fema.gov/arcgis/rest/services/public/NFHL/MapServer

LayerPurposeImportant fields
28 — Flood Hazard ZonesIntersecting zone polygonsFLD_ZONE, ZONE_SUBTY, FLD_AR_ID, DFIRM_ID
3 — FIRM PanelsIntersecting map panels and their datesFIRM_PAN, EFF_DATE, DFIRM_ID
0 — NFHL AvailabilityDigital NFHL availability evidenceOriginal attributes retained

Every run first verifies layer names, polygon geometry and required fields. It saves the observed service CRS, field names and verification time in SOURCE_METADATA. FEMA documents native NFHL storage in NAD83 / GRS80; the REST server projects the explicitly identified EPSG:4326 input. No local projection guess is made. Query requests use exact point esriSpatialRelIntersects, without an artificial buffer or snapping.

FEMA mapping covers available effective digital studies in the United States and territories; it is not a complete global map, and not every effective FIRM has digital GIS coverage. No hardcoded continental-US box discards Alaska, Hawaii, Puerto Rico or other territories.

The row contains all zone matches, panel matches and availability matches in separate arrays. These are independently intersecting layers at the same point. The Actor never invents a one-to-one zone-to-panel relationship or chooses an arbitrary winning zone. panel_matches keeps each panel and its own effective date; the top-level arrays are summaries. A panel date is not a guarantee that every intersecting zone has that same revision date. Original attributes and object IDs are retained for audit. This version does not independently resolve LOMA letters, parcels, buildings, local surveys or pending/preliminary maps.

Boundary intersections may return multiple zones or panels. A single returned feature cannot establish that a location is away from a boundary; source scale, coordinate precision and positioning accuracy matter.

Output

FieldMeaning
property_id, latitude, longitudeCaller ID and validated point; invalid coordinates become null
flood_zone, zone_subtypeArrays of distinct source labels; empty means no label returned
map_panel, effective_dateSummary arrays; panel/date associations remain in panel_matches
coverage_statusDigital-data evidence, described below
query_statusScreening outcome, separate from coverage
source_referenceOfficial layer URL, ID, match count, input CRS and spatial relation
checked_atUTC ISO timestamp
zone_matches, panel_matches, availability_matchesIndependent related feature arrays, with original attributes
billing_status, error_codeCharging outcome and sanitized error classification
input_indexStable zero-based position in the input, including repeated points

Query statuses: success, success_no_match, invalid_input, service_error, budget_exhausted, runtime_limit, billing_unconfirmed.

Coverage statuses: zone_data_available, digital_coverage_no_zone_match, panel_only_no_zone_match, no_digital_coverage_match, unknown.

A successful empty layer query is not a technical error. No digital-coverage match is not proof that no official map exists. Service errors mean coverage is unknown. None of these statuses means safe or risk-free.

Results appear in the default Dataset (JSON and CSV exports). OUTPUT.json and OUTPUT.csv in the run's key-value store provide complete exports; nested arrays are JSON-encoded in CSV cells and potentially executable spreadsheet text is neutralized. SUMMARY contains counts and event-cost information. SOURCE_METADATA contains verification results. Runs with technical lookup failures are marked FAILED and retain any partial/error outputs.

Price and limits

Event: coordinate-screened — $0.015 per successfully queried unique coordinate ($15 / 1,000), including all three required layer queries. There is no Actor-start fee. Platform usage is included in this price; the platform pricing record is authoritative.

A successful query without a matching zone, including one without a digital-coverage match, is chargeable: the official service was successfully queried. A coordinate is successful only when all three required layer requests complete and their responses pass validation.

Invalid input, network/service/schema/timeout errors, internal request retries and duplicate coordinates within the same run are not charged. Equivalent numeric coordinate strings deduplicate to the same numeric point; property IDs remain separate. Distinct coordinates are not rounded together. A new independent run may charge again for refreshed results. Durable progress reserves pending charges against the budget and reconciles platform event counts when resumed. Immutable input-indexed results and Dataset prefix checks prevent ordinary append/restart windows from duplicating rows. Uncertain billing is retained as billing_unconfirmed and the run fails for reconciliation instead of charging again. Input changes during a resume are rejected.

Both maxChargeUsd (default $1.50) and Apify's run maximum charge limit apply. Set a zero event budget for no paid lookups. Rows beyond available event budget get budget_exhausted. Default rate is 2 requests/second globally, maximum 4; requests are sequential. Per-request timeout and 0–3 retries are bounded. HTTP 429 and transient 5xx errors use backoff. Truncated GIS responses, malformed responses and ArcGIS errors carried in HTTP 200 are failures.

Appropriate use

This is point-based preliminary screening, not an official flood-insurance determination, a Standard Flood Hazard Determination Form, a whole-parcel decision, a survey or a prediction of future flood probability. It does not determine insurance coverage, required premiums, lending compliance or future inundation. Consult the current official FEMA maps, letters and qualified professionals when those decisions matter. Source zone labels are reproduced without turning them into this Actor's own probability estimates.

FEMA data are credited to the Federal Emergency Management Agency. This independent Actor is not endorsed by FEMA. The fee pays for processing, not exclusive ownership of public data.

Data use and privacy

Official references:

The government catalog identifies NFHL as public and points to the US government works policy. This does not create warranties, a service availability guarantee or permission to imply an official determination. Live metadata was checked on November 5, 2026: the effective service identified NAD83 (EPSG:4269), the expected three polygon layers, and a service publication note dated October 21, 2026. Its item metadata supplied no additional license text. Older catalog modification dates and service publication notes are not individual map effective dates.

Customer points are sent only to the official FEMA GIS service for lookup and stored in the customer's Apify run input/output/progress stores. Routine logs contain counts and sanitized error codes, without coordinates, property IDs or request URLs. Do not put sensitive addresses in property IDs. Manage/delete run storage using your Apify retention settings. No location analytics or third-party geocoding is added.

Development

Node.js 22+, npm ci, npm test, npm start with Apify INPUT in local storage. Docker builds run the deterministic test suite. Fixture tests are explicitly synthetic and do not replace live FEMA tests. Live evidence and release-gate results are kept separately in the project evidence folder.

Verified real examples

These are observed source results from November 5, 2026, not future-risk predictions. Map data may change.

PointReturned zone labelsPanelPanel effective date
Houston: 29.7604, -95.3698X — AREA OF MINIMAL FLOOD HAZARD48201C0690N2017-01-06
Miami Beach: 25.7907, -80.13AE12086C0317L2009-09-11
Official polygon vertex: 25.810070441012, -80.122466394582AE and X (3 source polygons retained)12086C0336L2009-09-11
London: 51.5074, -0.1278No zone or digital-coverage match; success_no_matchNoneNone

The official boundary vertex was taken from FEMA layer 28 feature OBJECTID 24264652, requested with outSR=4326. Adjacent probes 0.00001 degrees west/east returned AE/X respectively. Another tested vertex returned VE and AE. No single source feature was chosen as a winning determination.

Validation covered multiple zones, overlapping map panels with different dates, actual polygon boundaries and neighboring points, outside coverage, invalid inputs, CSV identifiers, duplicates, a $0.015 cap, an official ArcGIS service error, and successful resurrection with unchanged Dataset rows and charge counts. Twenty-one deterministic tests, including the actual Apify SDK adapter, also passed. Initial development failures were corrected before release.